From a26c4841dcd11d54bc42934373effb699d6360cd Mon Sep 17 00:00:00 2001 From: olivier dahan Date: Tue, 30 May 2017 18:00:37 +0200 Subject: [PATCH 1/2] First clean up for next operations (wpf temes removal...) --- .vs/LogViewer/v15/.suo | Bin 0 -> 77824 bytes .vs/LogViewerForLog4Net/v15/.suo | Bin 0 -> 11264 bytes .vs/ProjectSettings.json | 3 + .vs/slnx.sqlite | Bin 0 -> 458752 bytes About.xaml | 158 +- About.xaml.cs | 15 +- App.xaml.cs | 21 +- Filter.xaml | 96 +- Filter.xaml.cs | 37 +- FilterActivity.xaml.cs | 8 +- FollowUp.txt | 11 +- Libs/..svnbridge/WPF.Themes.dll | 1 - Libs/..svnbridge/WPF.Themes.pdb | 1 - Libs/WPF.Themes.dll | Bin 2353664 -> 0 bytes Libs/WPF.Themes.pdb | Bin 19968 -> 0 bytes LogEntry.cs | 146 +- LogFilter.cs | 30 +- LogViewer.csproj | 27 +- LogViewer.pfx | Bin 1764 -> 0 bytes LogViewer.sln | 21 +- ObjectCopier.cs | 14 +- Properties/AssemblyInfo.cs | 10 +- Properties/Resources.Designer.cs | 42 +- Properties/Settings.Designer.cs | 10 +- RecentFileList.cs | 124 +- SortAdorner.cs | 6 +- Window1.xaml | 17 +- Window1.xaml.cs | 266 +- app.config | 27 +- bin/Debug/LogViewer.exe | Bin 0 -> 795136 bytes bin/Debug/LogViewer.exe.config | 39 + bin/Debug/LogViewer.pdb | Bin 0 -> 157184 bytes bin/Debug/LogViewerlog.xml | 1961 + bin/Debug/Microsoft.Expression.Effects.dll | Bin 0 -> 122880 bytes bin/Debug/Microsoft.Expression.Effects.xml | 1056 + .../Microsoft.Expression.Interactions.dll | Bin 0 -> 91648 bytes .../Microsoft.Expression.Interactions.xml | 1295 + bin/Debug/System.Windows.Interactivity.dll | Bin 0 -> 39936 bytes bin/Debug/System.Windows.Interactivity.xml | 1072 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 7168 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 7168 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 7168 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes bin/Debug/log4net.dll | Bin 0 -> 276480 bytes bin/Debug/log4net.xml | 32464 ++++++++++++++++ ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes obj/Debug/About.baml | Bin 0 -> 6486 bytes obj/Debug/About.g.cs | 193 + obj/Debug/About.g.i.cs | 193 + obj/Debug/App.g.cs | 69 + obj/Debug/App.g.i.cs | 69 + obj/Debug/CoreCompileInputs.cache | 1 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 8112 bytes obj/Debug/Filter.baml | Bin 0 -> 6313 bytes obj/Debug/Filter.g.cs | 315 + obj/Debug/Filter.g.i.cs | 315 + obj/Debug/FilterActivity.baml | Bin 0 -> 4129 bytes obj/Debug/FilterActivity.g.cs | 165 + obj/Debug/FilterActivity.g.i.cs | 165 + obj/Debug/GeneratedInternalTypeHelper.g.cs | 62 + obj/Debug/GeneratedInternalTypeHelper.g.i.cs | 62 + .../LogViewer.Properties.Resources.resources | Bin 0 -> 864 bytes .../LogViewer.csproj.FileListAbsolute.txt | 46 + .../LogViewer.csproj.GenerateResource.Cache | Bin 0 -> 954 bytes obj/Debug/LogViewer.exe | Bin 0 -> 795136 bytes obj/Debug/LogViewer.g.resources | Bin 0 -> 378594 bytes obj/Debug/LogViewer.pdb | Bin 0 -> 157184 bytes obj/Debug/LogViewer_Content.g.i.cs | 14 + obj/Debug/LogViewer_MarkupCompile.cache | 20 + obj/Debug/LogViewer_MarkupCompile.i.cache | 20 + obj/Debug/LogViewer_MarkupCompile.lref | 4 + .../Properties.Resources.Designer.cs.dll | 0 ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 obj/Debug/Window1.baml | Bin 0 -> 20112 bytes obj/Debug/Window1.g.cs | 1000 + obj/Debug/Window1.g.i.cs | 1000 + packages.config | 3 +- ...osoft.Expression.Blend.SDK.WPF.4.0.0.nupkg | Bin 0 -> 1178703 bytes .../Microsoft.Expression.Controls.Design.dll | Bin 0 -> 12800 bytes .../Microsoft.Expression.Drawing.Design.dll | Bin 0 -> 74752 bytes .../Microsoft.Expression.Effects.Design.dll | Bin 0 -> 52224 bytes ...n.Prototyping.SketchControls.design.v4.dll | Bin 0 -> 20480 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10752 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16896 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10752 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16384 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10752 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16896 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10752 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16896 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10752 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16384 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 11264 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16896 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5632 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 11264 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 16896 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5120 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10240 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 15360 bytes ...t.Expression.Controls.Design.resources.dll | Bin 0 -> 5120 bytes ...ft.Expression.Drawing.Design.resources.dll | Bin 0 -> 10240 bytes ...ft.Expression.Effects.Design.resources.dll | Bin 0 -> 15360 bytes .../net40/Microsoft.Expression.Controls.dll | Bin 0 -> 54272 bytes .../net40/Microsoft.Expression.Controls.xml | 557 + .../net40/Microsoft.Expression.Drawing.dll | Bin 0 -> 122880 bytes .../net40/Microsoft.Expression.Drawing.xml | 1770 + .../net40/Microsoft.Expression.Effects.dll | Bin 0 -> 122880 bytes .../net40/Microsoft.Expression.Effects.xml | 1056 + .../Microsoft.Expression.Interactions.dll | Bin 0 -> 91648 bytes .../Microsoft.Expression.Interactions.xml | 1295 + ...t.Expression.Prototyping.Interactivity.dll | Bin 0 -> 50688 bytes ....Expression.Prototyping.SketchControls.dll | Bin 0 -> 32256 bytes .../net40/System.Windows.Interactivity.dll | Bin 0 -> 39936 bytes .../net40/System.Windows.Interactivity.xml | 1072 + .../de/Microsoft.Expression.Controls.xml | 538 + .../net40/de/Microsoft.Expression.Drawing.xml | 1631 + .../net40/de/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../de/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/de/System.Windows.Interactivity.xml | 1046 + .../en/Microsoft.Expression.Controls.xml | 557 + .../net40/en/Microsoft.Expression.Drawing.xml | 1770 + .../net40/en/Microsoft.Expression.Effects.xml | 1056 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 7168 bytes .../en/Microsoft.Expression.Interactions.xml | 1295 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4608 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/en/System.Windows.Interactivity.xml | 1072 + .../es/Microsoft.Expression.Controls.xml | 538 + .../net40/es/Microsoft.Expression.Drawing.xml | 1631 + .../net40/es/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../es/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/es/System.Windows.Interactivity.xml | 1046 + .../fr/Microsoft.Expression.Controls.xml | 538 + .../net40/fr/Microsoft.Expression.Drawing.xml | 1631 + .../net40/fr/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../fr/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/fr/System.Windows.Interactivity.xml | 1046 + .../it/Microsoft.Expression.Controls.xml | 538 + .../net40/it/Microsoft.Expression.Drawing.xml | 1631 + .../net40/it/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../it/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/it/System.Windows.Interactivity.xml | 1046 + .../ja/Microsoft.Expression.Controls.xml | 538 + .../net40/ja/Microsoft.Expression.Drawing.xml | 1631 + .../net40/ja/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 7168 bytes .../ja/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 7168 bytes .../net40/ja/System.Windows.Interactivity.xml | 1046 + .../ko/Microsoft.Expression.Controls.xml | 538 + .../net40/ko/Microsoft.Expression.Drawing.xml | 1632 + .../net40/ko/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../ko/Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../net40/ko/System.Windows.Interactivity.xml | 1046 + .../zh-Hans/Microsoft.Expression.Controls.xml | 538 + .../zh-Hans/Microsoft.Expression.Drawing.xml | 1631 + .../zh-Hans/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../zh-Hans/System.Windows.Interactivity.xml | 1046 + .../zh-Hant/Microsoft.Expression.Controls.xml | 538 + .../zh-Hant/Microsoft.Expression.Drawing.xml | 1631 + .../zh-Hant/Microsoft.Expression.Effects.xml | 1041 + ...soft.Expression.Interactions.resources.dll | Bin 0 -> 6656 bytes .../Microsoft.Expression.Interactions.xml | 1241 + ...on.Prototyping.Interactivity.resources.dll | Bin 0 -> 4096 bytes ...System.Windows.Interactivity.resources.dll | Bin 0 -> 6656 bytes .../zh-Hant/System.Windows.Interactivity.xml | 1046 + .../log4net.2.0.8/lib/net20-full/log4net.dll | Bin 0 -> 278528 bytes .../log4net.2.0.8/lib/net20-full/log4net.xml | 31421 +++++++++++++++ .../lib/net35-client/log4net.dll | Bin 0 -> 282624 bytes .../lib/net35-client/log4net.xml | 32259 +++++++++++++++ .../log4net.2.0.8/lib/net35-full/log4net.dll | Bin 0 -> 286720 bytes .../log4net.2.0.8/lib/net35-full/log4net.xml | 32464 ++++++++++++++++ .../lib/net40-client/log4net.dll | Bin 0 -> 274944 bytes .../lib/net40-client/log4net.xml | 32259 +++++++++++++++ .../log4net.2.0.8/lib/net40-full/log4net.dll | Bin 0 -> 275968 bytes .../log4net.2.0.8/lib/net40-full/log4net.xml | 32464 ++++++++++++++++ .../log4net.2.0.8/lib/net45-full/log4net.dll | Bin 0 -> 276480 bytes .../log4net.2.0.8/lib/net45-full/log4net.xml | 32464 ++++++++++++++++ .../lib/netstandard1.3/log4net.dll | Bin 0 -> 221184 bytes packages/log4net.2.0.8/log4net.2.0.8.nupkg | Bin 0 -> 1750988 bytes 222 files changed, 290939 insertions(+), 563 deletions(-) create mode 100644 .vs/LogViewer/v15/.suo create mode 100644 .vs/LogViewerForLog4Net/v15/.suo create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/slnx.sqlite delete mode 100644 Libs/..svnbridge/WPF.Themes.dll delete mode 100644 Libs/..svnbridge/WPF.Themes.pdb delete mode 100644 Libs/WPF.Themes.dll delete mode 100644 Libs/WPF.Themes.pdb delete mode 100644 LogViewer.pfx create mode 100644 bin/Debug/LogViewer.exe create mode 100644 bin/Debug/LogViewer.exe.config create mode 100644 bin/Debug/LogViewer.pdb create mode 100644 bin/Debug/LogViewerlog.xml create mode 100644 bin/Debug/Microsoft.Expression.Effects.dll create mode 100644 bin/Debug/Microsoft.Expression.Effects.xml create mode 100644 bin/Debug/Microsoft.Expression.Interactions.dll create mode 100644 bin/Debug/Microsoft.Expression.Interactions.xml create mode 100644 bin/Debug/System.Windows.Interactivity.dll create mode 100644 bin/Debug/System.Windows.Interactivity.xml create mode 100644 bin/Debug/de/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/de/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/en/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/en/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/es/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/es/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/fr/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/fr/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/it/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/it/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/ja/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/ja/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/ko/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/ko/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/log4net.dll create mode 100644 bin/Debug/log4net.xml create mode 100644 bin/Debug/zh-Hans/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/zh-Hans/System.Windows.Interactivity.resources.dll create mode 100644 bin/Debug/zh-Hant/Microsoft.Expression.Interactions.resources.dll create mode 100644 bin/Debug/zh-Hant/System.Windows.Interactivity.resources.dll create mode 100644 obj/Debug/About.baml create mode 100644 obj/Debug/About.g.cs create mode 100644 obj/Debug/About.g.i.cs create mode 100644 obj/Debug/App.g.cs create mode 100644 obj/Debug/App.g.i.cs create mode 100644 obj/Debug/CoreCompileInputs.cache create mode 100644 obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 obj/Debug/Filter.baml create mode 100644 obj/Debug/Filter.g.cs create mode 100644 obj/Debug/Filter.g.i.cs create mode 100644 obj/Debug/FilterActivity.baml create mode 100644 obj/Debug/FilterActivity.g.cs create mode 100644 obj/Debug/FilterActivity.g.i.cs create mode 100644 obj/Debug/GeneratedInternalTypeHelper.g.cs create mode 100644 obj/Debug/GeneratedInternalTypeHelper.g.i.cs create mode 100644 obj/Debug/LogViewer.Properties.Resources.resources create mode 100644 obj/Debug/LogViewer.csproj.FileListAbsolute.txt create mode 100644 obj/Debug/LogViewer.csproj.GenerateResource.Cache create mode 100644 obj/Debug/LogViewer.exe create mode 100644 obj/Debug/LogViewer.g.resources create mode 100644 obj/Debug/LogViewer.pdb create mode 100644 obj/Debug/LogViewer_Content.g.i.cs create mode 100644 obj/Debug/LogViewer_MarkupCompile.cache create mode 100644 obj/Debug/LogViewer_MarkupCompile.i.cache create mode 100644 obj/Debug/LogViewer_MarkupCompile.lref create mode 100644 obj/Debug/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 obj/Debug/Window1.baml create mode 100644 obj/Debug/Window1.g.cs create mode 100644 obj/Debug/Window1.g.i.cs create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/Microsoft.Expression.Blend.SDK.WPF.4.0.0.nupkg create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/Microsoft.Expression.Controls.Design.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/Microsoft.Expression.Drawing.Design.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/Microsoft.Expression.Effects.Design.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/Microsoft.Expression.Prototyping.SketchControls.design.v4.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/de/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/de/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/de/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/en/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/en/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/en/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/es/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/es/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/es/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/fr/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/fr/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/fr/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/it/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/it/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/it/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ja/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ja/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ja/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ko/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ko/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/ko/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hans/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hans/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hans/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hant/Microsoft.Expression.Controls.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hant/Microsoft.Expression.Drawing.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Design/zh-Hant/Microsoft.Expression.Effects.Design.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Controls.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Drawing.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Effects.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Interactions.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Prototyping.Interactivity.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/Microsoft.Expression.Prototyping.SketchControls.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/System.Windows.Interactivity.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/de/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/en/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/es/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/fr/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/it/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ja/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/ko/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hans/System.Windows.Interactivity.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Controls.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Drawing.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Effects.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Interactions.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Interactions.xml create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/Microsoft.Expression.Prototyping.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/System.Windows.Interactivity.resources.dll create mode 100644 packages/Microsoft.Expression.Blend.SDK.WPF.4.0.0/lib/net40/zh-Hant/System.Windows.Interactivity.xml create mode 100644 packages/log4net.2.0.8/lib/net20-full/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net20-full/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/net35-client/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net35-client/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/net35-full/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net35-full/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/net40-client/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net40-client/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/net40-full/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net40-full/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/net45-full/log4net.dll create mode 100644 packages/log4net.2.0.8/lib/net45-full/log4net.xml create mode 100644 packages/log4net.2.0.8/lib/netstandard1.3/log4net.dll create mode 100644 packages/log4net.2.0.8/log4net.2.0.8.nupkg diff --git a/.vs/LogViewer/v15/.suo b/.vs/LogViewer/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..5edc8ac4144c3cef9f67c58ddd422c637cb34976 GIT binary patch literal 77824 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 literal 0 HcmV?d00001 diff --git a/.vs/LogViewerForLog4Net/v15/.suo b/.vs/LogViewerForLog4Net/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..00976adabc7c5a89cbf945f73db349c4edfb9ee0 GIT binary patch literal 11264 zcmeHN&2Jk;6o2Ulv=j;@AwVcqgd!9H4)I4EI~7&pd?=L?f^gD+)C23?bqM*CoffJp zz=11gP8^UZ2M$OT2TmO5KM>Rlf)o4&@DDWM_nX~u#*07Jc9N#T&l&IR?9Be&d-LAB zH{<-ebK%c#?)Lm80lFe5Wq0qaJZ7|a7gE$Nj> zS;w^?w>XudsasB$=KOS>Q6G$a_S2c)?{_?jexLh>^$rj>l@=2Yylt1p4 z6D54Az5HqAyBE<++a+my;%>?+I4FpVl7%iT6xZuk^}A0_bePj!wWINX@~`>#b8-VH ztFjFFS(Xgs3A7Z9ah0mXKZOS;P{PXpJo;+CzJU4zQvlTY>~WMcD4i(gC)W_J1N3Fn|Igz7 z2^9J_i}wGg{Wd+meSI`FkU_-TkQKxu3$bR!h(4I$5Ofjohj|}k8Z{7Nh;*YNVckG+LO`Ka~={e zp|zlpy(i_k`tA+jb4_Bt5*D9p*LVI4<|K#ga~5cY|IG0Litz$)qy^xr{$ zW{f5e_4@OOTMELz87Wb0gj5#wfIRw ze(vWlHh|CkR>%J!KI1=qfOg6FL+o0l?Vo$@2XD1$!&u0JxzqtSdj9g4~wMQp+uY{?`MZ=u=_sk0Nlta8N{CO$YVPM&6^bd2M9e zLG^6~pSGY2ZBp0umHR4P=asp(zULVV^M2lU;>tBmKQpf;f9?A5(g6LC>(RragTUr` z9;8;0@}&j^dOE{%ul3rSG#78VZ91vrSIH>vDd%+W%}+P z-|uwZSp+j#N#(ol?cTdI^X=Ep4_{sSJ6&Zknz{bYV!l=}56c+Ie4&8v8^~I8HX-sB ze$8dpby@9WZ_Aj(Fq4xqjQdIKZX=RW^*Cx#d?vtf1ikod3^fWchB7W`d{3#*xWr`} z`!5G)7Uj6!uFXRw=a>0ag?J9d*rBwoP7+yP9tFFZNOpc?5TDz*RMfF-YbX+rC#*;! zG3Z7tH=T>PxmZ4*cC2)6$lcDoiSE%@nggQIq!Wv!V-Yt#>_ie#+lg3%!^0SW*VqX= zW!s7EOacSqv2-$?jt;9)$=smp=sdy0*{%_T&21o+OVF+VnrtfSIQqR{lqf zHXTn51Xmw#C9nT~586fAzyEmWpD#lpoMEk(T37mmeqQVMm!tUo=K%Kq(#rlni_;C; z&s1(AgW;)P0dX&QE<8{=mG<&eo{N&MG;#jHv(i@cW(DqlnVxO7A62~-{NVXp`}~h* hUJaf9HT?Srb2e>%5BvO&Hrh)5*Ulf0%F7Q2=U-H2-SPkc literal 0 HcmV?d00001 diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..f080831a5d1ae2151680b97d1eb649f96f98db4c GIT binary patch literal 458752 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 vHa5_jV2u{_ literal 0 HcmV?d00001 diff --git a/About.xaml b/About.xaml index 5b854a8..12e0dee 100644 --- a/About.xaml +++ b/About.xaml @@ -4,80 +4,79 @@ xmlns:ee="http://schemas.microsoft.com/expression/2010/effects" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="LogViewer.About" - Title="About" Height="706" Width="400" - Background="{DynamicResource WindowBackgroundBrush}" + Title="About" Height="706" Width="440" Loaded="window_Loaded" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + #788DFF + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Window1.xaml.cs b/MainWindow.xaml.cs similarity index 97% rename from Window1.xaml.cs rename to MainWindow.xaml.cs index f573406..21266b4 100644 --- a/Window1.xaml.cs +++ b/MainWindow.xaml.cs @@ -1,1092 +1,1094 @@ -#region Header - -#region Project -/* - * Project : LogViewer - * Description : Viewer for Log4Net XML logs (see About box for log4Net configuration). - * Version : 2.7 - * Modified on : 1.0 15-3-2010 - * 2.1 May 2010 OD - * 2.6 26-jun-2010 OD - add quick filter on symbols, cancel filter on filter zoom/text symbol - * 2.7 --Jul-2010 OD - save window size, split position. Reset split. - * 2.x -- Open Source Project on CodePlex - * - * - * Copyrights : (c) 2010 Olivier Dahan for the enhanced version - www.e-naxos.com - * (c) 2009 Ken C. Len for original version - * - * LogViewer is a free software distributed on CodePlex : http://yourlog4netviewer.codeplex.com/ under the Microsoft Reciprocal License (Ms-RL) - * - */ -#endregion - -#region Microsoft Reciprocal License (Ms-RL) -/* - * Microsoft Reciprocal License (Ms-RL) - * This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. - * 1. Definitions - * The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. - * A "contribution" is the original software, or any additions or changes to the software. - * A "contributor" is any person that distributes its contribution under this license. - * "Licensed patents" are a contributor's patent claims that read directly on its contribution. - * 2. Grant of Rights - * (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. - * (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. - * 3. Conditions and Limitations - * (A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose. - * (B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. - * (C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. - * (D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. - * (E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. - * (F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. - * - */ -#endregion - - -#endregion - -#region History - -// 2010-26-03 OD Some light corrections -/* 06.01.2012 JB adding Identity/NDC reading, displaying, filtering support. - * replaced IsNullOrWhiteSpace -> IsNullOrEmpty in doMenuFilter since logFilter.Trim() is called, thus there will never be WhiteSpace. - * added multi-logentry-select to concatenate multiple messages into the message textbox. */ - - -#endregion - -#region usings -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Controls.Primitives; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.IO; -using System.Xml; -using System.Drawing; -using System.Windows.Threading; -using System.ComponentModel; -using System.Windows.Interop; -using System.Reflection; -using log4net; -using log4net.Config; -using System.Text; - -#endregion - - -namespace LogViewer -{ - /// - /// Interaction logic for Window1.xaml - /// - public partial class Window1 : INotifyPropertyChanged - { - - - private string _fileName = string.Empty; - private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - /// - /// Gets or sets the name of the file. - /// - /// The name of the file. - public string FileName - { - get => _fileName; - set - { - _fileName = value; - RecentFileList.InsertFile(value); - notifyPropertyChanged(nameof(FileName)); - } - } - - private List _entries = new List(); - /// - /// Gets or sets the entries. - /// - /// The entries. - public List Entries - { - get => _entries; - set - { - _entries = value; - notifyPropertyChanged(nameof(Entries)); - } - } - - /// - /// Initializes a new instance of the class. - /// Main Window. - /// - public Window1() - { - //Enabling Log4Net logging - XmlConfigurator.Configure(); - if (Log.IsInfoEnabled) Log.Info("Application [Log4Viewer] Start"); -#if DEBUG // OD - this info can be interesting when debugging a log coming from someone else. - Log.Debug("Application running in Debug mode"); -#endif - Log.Info("initializing windows components"); - InitializeComponent(); - Loaded += window1_Loaded; - Log.Info("Setting default width to " + Properties.Settings.Default.AppWidth); - Width = Properties.Settings.Default.AppWidth; - Log.Info("Setting default height to " + Properties.Settings.Default.AppHeight); - Height = Properties.Settings.Default.AppHeight; - Log.Info("Setting default Grid Height to " + Properties.Settings.Default.Split); - MainGrid.RowDefinitions[0].Height = new GridLength(Properties.Settings.Default.Split); - - } - - private void window1_Loaded(object sender, RoutedEventArgs e) - { - Log.Info("Setting the UI Culture to fr-FR"); - Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); - //log.Info("Setting Max Width to " + SystemParameters.PrimaryScreenWidth); - //MaxWidth = SystemParameters.PrimaryScreenWidth; - Log.Info("Initializing event handler for ListView control"); - listView1.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(listView1_HeaderClicked)); - Log.Info("Setting the RecentFileList to" + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))); - RecentFileList.UseXmlPersister(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourLog4NetViewer")); - //RecentFileList.UseXmlPersister(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "EnaxosLogViewer.filehistory.xml")); - Log.Info("Initializing the RecentFiles menu click"); - RecentFileList.MenuClick += (s, ee) => openFile(ee.FilePath); - Log.Info("Initializing Error Bitmap"); - imageError.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Error.Handle, Int32Rect.Empty, null); - Log.Info("Initializing Info Bitmap"); - imageInfo.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Information.Handle, Int32Rect.Empty, null); - Log.Info("Initializing Warn Bitmap"); - imageWarn.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Warning.Handle, Int32Rect.Empty, null); - Log.Info("Initializing Debug Bitmap"); - imageDebug.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Question.Handle, Int32Rect.Empty, null); - Title = string.Format(Properties.Resources.WindowTitle + (!string.IsNullOrWhiteSpace(FileName) ? " - " + FileName : string.Empty), Assembly.GetExecutingAssembly().GetName().Version); - Log.Info("Setting the title as " + Title); - Log.Info("Setting the GridView widths for each column"); - foreach (var gvc in GridView1.Columns) - { - gvc.Width = gvc.ActualWidth; - gvc.Width = Double.NaN; - } - _mergedFiles.ForEach(mergedFile => RecentFileList.InsertFile(mergedFile)); - } - - /// - /// Clears this instance. - /// - private void clear() - { - Log.Info("Clearing all the text controls"); - textBoxLevel.Text = string.Empty; - textBoxTimeStamp.Text = string.Empty; - textBoxMachineName.Text = string.Empty; - textBoxThread.Text = string.Empty; - textBoxItem.Text = string.Empty; - textBoxHostName.Text = string.Empty; - textBoxUserName.Text = string.Empty; - textBoxApp.Text = string.Empty; - textBoxClass.Text = string.Empty; - textBoxMethod.Text = string.Empty; - textBoxLine.Text = string.Empty; - textBoxfile.Text = string.Empty; - textBoxMessage.Text = string.Empty; - textBoxThrowable.Text = string.Empty; - textBoxLog.Text = string.Empty; - - textBoxIdentity.Text = string.Empty; - textBoxNDC.Text = string.Empty; - } - - /// - /// Opens the file. - /// - /// Name of the file. - private void openFile(string logFileName) - { - Log.Info("Clearing Merged Files"); - _mergedFiles.Clear(); - Log.Info("Loading file " + logFileName); - loadFile(logFileName); - } - - private readonly List _mergedFiles = new List(); - - /// - /// Loads the file. - /// - public void loadFile(string logFileName, bool withMerge = false) - { - if (!withMerge) - { - Log.Info("Clearing entries to load single log file"); - _entries.Clear(); - Log.Info("Notifying Entries property as changed"); - notifyPropertyChanged("Entries"); - Log.Info("Resetting the ListView item source to nothing"); - listView1.ItemsSource = null; - FileName = logFileName; - } - else - { - Log.Info("Adding the log files that need to be merged to mergedFile object"); - if (_mergedFiles.Count == 0) _mergedFiles.Add(FileName); - Log.Info("If the same file is being added then return immediately"); - if (_mergedFiles.Contains(logFileName)) return; - Log.Info("If not add the file to the merged list"); - _mergedFiles.Add(logFileName); - } - - Log.Info("Clearing the log filter"); - logFilter.Clear(); - Log.Info("Turning off the IsFiltered property of the FilterIndicator"); - FilterIndicator.IsFiltered = false; - - var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0); - var iIndex = 1; - if (withMerge) iIndex = _entries.Count + 1; - - clear(); - - try - { - Log.Info("Initializing FileStream objet to open the log file"); - var oFileStream = new FileStream(logFileName, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite); - Log.Info("Initializing a Stream Reader"); - var oStreamReader = new StreamReader(oFileStream); - Log.Info("Read all the contents in the log file to a StreamReader"); - var sBuffer = string.Format("{0}", oStreamReader.ReadToEnd()); - Log.Info("Closing StreamReader and FileStream object"); - oStreamReader.Close(); - oFileStream.Close(); - - #region Read File Buffer - //////////////////////////////////////////////////////////////////////////////// - Log.Info("Reading File"); - var oStringReader = new StringReader(sBuffer); - var oXmlTextReader = new XmlTextReader(oStringReader) { Namespaces = false }; - Log.Info("Start reading the log file"); - while (oXmlTextReader.Read()) - { - if ((oXmlTextReader.NodeType != XmlNodeType.Element) || (oXmlTextReader.Name != "log4j:event")) - continue; - var logentry = new LogEntry { Item = iIndex }; - -// ReSharper disable StringLiteralsWordIsNotInDictionary - var dSeconds = Convert.ToDouble(oXmlTextReader.GetAttribute("timestamp")); -// ReSharper restore StringLiteralsWordIsNotInDictionary - logentry.TimeStamp = dt.AddMilliseconds(dSeconds).ToLocalTime(); - logentry.Thread = oXmlTextReader.GetAttribute("thread"); - logentry.Logger = oXmlTextReader.GetAttribute("logger"); - logentry.LogFile = logFileName; - - #region get level - //////////////////////////////////////////////////////////////////////////////// - logentry.Level = oXmlTextReader.GetAttribute("level"); - switch (logentry.Level) - { - case "ERROR": - { - logentry.Image = LogEntry.Images(LogImageType.Error); - break; - } - case "INFO": - { - logentry.Image = LogEntry.Images(LogImageType.Info); - break; - } - case "DEBUG": - { - logentry.Image = LogEntry.Images(LogImageType.Debug); - break; - } - case "WARN": - { - logentry.Image = LogEntry.Images(LogImageType.Warn); - break; - } - case "FATAL": - { - logentry.Image = LogEntry.Images(LogImageType.Fatal); - break; - } - default: - { - logentry.Image = LogEntry.Images(LogImageType.Custom); - break; - } - } - //////////////////////////////////////////////////////////////////////////////// - #endregion - - #region read xml - //////////////////////////////////////////////////////////////////////////////// - while (oXmlTextReader.Read()) - { - var breakLoop = false; - switch (oXmlTextReader.Name) - { - case "log4j:event": - breakLoop = true; - break; - default: - switch (oXmlTextReader.Name) - { - case ("log4j:message"): - { - logentry.Message = oXmlTextReader.ReadString(); - break; - } - case ("log4j:data"): - { - switch (oXmlTextReader.GetAttribute("name")) - { - case ("log4jmachinename"): - { - logentry.MachineName = oXmlTextReader.GetAttribute("value"); - break; - } - case ("log4net:HostName"): - { - logentry.HostName = oXmlTextReader.GetAttribute("value"); - break; - } - case ("log4net:UserName"): - { - logentry.UserName = oXmlTextReader.GetAttribute("value"); - break; - } - case ("log4net:Identity"): - { - logentry.Identity = oXmlTextReader.GetAttribute("value"); - break; - } - case ("NDC"): - { - logentry.Ndc = oXmlTextReader.GetAttribute("value"); - break; - } - case ("log4japp"): - { - logentry.App = oXmlTextReader.GetAttribute("value"); - break; - } - } - break; - } -// ReSharper disable StringLiteralsWordIsNotInDictionary - case ("log4j:throwable"): -// ReSharper restore StringLiteralsWordIsNotInDictionary - { - logentry.Throwable = oXmlTextReader.ReadString(); - break; - } - case ("log4j:locationInfo"): - { - logentry.Class = oXmlTextReader.GetAttribute("class"); - logentry.Method = oXmlTextReader.GetAttribute("method"); - logentry.File = oXmlTextReader.GetAttribute("file"); - logentry.Line = oXmlTextReader.GetAttribute("line"); - break; - } - } - break; - } - if (breakLoop) break; - } - //////////////////////////////////////////////////////////////////////////////// - #endregion - - _entries.Add(logentry); - iIndex++; - } - notifyPropertyChanged("Entries"); - Log.Info("Completing of Log xml reading"); - //////////////////////////////////////////////////////////////////////////////// - #endregion - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString()); - } - - #region Show Counts - //////////////////////////////////////////////////////////////////////////////// - Log.Info("Calculating the number of ERROR in the log file"); - var errorCount = - ( - from entry in Entries - where entry.Level == "ERROR" - select entry - ).Count(); - - if (errorCount > 0) - { - labelErrorCount.Text = string.Format("{0:#,#} ", errorCount); - labelErrorCount.Visibility = Visibility.Visible; - imageError.Visibility = Visibility.Visible; - } - else - { - labelErrorCount.Visibility = Visibility.Hidden; - imageError.Visibility = Visibility.Hidden; - } - Log.Info("ERROR count is " + errorCount); - Log.Info("Calculating the number of INFO in the log file"); - var infoCount = - ( - from entry in Entries - where entry.Level == "INFO" - select entry - ).Count(); - - if (infoCount > 0) - { - labelInfoCount.Text = string.Format("{0:#,#} ", infoCount); - labelInfoCount.Visibility = Visibility.Visible; - imageInfo.Visibility = Visibility.Visible; - } - else - { - labelInfoCount.Visibility = Visibility.Hidden; - imageInfo.Visibility = Visibility.Hidden; - } - Log.Info("INFO count is " + infoCount); - Log.Info("Calculating the number of WARN in the log file"); - var warnCount = - ( - from entry in Entries - where entry.Level == "WARN" - select entry - ).Count(); - - if (warnCount > 0) - { - labelWarnCount.Text = string.Format("{0:#,#} ", warnCount); - labelWarnCount.Visibility = Visibility.Visible; - imageWarn.Visibility = Visibility.Visible; - } - else - { - labelWarnCount.Visibility = Visibility.Hidden; - imageWarn.Visibility = Visibility.Hidden; - } - Log.Info("WARN count is " + warnCount); - Log.Info("Calculating the number of DEBUG in the log file"); - var debugCount = - ( - from entry in Entries - where entry.Level == "DEBUG" - select entry - ).Count(); - - if (debugCount > 0) - { - labelDebugCount.Text = string.Format("{0:#,#} ", debugCount); - labelDebugCount.Visibility = Visibility.Visible; - imageDebug.Visibility = Visibility.Visible; - } - else - { - imageDebug.Visibility = Visibility.Hidden; - labelDebugCount.Visibility = Visibility.Hidden; - } - Log.Info("DEBUG count is " + debugCount); - tbFiltered.Text = Entries.Count().ToString(); - FilterIndicator.IsFiltered = false; - - //////////////////////////////////////////////////////////////////////////////// - #endregion - Log.Info("Initializing ListView to show the log entries"); - listView1.ItemsSource = null; - Log.Info("Loading ListView with Log Entries"); - listView1.ItemsSource = (from e in _entries orderby e.TimeStamp select e).ToList(); - Log.Info("Clearing Sort Adorner"); - clearSortAdorner(); - - if (!withMerge) - { - textboxFileName.Text = logFileName; - Title = string.Format(Properties.Resources.WindowTitle + " - " + logFileName, Assembly.GetExecutingAssembly().GetName().Version); - Log.Info("Setting the title as " + Title); - return; - } - - var s = ""; - foreach (var sm in _mergedFiles) - { - if (s != "") s += "; "; - s += Path.GetFileName(sm); - } - - textboxFileName.Text = s; - Title = string.Format(Properties.Resources.WindowTitle + " - " + s, Assembly.GetExecutingAssembly().GetName().Version); - Log.Info("Setting the title as " + Title); - } - - #region ListView Events - //////////////////////////////////////////////////////////////////////////////// - private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - Log.Info("Inside ListView selection changed and clearing the text controls"); - clear(); - Log.Info("Getting the current Log Entry"); - - if (listView1.SelectedItems.Count == 1) - { - Log.Info("Show the selected log entry on the UI"); - - var logentry = listView1.SelectedItem as LogEntry; - - image1.Source = logentry.Image; - textBoxLevel.Text = logentry.Level; - textBoxTimeStamp.Text = - logentry.TimeStamp.ToString(Properties.Resources.DisplayDayFormat + " " + CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + " " + - Properties.Resources.DisplayTimeFormat); - textBoxMachineName.Text = logentry.MachineName; - textBoxThread.Text = logentry.Thread; - textBoxItem.Text = logentry.Item.ToString(); - textBoxHostName.Text = logentry.HostName; - textBoxUserName.Text = logentry.UserName; - textBoxApp.Text = logentry.App; - textBoxClass.Text = logentry.Class; - textBoxMethod.Text = logentry.Method; - textBoxLine.Text = logentry.Line; - textBoxLog.Text = logentry.LogFile; - textBoxMessage.Text = logentry.Message; - textBoxThrowable.Text = logentry.Throwable; - textBoxfile.Text = logentry.File; - textBoxLogger.Text = logentry.Logger; - - textBoxIdentity.Text = logentry.Identity; - textBoxNDC.Text = logentry.Ndc; - } - else if (listView1.SelectedItems.Count > 1) - { - Log.Info("Show the selected log entries on the UI"); - - foreach (LogEntry logEntry in listView1.SelectedItems) - { - var msgToAppend = string.Format( - new StringBuilder() - .AppendLine("----------------- Entry #: {0} -------------------") - .AppendLine("{1}").AppendLine().ToString() - , logEntry.Item - , logEntry.Message); - - textBoxMessage.Text += msgToAppend; - textBoxThrowable.Text += logEntry.Throwable; - } - } - } - - private ListSortDirection direction = ListSortDirection.Descending; - private GridViewColumnHeader curSortCol; - private SortAdorner curAdorner; - - - /// - /// Handles the HeaderClicked event of the ListView1 control. - /// - /// The source of the event. - /// The instance containing the event data. - private void listView1_HeaderClicked(object sender, RoutedEventArgs e) - { - Log.Info("Handles the HeaderClicked event of the ListView control"); - var header = e.OriginalSource as GridViewColumnHeader; - - if (header == null) - return; - - var source = e.Source as ListView; - if (source == null) return; - var dataView = CollectionViewSource.GetDefaultView(source.ItemsSource); - if (dataView == null) return; - Log.Info("Clearing all Sort Descriptions"); - dataView.SortDescriptions.Clear(); - Log.Info("Determining the Sort direction"); - direction = direction == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending; - if (header != null && header.Content != null) - { - if (header.Content.ToString() != "") - { - var description = new SortDescription(header.Content.ToString(), direction); - Log.Info("Adding sort description from header content"); - dataView.SortDescriptions.Add(description); - } - } - Log.Info("Refreshing the data view"); - dataView.Refresh(); - Log.Info("Clearing the Sort Adorner"); - clearSortAdorner(); - curSortCol = header; - curAdorner = new SortAdorner(curSortCol, direction); - if (curSortCol != null) AdornerLayer.GetAdornerLayer(curSortCol).Add(curAdorner); - } - - private void clearSortAdorner() - { - if (curSortCol != null) - { - Log.Info("Getting current column and remove the existing sort adorner"); - AdornerLayer.GetAdornerLayer(curSortCol).Remove(curAdorner); - } - } - - //////////////////////////////////////////////////////////////////////////////// - #endregion - - #region DragDrop - //////////////////////////////////////////////////////////////////////////////// - private void listView1_Drop(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) - { - try - { - Log.Info("Getting file drop data"); - var a = (Array)e.Data.GetData(DataFormats.FileDrop); - Log.Info("Getting the Keyboard modifiers for validation"); - var b = (Keyboard.Modifiers == ModifierKeys.Alt) || (a.Length > 1); - Log.Info("Checking if drag drop has data"); - if (a != null) - { - Log.Info("Iterating through the array of drag drop data"); - foreach (var file in a) - { - var f = file.ToString(); // a.GetValue(0).ToString(); - var bb = b; - Dispatcher.BeginInvoke( - DispatcherPriority.Background, - (Action)(() => loadFile(f, bb))); - } - } - } - catch (Exception ex) - { - Log.Error("Error in Drag Drop", ex); - MessageBox.Show("Error in Drag Drop: " + ex.Message); - } - } - } - - //////////////////////////////////////////////////////////////////////////////// - #endregion - - #region Menu Events - //////////////////////////////////////////////////////////////////////////////// - private void doMenuFileOpen() - { - Log.Info("Initializing the open file dialog object"); - var oOpenFileDialog = new System.Windows.Forms.OpenFileDialog - { - Filter = Properties.Resources.XmlOpenFilter, - DefaultExt = "xml", - Multiselect = true, - Title = Properties.Resources.OpenDialogTitle - }; - if (oOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; - FileName = oOpenFileDialog.FileName; - Log.Info("FileName is " + FileName); - for (var i = 0; i < oOpenFileDialog.FileNames.Length; i++) - { - if (Log.IsDebugEnabled) - { - Log.Info("Loading file " + oOpenFileDialog.FileNames[i]); - } - loadFile(oOpenFileDialog.FileNames[i], i > 0); - } - } - - private void mergeFile_Click(object sender, RoutedEventArgs e) - { - Log.Info("Initializing the open file dialog for filer merge click event"); - var oOpenFileDialog = new System.Windows.Forms.OpenFileDialog - { - Filter = Properties.Resources.XmlOpenFilter, - DefaultExt = "xml", - Multiselect = true, - Title = Properties.Resources.MergeOpenDialog - }; - if (oOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; - foreach (var t in oOpenFileDialog.FileNames) - { - if (Log.IsDebugEnabled) - { - Log.Info("Loading file " + t); - loadFile(t, true); - } - } - } - - private void doMenuRefresh() - { - if (string.IsNullOrWhiteSpace(FileName)) - { - Log.Info("Unable to refresh the empty source"); - MessageBox.Show(Properties.Resources.CantRefreshEmptySource); - return; - } - if (_mergedFiles.Count > 0) - { - Log.Info("There is no refresh when multiple files are open"); - MessageBox.Show(Properties.Resources.NoRefreshOnMultipleSource); - return; - } - Log.Info("Loading file " + FileName); - loadFile(FileName); - listView1.SelectedIndex = listView1.Items.Count - 1; - if (listView1.Items.Count > 4) - { - listView1.SelectedIndex -= 3; - } - listView1.ScrollIntoView(listView1.SelectedItem); - var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(listView1.SelectedIndex) as ListViewItem; - if (lvi == null) return; - lvi.BringIntoView(); - lvi.Focus(); - FilterIndicator.IsFiltered = false; - tbFiltered.Text = Entries.Count().ToString(); - } - - private static void doMenuAbout() - { - Log.Info("Initializing about screen"); - var about = new About(); - Log.Info("Displaying/Showing about screen"); - about.ShowDialog(); - } - - - private LogFilter logFilter = new LogFilter(); - - private void doMenuFilter() - { - Log.Info("Cloning the log filter"); - var tempFilter = logFilter.Clone(); - var filter = new Filter(Entries, tempFilter) { Owner = this }; - Log.Info("Showing the filter dialog"); - - filter.ShowDialog(); - - if (filter.DialogResult != true) - return; - - Log.Info("Cloning the log filter again after loading new filters"); - logFilter = tempFilter.Clone(); - logFilter.TrimAll(); - - Log.Info("Initializing the query object"); - var query = (from e in Entries select e); - - if (!string.IsNullOrEmpty(logFilter.App)) - query = query.Where(e => e.App.ToUpperInvariant().Contains(logFilter.App.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Level)) query = query.Where(e => e.Level == logFilter.Level); - if (!string.IsNullOrEmpty(logFilter.Thread)) query = query.Where(e => e.Thread == logFilter.Thread); - if (!string.IsNullOrEmpty(logFilter.Message)) - query = query.Where(e => e.Message.ToUpperInvariant().Contains(logFilter.Message.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.MachineName)) - query = query.Where(e => e.MachineName.ToUpperInvariant().Contains(logFilter.MachineName.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.UserName)) - query = query.Where(e => e.UserName.ToUpperInvariant().Contains(logFilter.UserName.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.HostName)) - query = query.Where(e => e.HostName.ToUpperInvariant().Contains(logFilter.HostName.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Throwable)) - query = query.Where(e => e.Throwable.ToUpperInvariant().Contains(logFilter.Throwable.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Class)) - query = query.Where(e => e.Class.ToUpperInvariant().Contains(logFilter.Class.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Method)) - query = query.Where(e => e.Method.ToUpperInvariant().Contains(logFilter.Method.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.File)) - query = query.Where(e => e.File.ToUpperInvariant().Contains(logFilter.File.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.LogName)) - query = query.Where(e => e.LogFile.ToUpperInvariant().Contains(logFilter.LogName.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Identity)) - query = query.Where(e => e.Identity.ToUpperInvariant().Contains(logFilter.Identity.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Ndc)) - query = query.Where(e => e.Ndc.ToUpperInvariant().Contains(logFilter.Ndc.ToUpperInvariant())); - if (!string.IsNullOrEmpty(logFilter.Logger)) - query = query.Where(e => e.Logger.ToUpperInvariant().Contains(logFilter.Logger.ToUpperInvariant())); - - // TODO: shouldn't we be showing 0 results if the filter matched 0 results? - var c = query.Count(); - Log.Info("Received queries " + query.Count()); - - FilterIndicator.IsFiltered = query.Any() && (c != Entries.Count()); - - logFilter.IsFiltered = FilterIndicator.IsFiltered; - Log.Info("Log Filter status " + logFilter.IsFiltered); - - LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; - listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; - tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); - } - - private void cancelFilter() - { - Log.Info("Clearing Log Filter"); - logFilter.Clear(); - FilterIndicator.IsFiltered = false; - LogFilter.FilteredEntries = Entries; - listView1.ItemsSource = _entries; - tbFiltered.Text = _entries.Count().ToString(); - } - - private void filterIndicator_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - if (!FilterIndicator.IsFiltered) return; - cancelFilter(); - } - - private enum MessageLevel { Error, Warning, Debug, Info } - - private void quickFilter(MessageLevel level) - { - string s; - Log.Info("Using quick filter for " + level); - switch (level) - { - case MessageLevel.Error: - s = "ERROR"; - break; - case MessageLevel.Warning: - s = "WARN"; - break; - case MessageLevel.Debug: - s = "DEBUG"; - break; - case MessageLevel.Info: - s = "INFO"; - break; - default: - throw new ArgumentOutOfRangeException("level"); - } - logFilter.Clear(); - logFilter.Level = s; - logFilter.TrimAll(); - - Log.Info("Initializing the query objet for " + level); - var query = (from e in Entries select e); - if (!string.IsNullOrWhiteSpace(logFilter.Level)) query = query.Where(e => e.Level == logFilter.Level); - - var c = query.Count(); - FilterIndicator.IsFiltered = c > 0 && (c != Entries.Count()); - logFilter.IsFiltered = FilterIndicator.IsFiltered; - LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; - listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; - tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); - - } - - private void imageError_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - Log.Info("Enabling Quick filter for ERROR message level"); - quickFilter(MessageLevel.Error); - } - - private void imageInfo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - Log.Info("Enabling Quick filter for INFO message level"); - quickFilter(MessageLevel.Info); - } - - private void imageWarn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - Log.Info("Enabling Quick filter for WARN message level"); - quickFilter(MessageLevel.Warning); - } - - private void imageDebug_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - Log.Info("Enabling Quick filter for DEBUG message level"); - quickFilter(MessageLevel.Debug); - } - - private int currentIndex; - private void find(int loopDirection) - { - if (textBoxFind.Text.Length <= 0) return; - Log.Info("Finding in Loop Direction " + loopDirection); - if (loopDirection == 0) - { - for (var i = currentIndex + 1; i < listView1.Items.Count; i++) - { - var item = (LogEntry)listView1.Items[i]; - if (!item.Message.ToUpper().Contains(textBoxFind.Text.ToUpper())) continue; - listView1.SelectedIndex = i; - listView1.ScrollIntoView(listView1.SelectedItem); - var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem; - if (lvi != null) - { - lvi.BringIntoView(); - lvi.Focus(); - } - currentIndex = i; - System.Media.SystemSounds.Beep.Play(); - return; - } - } - else - { - for (var i = currentIndex - 1; i > 0 && i < listView1.Items.Count; i--) - { - var item = (LogEntry)listView1.Items[i]; - if (!item.Message.ToUpper().Contains(textBoxFind.Text.ToUpper())) continue; - listView1.SelectedIndex = i; - listView1.ScrollIntoView(listView1.SelectedItem); - var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem; - if (lvi != null) - { - lvi.BringIntoView(); - lvi.Focus(); - } - currentIndex = i; - System.Media.SystemSounds.Beep.Play(); - return; - } - } - System.Media.SystemSounds.Asterisk.Play(); - } - - private void buttonFindNext_Click(object sender, RoutedEventArgs e) - { - Log.Info("Triggering find next"); - find(0); - } - - private void buttonFindPrevious_Click(object sender, RoutedEventArgs e) - { - Log.Info("Triggering find previous"); - find(1); - } - - private void textBoxFind_KeyDown(object sender, KeyEventArgs e) - { - if (e.Key != Key.Enter) return; - if (textBoxFind.Text.Length > 0) - { - find(0); - } - } - - private void textBoxFind_PreviewKeyDown(object sender, KeyEventArgs e) - { - if (e.Key == Key.Enter) - { - e.Handled = true; - find(0); - } - } - - //////////////////////////////////////////////////////////////////////////////// - #endregion - - - - /// - /// Gets a value indicating whether this instance can merge. - /// - /// true if this instance can merge; otherwise, false. - public bool CanMerge => _entries != null && _entries.Any(); - - /// - /// Occurs when a property value changes. - /// - public event PropertyChangedEventHandler PropertyChanged; - public void notifyPropertyChanged(string property) - { - if (property == "Entries") notifyPropertyChanged("CanMerge"); - if (PropertyChanged == null) return; - var p = PropertyChanged; - p(this, new PropertyChangedEventArgs(property)); - } - - private void label6b_MouseDoubleClick(object sender, MouseButtonEventArgs e) - { - LogEntry.JustFileName = !LogEntry.JustFileName; - Log.Info("log entry file name on label6b mouse double click " + LogEntry.JustFileName); - listView1_SelectionChanged(this, null); - } - - #region commands - - private void openCanExecute(object sender, CanExecuteRoutedEventArgs e) - { - e.CanExecute = true; - } - - private void openExecuted(object sender, ExecutedRoutedEventArgs e) - { - Log.Info("Executing menu file open"); - doMenuFileOpen(); - } - - private void exitCanExecute(object sender, CanExecuteRoutedEventArgs e) - { - e.CanExecute = true; - } - - private void exitExecuted(object sender, ExecutedRoutedEventArgs e) - { - Close(); - } - - private void refreshCanExecute(object sender, CanExecuteRoutedEventArgs e) - { - e.CanExecute = !(string.IsNullOrWhiteSpace(FileName) || (_mergedFiles.Count > 0)); - Log.Info("Can Refresh execute " + e.CanExecute); - } - - private void refreshExecuted(object sender, ExecutedRoutedEventArgs e) - { - Log.Info("Execute menu refresh"); - doMenuRefresh(); - } - - private void filterCanExexute(object sender, CanExecuteRoutedEventArgs e) - { - e.CanExecute = !string.IsNullOrWhiteSpace(FileName) || _mergedFiles.Count > 0; - Log.Info("Can filter execute " + e.CanExecute); - } - - private void filterExecuted(object sender, ExecutedRoutedEventArgs e) - { - Log.Info("Do menu filter"); - doMenuFilter(); - } - - private void aboutCanExecute(object sender, CanExecuteRoutedEventArgs e) - { - e.CanExecute = true; - } - - private void aboutExecuted(object sender, ExecutedRoutedEventArgs e) - { - Log.Info("Executing about menu"); - doMenuAbout(); - } - #endregion - - private void window_Closed(object sender, EventArgs e) - { - Log.Info("Saving default application width,height,split to open next time"); - Properties.Settings.Default.AppWidth = Width; - Properties.Settings.Default.AppHeight = Height; - Properties.Settings.Default.Split = MainGrid.RowDefinitions[0].Height.Value; - Properties.Settings.Default.Save(); - } - - private void resetSeparator_Click(object sender, RoutedEventArgs e) - { - Log.Info("Defining the height when reset reset separator is clicked"); - MainGrid.RowDefinitions[0].Height = new GridLength(ActualHeight / 3); - } - } -} +#region Header + +#region Project +/* + * Project : LogViewer + * Description : Viewer for Log4Net XML logs (see About box for log4Net configuration). + * Version : 2.7 + * Modified on : 1.0 15-3-2010 + * 2.1 May 2010 OD + * 2.6 26-jun-2010 OD - add quick filter on symbols, cancel filter on filter zoom/text symbol + * 2.7 --Jul-2010 OD - save window size, split position. Reset split. + * 2.x -- Open Source Project on CodePlex + * + * + * Copyrights : (c) 2010 Olivier Dahan for the enhanced version - www.e-naxos.com + * (c) 2009 Ken C. Len for original version + * + * LogViewer is a free software distributed on CodePlex : http://yourlog4netviewer.codeplex.com/ under the Microsoft Reciprocal License (Ms-RL) + * + */ +#endregion + +#region Microsoft Reciprocal License (Ms-RL) +/* + * Microsoft Reciprocal License (Ms-RL) + * This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. + * 1. Definitions + * The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. + * A "contribution" is the original software, or any additions or changes to the software. + * A "contributor" is any person that distributes its contribution under this license. + * "Licensed patents" are a contributor's patent claims that read directly on its contribution. + * 2. Grant of Rights + * (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. + * (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. + * 3. Conditions and Limitations + * (A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose. + * (B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. + * (C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. + * (D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. + * (E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. + * (F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. + * + */ +#endregion + + +#endregion + +#region History + +// 2010-26-03 OD Some light corrections +/* 06.01.2012 JB adding Identity/NDC reading, displaying, filtering support. + * replaced IsNullOrWhiteSpace -> IsNullOrEmpty in doMenuFilter since logFilter.Trim() is called, thus there will never be WhiteSpace. + * added multi-logentry-select to concatenate multiple messages into the message textbox. */ + + +#endregion + +#region usings +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.IO; +using System.Xml; +using System.Drawing; +using System.Windows.Threading; +using System.ComponentModel; +using System.Windows.Interop; +using System.Reflection; +using log4net; +using log4net.Config; +using System.Text; + +#endregion + + +namespace LogViewer +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : INotifyPropertyChanged + { + + + private string _fileName = string.Empty; + private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + /// + /// Gets or sets the name of the file. + /// + /// The name of the file. + public string FileName + { + get => _fileName; + set + { + _fileName = value; + RecentFileList.InsertFile(value); + notifyPropertyChanged(nameof(FileName)); + } + } + + private List _entries = new List(); + /// + /// Gets or sets the entries. + /// + /// The entries. + public List Entries + { + get => _entries; +/* + set + { + _entries = value; + notifyPropertyChanged(nameof(Entries)); + } +*/ + } + + /// + /// Initializes a new instance of the class. + /// Main Window. + /// + public MainWindow() + { + //Enabling Log4Net logging + XmlConfigurator.Configure(); + if (Log.IsInfoEnabled) Log.Info("Application [Log4Viewer] Start"); +#if DEBUG // OD - this info can be interesting when debugging a log coming from someone else. + Log.Debug("Application running in Debug mode"); +#endif + Log.Info("initializing windows components"); + InitializeComponent(); + Loaded += window1_Loaded; + Log.Info("Setting default width to " + Properties.Settings.Default.AppWidth); + Width = Properties.Settings.Default.AppWidth; + Log.Info("Setting default height to " + Properties.Settings.Default.AppHeight); + Height = Properties.Settings.Default.AppHeight; + Log.Info("Setting default Grid Height to " + Properties.Settings.Default.Split); + MainGrid.RowDefinitions[0].Height = new GridLength(Properties.Settings.Default.Split); + + } + + private void window1_Loaded(object sender, RoutedEventArgs e) + { + Log.Info("Setting the UI Culture to fr-FR"); + Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); + //log.Info("Setting Max Width to " + SystemParameters.PrimaryScreenWidth); + //MaxWidth = SystemParameters.PrimaryScreenWidth; + Log.Info("Initializing event handler for ListView control"); + listView1.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(listView1_HeaderClicked)); + Log.Info("Setting the RecentFileList to" + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))); + RecentFileList.UseXmlPersister(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourLog4NetViewer")); + //RecentFileList.UseXmlPersister(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "EnaxosLogViewer.filehistory.xml")); + Log.Info("Initializing the RecentFiles menu click"); + RecentFileList.MenuClick += (s, ee) => openFile(ee.FilePath); + Log.Info("Initializing Error Bitmap"); + imageError.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Error.Handle, Int32Rect.Empty, null); + Log.Info("Initializing Info Bitmap"); + imageInfo.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Information.Handle, Int32Rect.Empty, null); + Log.Info("Initializing Warn Bitmap"); + imageWarn.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Warning.Handle, Int32Rect.Empty, null); + Log.Info("Initializing Debug Bitmap"); + imageDebug.Source = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Question.Handle, Int32Rect.Empty, null); + Title = string.Format(Properties.Resources.WindowTitle + (!string.IsNullOrWhiteSpace(FileName) ? " - " + FileName : string.Empty), Assembly.GetExecutingAssembly().GetName().Version); + Log.Info("Setting the title as " + Title); + Log.Info("Setting the GridView widths for each column"); + foreach (var gvc in GridView1.Columns) + { + gvc.Width = gvc.ActualWidth; + gvc.Width = Double.NaN; + } + _mergedFiles.ForEach(mergedFile => RecentFileList.InsertFile(mergedFile)); + } + + /// + /// Clears this instance. + /// + private void clear() + { + Log.Info("Clearing all the text controls"); + textBoxLevel.Text = string.Empty; + textBoxTimeStamp.Text = string.Empty; + textBoxMachineName.Text = string.Empty; + textBoxThread.Text = string.Empty; + textBoxItem.Text = string.Empty; + textBoxHostName.Text = string.Empty; + textBoxUserName.Text = string.Empty; + textBoxApp.Text = string.Empty; + textBoxClass.Text = string.Empty; + textBoxMethod.Text = string.Empty; + textBoxLine.Text = string.Empty; + textBoxfile.Text = string.Empty; + textBoxMessage.Text = string.Empty; + textBoxThrowable.Text = string.Empty; + textBoxLog.Text = string.Empty; + + textBoxIdentity.Text = string.Empty; + textBoxNDC.Text = string.Empty; + } + + /// + /// Opens the file. + /// + /// Name of the file. + private void openFile(string logFileName) + { + Log.Info("Clearing Merged Files"); + _mergedFiles.Clear(); + Log.Info("Loading file " + logFileName); + loadFile(logFileName); + } + + private readonly List _mergedFiles = new List(); + + /// + /// Loads the file. + /// + public void loadFile(string logFileName, bool withMerge = false) + { + if (!withMerge) + { + Log.Info("Clearing entries to load single log file"); + _entries.Clear(); + Log.Info("Notifying Entries property as changed"); + notifyPropertyChanged("Entries"); + Log.Info("Resetting the ListView item source to nothing"); + listView1.ItemsSource = null; + FileName = logFileName; + } + else + { + Log.Info("Adding the log files that need to be merged to mergedFile object"); + if (_mergedFiles.Count == 0) _mergedFiles.Add(FileName); + Log.Info("If the same file is being added then return immediately"); + if (_mergedFiles.Contains(logFileName)) return; + Log.Info("If not add the file to the merged list"); + _mergedFiles.Add(logFileName); + } + + Log.Info("Clearing the log filter"); + logFilter.Clear(); + Log.Info("Turning off the IsFiltered property of the FilterIndicator"); + FilterIndicator.IsFiltered = false; + + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0); + var iIndex = 1; + if (withMerge) iIndex = _entries.Count + 1; + + clear(); + + try + { + Log.Info("Initializing FileStream objet to open the log file"); + var oFileStream = new FileStream(logFileName, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite); + Log.Info("Initializing a Stream Reader"); + var oStreamReader = new StreamReader(oFileStream); + Log.Info("Read all the contents in the log file to a StreamReader"); + var sBuffer = string.Format("{0}", oStreamReader.ReadToEnd()); + Log.Info("Closing StreamReader and FileStream object"); + oStreamReader.Close(); + oFileStream.Close(); + + #region Read File Buffer + //////////////////////////////////////////////////////////////////////////////// + Log.Info("Reading File"); + var oStringReader = new StringReader(sBuffer); + var oXmlTextReader = new XmlTextReader(oStringReader) { Namespaces = false }; + Log.Info("Start reading the log file"); + while (oXmlTextReader.Read()) + { + if ((oXmlTextReader.NodeType != XmlNodeType.Element) || (oXmlTextReader.Name != "log4j:event")) + continue; + var logentry = new LogEntry { Item = iIndex }; + +// ReSharper disable StringLiteralsWordIsNotInDictionary + var dSeconds = Convert.ToDouble(oXmlTextReader.GetAttribute("timestamp")); +// ReSharper restore StringLiteralsWordIsNotInDictionary + logentry.TimeStamp = dt.AddMilliseconds(dSeconds).ToLocalTime(); + logentry.Thread = oXmlTextReader.GetAttribute("thread"); + logentry.Logger = oXmlTextReader.GetAttribute("logger"); + logentry.LogFile = logFileName; + + #region get level + //////////////////////////////////////////////////////////////////////////////// + logentry.Level = oXmlTextReader.GetAttribute("level"); + switch (logentry.Level) + { + case "ERROR": + { + logentry.Image = LogEntry.Images(LogImageType.Error); + break; + } + case "INFO": + { + logentry.Image = LogEntry.Images(LogImageType.Info); + break; + } + case "DEBUG": + { + logentry.Image = LogEntry.Images(LogImageType.Debug); + break; + } + case "WARN": + { + logentry.Image = LogEntry.Images(LogImageType.Warn); + break; + } + case "FATAL": + { + logentry.Image = LogEntry.Images(LogImageType.Fatal); + break; + } + default: + { + logentry.Image = LogEntry.Images(LogImageType.Custom); + break; + } + } + //////////////////////////////////////////////////////////////////////////////// + #endregion + + #region read xml + //////////////////////////////////////////////////////////////////////////////// + while (oXmlTextReader.Read()) + { + var breakLoop = false; + switch (oXmlTextReader.Name) + { + case "log4j:event": + breakLoop = true; + break; + default: + switch (oXmlTextReader.Name) + { + case ("log4j:message"): + { + logentry.Message = oXmlTextReader.ReadString(); + break; + } + case ("log4j:data"): + { + switch (oXmlTextReader.GetAttribute("name")) + { + case ("log4jmachinename"): + { + logentry.MachineName = oXmlTextReader.GetAttribute("value"); + break; + } + case ("log4net:HostName"): + { + logentry.HostName = oXmlTextReader.GetAttribute("value"); + break; + } + case ("log4net:UserName"): + { + logentry.UserName = oXmlTextReader.GetAttribute("value"); + break; + } + case ("log4net:Identity"): + { + logentry.Identity = oXmlTextReader.GetAttribute("value"); + break; + } + case ("NDC"): + { + logentry.Ndc = oXmlTextReader.GetAttribute("value"); + break; + } + case ("log4japp"): + { + logentry.App = oXmlTextReader.GetAttribute("value"); + break; + } + } + break; + } +// ReSharper disable StringLiteralsWordIsNotInDictionary + case ("log4j:throwable"): +// ReSharper restore StringLiteralsWordIsNotInDictionary + { + logentry.Throwable = oXmlTextReader.ReadString(); + break; + } + case ("log4j:locationInfo"): + { + logentry.Class = oXmlTextReader.GetAttribute("class"); + logentry.Method = oXmlTextReader.GetAttribute("method"); + logentry.File = oXmlTextReader.GetAttribute("file"); + logentry.Line = oXmlTextReader.GetAttribute("line"); + break; + } + } + break; + } + if (breakLoop) break; + } + //////////////////////////////////////////////////////////////////////////////// + #endregion + + _entries.Add(logentry); + iIndex++; + } + notifyPropertyChanged("Entries"); + Log.Info("Completing of Log xml reading"); + //////////////////////////////////////////////////////////////////////////////// + #endregion + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + } + + #region Show Counts + //////////////////////////////////////////////////////////////////////////////// + Log.Info("Calculating the number of ERROR in the log file"); + var errorCount = + ( + from entry in Entries + where entry.Level == "ERROR" + select entry + ).Count(); + + if (errorCount > 0) + { + labelErrorCount.Text = string.Format("{0:#,#} ", errorCount); + labelErrorCount.Visibility = Visibility.Visible; + imageError.Visibility = Visibility.Visible; + } + else + { + labelErrorCount.Visibility = Visibility.Hidden; + imageError.Visibility = Visibility.Hidden; + } + Log.Info("ERROR count is " + errorCount); + Log.Info("Calculating the number of INFO in the log file"); + var infoCount = + ( + from entry in Entries + where entry.Level == "INFO" + select entry + ).Count(); + + if (infoCount > 0) + { + labelInfoCount.Text = string.Format("{0:#,#} ", infoCount); + labelInfoCount.Visibility = Visibility.Visible; + imageInfo.Visibility = Visibility.Visible; + } + else + { + labelInfoCount.Visibility = Visibility.Hidden; + imageInfo.Visibility = Visibility.Hidden; + } + Log.Info("INFO count is " + infoCount); + Log.Info("Calculating the number of WARN in the log file"); + var warnCount = + ( + from entry in Entries + where entry.Level == "WARN" + select entry + ).Count(); + + if (warnCount > 0) + { + labelWarnCount.Text = string.Format("{0:#,#} ", warnCount); + labelWarnCount.Visibility = Visibility.Visible; + imageWarn.Visibility = Visibility.Visible; + } + else + { + labelWarnCount.Visibility = Visibility.Hidden; + imageWarn.Visibility = Visibility.Hidden; + } + Log.Info("WARN count is " + warnCount); + Log.Info("Calculating the number of DEBUG in the log file"); + var debugCount = + ( + from entry in Entries + where entry.Level == "DEBUG" + select entry + ).Count(); + + if (debugCount > 0) + { + labelDebugCount.Text = string.Format("{0:#,#} ", debugCount); + labelDebugCount.Visibility = Visibility.Visible; + imageDebug.Visibility = Visibility.Visible; + } + else + { + imageDebug.Visibility = Visibility.Hidden; + labelDebugCount.Visibility = Visibility.Hidden; + } + Log.Info("DEBUG count is " + debugCount); + tbFiltered.Text = Entries.Count().ToString(); + FilterIndicator.IsFiltered = false; + + //////////////////////////////////////////////////////////////////////////////// + #endregion + Log.Info("Initializing ListView to show the log entries"); + listView1.ItemsSource = null; + Log.Info("Loading ListView with Log Entries"); + listView1.ItemsSource = (from e in _entries orderby e.TimeStamp select e).ToList(); + Log.Info("Clearing Sort Adorner"); + clearSortAdorner(); + + if (!withMerge) + { + textboxFileName.Text = logFileName; + Title = string.Format(Properties.Resources.WindowTitle + " - " + logFileName, Assembly.GetExecutingAssembly().GetName().Version); + Log.Info("Setting the title as " + Title); + return; + } + + var s = ""; + foreach (var sm in _mergedFiles) + { + if (s != "") s += "; "; + s += Path.GetFileName(sm); + } + + textboxFileName.Text = s; + Title = string.Format(Properties.Resources.WindowTitle + " - " + s, Assembly.GetExecutingAssembly().GetName().Version); + Log.Info("Setting the title as " + Title); + } + + #region ListView Events + //////////////////////////////////////////////////////////////////////////////// + private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + Log.Info("Inside ListView selection changed and clearing the text controls"); + clear(); + Log.Info("Getting the current Log Entry"); + + if (listView1.SelectedItems.Count == 1) + { + Log.Info("Show the selected log entry on the UI"); + + var logentry = listView1.SelectedItem as LogEntry; + + image1.Source = logentry.Image; + textBoxLevel.Text = logentry.Level; + textBoxTimeStamp.Text = + logentry.TimeStamp.ToString(Properties.Resources.DisplayDayFormat + " " + CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + " " + + Properties.Resources.DisplayTimeFormat); + textBoxMachineName.Text = logentry.MachineName; + textBoxThread.Text = logentry.Thread; + textBoxItem.Text = logentry.Item.ToString(); + textBoxHostName.Text = logentry.HostName; + textBoxUserName.Text = logentry.UserName; + textBoxApp.Text = logentry.App; + textBoxClass.Text = logentry.Class; + textBoxMethod.Text = logentry.Method; + textBoxLine.Text = logentry.Line; + textBoxLog.Text = logentry.LogFile; + textBoxMessage.Text = logentry.Message; + textBoxThrowable.Text = logentry.Throwable; + textBoxfile.Text = logentry.File; + textBoxLogger.Text = logentry.Logger; + + textBoxIdentity.Text = logentry.Identity; + textBoxNDC.Text = logentry.Ndc; + } + else if (listView1.SelectedItems.Count > 1) + { + Log.Info("Show the selected log entries on the UI"); + + foreach (LogEntry logEntry in listView1.SelectedItems) + { + var msgToAppend = string.Format( + new StringBuilder() + .AppendLine("----------------- Entry #: {0} -------------------") + .AppendLine("{1}").AppendLine().ToString() + , logEntry.Item + , logEntry.Message); + + textBoxMessage.Text += msgToAppend; + textBoxThrowable.Text += logEntry.Throwable; + } + } + } + + private ListSortDirection direction = ListSortDirection.Descending; + private GridViewColumnHeader curSortCol; + private SortAdorner curAdorner; + + + /// + /// Handles the HeaderClicked event of the ListView1 control. + /// + /// The source of the event. + /// The instance containing the event data. + private void listView1_HeaderClicked(object sender, RoutedEventArgs e) + { + Log.Info("Handles the HeaderClicked event of the ListView control"); + var header = e.OriginalSource as GridViewColumnHeader; + + if (header == null) + return; + + var source = e.Source as ListView; + if (source == null) return; + var dataView = CollectionViewSource.GetDefaultView(source.ItemsSource); + if (dataView == null) return; + Log.Info("Clearing all Sort Descriptions"); + dataView.SortDescriptions.Clear(); + Log.Info("Determining the Sort direction"); + direction = direction == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending; + if (header != null && header.Content != null) + { + if (header.Content.ToString() != "") + { + var description = new SortDescription(header.Content.ToString(), direction); + Log.Info("Adding sort description from header content"); + dataView.SortDescriptions.Add(description); + } + } + Log.Info("Refreshing the data view"); + dataView.Refresh(); + Log.Info("Clearing the Sort Adorner"); + clearSortAdorner(); + curSortCol = header; + curAdorner = new SortAdorner(curSortCol, direction); + if (curSortCol != null) AdornerLayer.GetAdornerLayer(curSortCol).Add(curAdorner); + } + + private void clearSortAdorner() + { + if (curSortCol != null) + { + Log.Info("Getting current column and remove the existing sort adorner"); + AdornerLayer.GetAdornerLayer(curSortCol).Remove(curAdorner); + } + } + + //////////////////////////////////////////////////////////////////////////////// + #endregion + + #region DragDrop + //////////////////////////////////////////////////////////////////////////////// + private void listView1_Drop(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + try + { + Log.Info("Getting file drop data"); + var a = (Array)e.Data.GetData(DataFormats.FileDrop); + Log.Info("Getting the Keyboard modifiers for validation"); + var b = (Keyboard.Modifiers == ModifierKeys.Alt) || (a.Length > 1); + Log.Info("Checking if drag drop has data"); + if (a != null) + { + Log.Info("Iterating through the array of drag drop data"); + foreach (var file in a) + { + var f = file.ToString(); // a.GetValue(0).ToString(); + var bb = b; + Dispatcher.BeginInvoke( + DispatcherPriority.Background, + (Action)(() => loadFile(f, bb))); + } + } + } + catch (Exception ex) + { + Log.Error("Error in Drag Drop", ex); + MessageBox.Show("Error in Drag Drop: " + ex.Message); + } + } + } + + //////////////////////////////////////////////////////////////////////////////// + #endregion + + #region Menu Events + //////////////////////////////////////////////////////////////////////////////// + private void doMenuFileOpen() + { + Log.Info("Initializing the open file dialog object"); + var oOpenFileDialog = new System.Windows.Forms.OpenFileDialog + { + Filter = Properties.Resources.XmlOpenFilter, + DefaultExt = "xml", + Multiselect = true, + Title = Properties.Resources.OpenDialogTitle + }; + if (oOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; + FileName = oOpenFileDialog.FileName; + Log.Info("FileName is " + FileName); + for (var i = 0; i < oOpenFileDialog.FileNames.Length; i++) + { + if (Log.IsDebugEnabled) + { + Log.Info("Loading file " + oOpenFileDialog.FileNames[i]); + } + loadFile(oOpenFileDialog.FileNames[i], i > 0); + } + } + + private void mergeFile_Click(object sender, RoutedEventArgs e) + { + Log.Info("Initializing the open file dialog for filer merge click event"); + var oOpenFileDialog = new System.Windows.Forms.OpenFileDialog + { + Filter = Properties.Resources.XmlOpenFilter, + DefaultExt = "xml", + Multiselect = true, + Title = Properties.Resources.MergeOpenDialog + }; + if (oOpenFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; + foreach (var t in oOpenFileDialog.FileNames) + { + if (Log.IsDebugEnabled) + { + Log.Info("Loading file " + t); + loadFile(t, true); + } + } + } + + private void doMenuRefresh() + { + if (string.IsNullOrWhiteSpace(FileName)) + { + Log.Info("Unable to refresh the empty source"); + MessageBox.Show(Properties.Resources.CantRefreshEmptySource); + return; + } + if (_mergedFiles.Count > 0) + { + Log.Info("There is no refresh when multiple files are open"); + MessageBox.Show(Properties.Resources.NoRefreshOnMultipleSource); + return; + } + Log.Info("Loading file " + FileName); + loadFile(FileName); + listView1.SelectedIndex = listView1.Items.Count - 1; + if (listView1.Items.Count > 4) + { + listView1.SelectedIndex -= 3; + } + listView1.ScrollIntoView(listView1.SelectedItem); + var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(listView1.SelectedIndex) as ListViewItem; + if (lvi == null) return; + lvi.BringIntoView(); + lvi.Focus(); + FilterIndicator.IsFiltered = false; + tbFiltered.Text = Entries.Count().ToString(); + } + + private static void doMenuAbout() + { + Log.Info("Initializing about screen"); + var about = new About(); + Log.Info("Displaying/Showing about screen"); + about.ShowDialog(); + } + + + private LogFilter logFilter = new LogFilter(); + + private void doMenuFilter() + { + Log.Info("Cloning the log filter"); + var tempFilter = logFilter.Clone(); + var filter = new Filter(Entries, tempFilter) { Owner = this }; + Log.Info("Showing the filter dialog"); + + filter.ShowDialog(); + + if (filter.DialogResult != true) + return; + + Log.Info("Cloning the log filter again after loading new filters"); + logFilter = tempFilter.Clone(); + logFilter.TrimAll(); + + Log.Info("Initializing the query object"); + var query = (from e in Entries select e); + + if (!string.IsNullOrEmpty(logFilter.App)) + query = query.Where(e => e.App.ToUpperInvariant().Contains(logFilter.App.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Level)) query = query.Where(e => e.Level == logFilter.Level); + if (!string.IsNullOrEmpty(logFilter.Thread)) query = query.Where(e => e.Thread == logFilter.Thread); + if (!string.IsNullOrEmpty(logFilter.Message)) + query = query.Where(e => e.Message.ToUpperInvariant().Contains(logFilter.Message.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.MachineName)) + query = query.Where(e => e.MachineName.ToUpperInvariant().Contains(logFilter.MachineName.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.UserName)) + query = query.Where(e => e.UserName.ToUpperInvariant().Contains(logFilter.UserName.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.HostName)) + query = query.Where(e => e.HostName.ToUpperInvariant().Contains(logFilter.HostName.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Throwable)) + query = query.Where(e => e.Throwable.ToUpperInvariant().Contains(logFilter.Throwable.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Class)) + query = query.Where(e => e.Class.ToUpperInvariant().Contains(logFilter.Class.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Method)) + query = query.Where(e => e.Method.ToUpperInvariant().Contains(logFilter.Method.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.File)) + query = query.Where(e => e.File.ToUpperInvariant().Contains(logFilter.File.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.LogName)) + query = query.Where(e => e.LogFile.ToUpperInvariant().Contains(logFilter.LogName.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Identity)) + query = query.Where(e => e.Identity.ToUpperInvariant().Contains(logFilter.Identity.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Ndc)) + query = query.Where(e => e.Ndc.ToUpperInvariant().Contains(logFilter.Ndc.ToUpperInvariant())); + if (!string.IsNullOrEmpty(logFilter.Logger)) + query = query.Where(e => e.Logger.ToUpperInvariant().Contains(logFilter.Logger.ToUpperInvariant())); + + // TODO: shouldn't we be showing 0 results if the filter matched 0 results? + var c = query.Count(); + Log.Info("Received queries " + query.Count()); + + FilterIndicator.IsFiltered = query.Any() && (c != Entries.Count()); + + logFilter.IsFiltered = FilterIndicator.IsFiltered; + Log.Info("Log Filter status " + logFilter.IsFiltered); + + LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; + listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; + tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); + } + + private void cancelFilter() + { + Log.Info("Clearing Log Filter"); + logFilter.Clear(); + FilterIndicator.IsFiltered = false; + LogFilter.FilteredEntries = Entries; + listView1.ItemsSource = _entries; + tbFiltered.Text = _entries.Count().ToString(); + } + + private void filterIndicator_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + if (!FilterIndicator.IsFiltered) return; + cancelFilter(); + } + + private enum MessageLevel { Error, Warning, Debug, Info } + + private void quickFilter(MessageLevel level) + { + string s; + Log.Info("Using quick filter for " + level); + switch (level) + { + case MessageLevel.Error: + s = "ERROR"; + break; + case MessageLevel.Warning: + s = "WARN"; + break; + case MessageLevel.Debug: + s = "DEBUG"; + break; + case MessageLevel.Info: + s = "INFO"; + break; + default: + throw new ArgumentOutOfRangeException("level"); + } + logFilter.Clear(); + logFilter.Level = s; + logFilter.TrimAll(); + + Log.Info("Initializing the query objet for " + level); + var query = (from e in Entries select e); + if (!string.IsNullOrWhiteSpace(logFilter.Level)) query = query.Where(e => e.Level == logFilter.Level); + + var c = query.Count(); + FilterIndicator.IsFiltered = c > 0 && (c != Entries.Count()); + logFilter.IsFiltered = FilterIndicator.IsFiltered; + LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; + listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; + tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); + + } + + private void imageError_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + Log.Info("Enabling Quick filter for ERROR message level"); + quickFilter(MessageLevel.Error); + } + + private void imageInfo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + Log.Info("Enabling Quick filter for INFO message level"); + quickFilter(MessageLevel.Info); + } + + private void imageWarn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + Log.Info("Enabling Quick filter for WARN message level"); + quickFilter(MessageLevel.Warning); + } + + private void imageDebug_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + Log.Info("Enabling Quick filter for DEBUG message level"); + quickFilter(MessageLevel.Debug); + } + + private int currentIndex; + private void find(int loopDirection) + { + if (textBoxFind.Text.Length <= 0) return; + Log.Info("Finding in Loop Direction " + loopDirection); + if (loopDirection == 0) + { + for (var i = currentIndex + 1; i < listView1.Items.Count; i++) + { + var item = (LogEntry)listView1.Items[i]; + if (!item.Message.ToUpper().Contains(textBoxFind.Text.ToUpper())) continue; + listView1.SelectedIndex = i; + listView1.ScrollIntoView(listView1.SelectedItem); + var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem; + if (lvi != null) + { + lvi.BringIntoView(); + lvi.Focus(); + } + currentIndex = i; + System.Media.SystemSounds.Beep.Play(); + return; + } + } + else + { + for (var i = currentIndex - 1; i > 0 && i < listView1.Items.Count; i--) + { + var item = (LogEntry)listView1.Items[i]; + if (!item.Message.ToUpper().Contains(textBoxFind.Text.ToUpper())) continue; + listView1.SelectedIndex = i; + listView1.ScrollIntoView(listView1.SelectedItem); + var lvi = listView1.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem; + if (lvi != null) + { + lvi.BringIntoView(); + lvi.Focus(); + } + currentIndex = i; + System.Media.SystemSounds.Beep.Play(); + return; + } + } + System.Media.SystemSounds.Asterisk.Play(); + } + + private void buttonFindNext_Click(object sender, RoutedEventArgs e) + { + Log.Info("Triggering find next"); + find(0); + } + + private void buttonFindPrevious_Click(object sender, RoutedEventArgs e) + { + Log.Info("Triggering find previous"); + find(1); + } + + private void textBoxFind_KeyDown(object sender, KeyEventArgs e) + { + if (e.Key != Key.Enter) return; + if (textBoxFind.Text.Length > 0) + { + find(0); + } + } + + private void textBoxFind_PreviewKeyDown(object sender, KeyEventArgs e) + { + if (e.Key == Key.Enter) + { + e.Handled = true; + find(0); + } + } + + //////////////////////////////////////////////////////////////////////////////// + #endregion + + + + /// + /// Gets a value indicating whether this instance can merge. + /// + /// true if this instance can merge; otherwise, false. + public bool CanMerge => _entries != null && _entries.Any(); + + /// + /// Occurs when a property value changes. + /// + public event PropertyChangedEventHandler PropertyChanged; + public void notifyPropertyChanged(string property) + { + if (property == "Entries") notifyPropertyChanged("CanMerge"); + if (PropertyChanged == null) return; + var p = PropertyChanged; + p(this, new PropertyChangedEventArgs(property)); + } + + private void label6b_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + LogEntry.JustFileName = !LogEntry.JustFileName; + Log.Info("log entry file name on label6b mouse double click " + LogEntry.JustFileName); + listView1_SelectionChanged(this, null); + } + + #region commands + + private void openCanExecute(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = true; + } + + private void openExecuted(object sender, ExecutedRoutedEventArgs e) + { + Log.Info("Executing menu file open"); + doMenuFileOpen(); + } + + private void exitCanExecute(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = true; + } + + private void exitExecuted(object sender, ExecutedRoutedEventArgs e) + { + Close(); + } + + private void refreshCanExecute(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = !(string.IsNullOrWhiteSpace(FileName) || (_mergedFiles.Count > 0)); + Log.Info("Can Refresh execute " + e.CanExecute); + } + + private void refreshExecuted(object sender, ExecutedRoutedEventArgs e) + { + Log.Info("Execute menu refresh"); + doMenuRefresh(); + } + + private void filterCanExexute(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = !string.IsNullOrWhiteSpace(FileName) || _mergedFiles.Count > 0; + Log.Info("Can filter execute " + e.CanExecute); + } + + private void filterExecuted(object sender, ExecutedRoutedEventArgs e) + { + Log.Info("Do menu filter"); + doMenuFilter(); + } + + private void aboutCanExecute(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = true; + } + + private void aboutExecuted(object sender, ExecutedRoutedEventArgs e) + { + Log.Info("Executing about menu"); + doMenuAbout(); + } + #endregion + + private void window_Closed(object sender, EventArgs e) + { + Log.Info("Saving default application width,height,split to open next time"); + Properties.Settings.Default.AppWidth = Width; + Properties.Settings.Default.AppHeight = Height; + Properties.Settings.Default.Split = MainGrid.RowDefinitions[0].Height.Value; + Properties.Settings.Default.Save(); + } + + private void resetSeparator_Click(object sender, RoutedEventArgs e) + { + Log.Info("Defining the height when reset reset separator is clicked"); + MainGrid.RowDefinitions[0].Height = new GridLength(ActualHeight / 3); + } + } +} diff --git a/bin/Debug/LogViewer.exe b/bin/Debug/LogViewer.exe index 951f576ee3c7d1497089204f271ca4e311dc171f..7b73be93a7f518f46f1f435cea191259473d5ca7 100644 GIT binary patch delta 41758 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 diff --git a/bin/Debug/LogViewer.pdb b/bin/Debug/LogViewer.pdb index cf1ece58e6827376a9cff070d5dd91e6db8dde3c..1f073b3edfab3e56d4dc9b22a3160ae20c990773 100644 GIT binary patch delta 35365 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 ANdN!< delta 35268 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 diff --git a/bin/Debug/LogViewerlog.xml b/bin/Debug/LogViewerlog.xml index b197ee6..cc8bdc1 100644 --- a/bin/Debug/LogViewerlog.xml +++ b/bin/Debug/LogViewerlog.xml @@ -5,10 +5,10 @@ Can Refresh execute False Can filter execute False Setting default width to 800 -Setting default height to 600 +Setting default height to 600 Setting default Grid Height to 150 Setting the UI Culture to fr-FR -Initializing event handler for ListView control +Initializing event handler for ListView control Setting the RecentFileList toC:\Users\odaha\AppData\Local Initializing the RecentFiles menu click Initializing Error Bitmap @@ -1959,3 +1959,1543 @@ Can Refresh execute True Can filter execute True Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 490 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Executing menu file open +Initializing the open file dialog object +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2020 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 17 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2159 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 18 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2276 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 19 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2363 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 20 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2462 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 21 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 0 +Calculating the number of INFO in the log file +INFO count is 2583 +Calculating the number of WARN in the log file +WARN count is 0 +Calculating the number of DEBUG in the log file +DEBUG count is 22 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 1 +Calculating the number of INFO in the log file +INFO count is 2658 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 23 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 1 +Calculating the number of INFO in the log file +INFO count is 2796 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 26 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 1 +Calculating the number of INFO in the log file +INFO count is 3005 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 27 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 1 +Calculating the number of INFO in the log file +INFO count is 3102 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 28 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Unhandled ExceptionSystem.Exception: Test exception + LogViewer.MainWindow.openFile(String logFileName) dans D:\EnCours\LogViewerForLog4Net\MainWindow.xaml.cs:ligne 220 + LogViewer.MainWindow.<window1_Loaded>b__9_0(Object s, MenuClickEventArgs ee) dans D:\EnCours\LogViewerForLog4Net\MainWindow.xaml.cs:ligne 164 + LogViewer.RecentFileList.OnMenuClick(MenuItem menuItem) dans D:\EnCours\LogViewerForLog4Net\RecentFileList.cs:ligne 459 + LogViewer.RecentFileList.menuItem_Click(Object sender, EventArgs e) dans D:\EnCours\LogViewerForLog4Net\RecentFileList.cs:ligne 446 + System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) + System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) + System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg) + System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) + System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) +Can Refresh execute True +Can filter execute True +Application [Log4Viewer] Start +Application running in Debug mode +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 1425 +Setting default height to 846 +Setting default Grid Height to 473 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 2 +Calculating the number of INFO in the log file +INFO count is 3186 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 29 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for ERROR message level +Using quick filter for Error +Initializing the query objet for Error +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for WARN message level +Using quick filter for Warning +Initializing the query objet for Warning +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for DEBUG message level +Using quick filter for Debug +Initializing the query objet for Debug +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for INFO message level +Using quick filter for Info +Initializing the query objet for Info +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for DEBUG message level +Using quick filter for Debug +Initializing the query objet for Debug +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Enabling Quick filter for ERROR message level +Using quick filter for Error +Initializing the query objet for Error +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Clearing Log Filter +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Handles the HeaderClicked event of the ListView control +Clearing all Sort Descriptions +Determining the Sort direction +Adding sort description from header content +Refreshing the data view +Clearing the Sort Adorner +Can Refresh execute True +Can filter execute True +Handles the HeaderClicked event of the ListView control +Clearing all Sort Descriptions +Determining the Sort direction +Adding sort description from header content +Refreshing the data view +Clearing the Sort Adorner +Getting current column and remove the existing sort adorner +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Handles the HeaderClicked event of the ListView control +Clearing all Sort Descriptions +Determining the Sort direction +Adding sort description from header content +Refreshing the data view +Clearing the Sort Adorner +Getting current column and remove the existing sort adorner +Can Refresh execute True +Can filter execute True +Enabling Quick filter for ERROR message level +Using quick filter for Error +Initializing the query objet for Error +Can Refresh execute True +Can filter execute True +Clearing Log Filter +Can Refresh execute True +Can filter execute True +Handles the HeaderClicked event of the ListView control +Clearing all Sort Descriptions +Determining the Sort direction +Adding sort description from header content +Refreshing the data view +Clearing the Sort Adorner +Getting current column and remove the existing sort adorner +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time diff --git a/bin/Release/LogViewer.exe b/bin/Release/LogViewer.exe new file mode 100644 index 0000000000000000000000000000000000000000..e844f8ab0b362901db2db90df49a853f911264b7 GIT binary patch literal 779776 zcmce9349er*6-=Q_x9bAkeih(kOW9*vXO)kA|i%WLBR!3P%#9E5Ct0U4Yah`hLd`;F*P-1)CT;C~G|AxVAbnp6#S#EASX#j?a**nHf5uKYD537>J3=A1{AD*w9fnpE0!0_+~aIPBgx zT;-)j>Qx!b#eE8IoB)x*f*1WMn;C$&Ls+!)_A;G85uq&kBN~UuMbp;*FjZ= zO4F-?RIY7!oqk|Nk?qpLL4XTg`V6N(9Cj{t>1gC^s zb_6NRXuzbUS#|?BoUjdMyrox|o_0n|MOXMmtIQWIgmSi4<~BEp#}U+2#B57Pf^yV$ zb~|Iy8mKBiL#Abqfqk@7*5otmw$GH+Rm>z&i z5Cn`&mmvrkSuR5mFtS~SAYk-$8G?X;-lU8Q0tWi0Vh92T`lw zGff+@Xcbp@OESuQHip7bafMZqP;MEP_M;%RVe*i+9|fr+)5bVxIc(b&-%TDn_me{E z&*WiuKMGQ-rj1D2kAl>-X(Jf-qaZC{+K6ZEl+>+hqYLaOg|v=oqZjQ*LE6l;tM{wG zErhy8ht_#Y)0#HIeLp4(RSHD=eiWo(O&g>6eiU?bQy$v;X|%NmvxZle5lRgLq%Q4R!3C8;YM3a%q zWADXO@&JW6etXOnTpS(?p{x47AfqwI9t9hwm!}wX0-k?wM0#Yx^Y76tv!?+%(*Z(h zWY54IQOJL_4Yfw8XaDlbhFSXvkLgOB(J)J!p@!pQ$8r`k0X+6BzzowK34hA{9q2>e zGG7P!hu1ld<<9Ydr5(}5s4)8k;GHasUK1xd1(y`725)HxMtw%iwh@3H=WSRuqgz4V{Gj<}Q81uZC6A`fB42Ow!gs|6SYax3MKuHIB zzt?F3THZ(S=o@a^Dl+18qsCs$?qFRt4)@qxHZc!CsT~D1`&$T{e*#>59U9r552*^c zE{WY7PjX&7$@lwB!V>$Wc#nwnFma`C0<;t3|7Ld-#0Ht|V7ELh0 zL(C}G|K*m@J_QQV11)r$MXZnV>e3woo+?Qjg3Q~o1QJvP`kJZ;$BCNRb&MVR;-n^UW;oT+od%YTJ~}l zuK=)51<0^ZWBPOeW%QyhbvW*|&tUQX)t~B8$NcHF+x~0yZ@bhnFnR4W_or^!U!w%F z4z%ocXrbRAgHTy&v^YRZwSX&2YRv9nLuWDQWZp^!X9K80RY;O^m>I8MC7A_@u5Jto zUguosIOhR`$_g!K6_Da$=X_>f0HAyK&%X&}Ijg~|c;|zVRc={o;4<5!H|@2Mj}^O+ z6J7*>kx7qdKN;l%%@9agn-=Q+shqjL%b8>0j1<_p7|G2xj3C`;j2PW$^yzLiTDcpI zzT1sPpX^4X!*!$4Kf2NA8r^6_S~nV@-Hk?Ub)ykw-DvchZZtYoHyUG40$utyRY6~O zRS;LRa|!B3N%DetSnFzB)04$BpRE1zu=cwpNaROf_EyYP`XivP+r5G9!@$hn}RN&D=qJp1lEN4wTtLM5adz>pE z!UKvjRU7VR%9D`r>@HCadtV2;D$xU75@hDha#A5mql6`|Jr0>P|1%2SLz$0 zYaojFoojJZ!uwod3^PI~c0E9GmU9Dc=|QFOqN`Cq*@I>bI+)Ny*$oFN;wBJLN$^>mLp_QH-Nsdm3#NGhY6(d2-iBqFNogAmef?5%$CW7jW zQDZpstQnF;F+hsWa;Tj=@)2 z`93fuCLF|#RsZLn{M(rSa8EvB$f`%8eeEEMta{8E`|?pnt8CdmncmLK6T0f)PNokR zr6=Q_Z30tRFT`2*xU9G1tovNn&N%AR?y(_%) zR|xkV?>=W+lcD)Rva=C48xDs`J|NX4OH#Ge(hvRCy-AbYLfz>D311jU^! zvAw)klcg6C?^({#@T> zYd(^S<4W@QKAt`Yn+cv`W6t%IC0(8-2gTD#uBX8sp0ddGlvhh#p0dRClqHFt_Kjd` zPTAVW(>h4htfcDnd8AD6)ade*C0(ATdn4Yg>N>M+0@zZk5pNG?S>`%BK8|y>vcz?k zC5g^n1(#f7`*{1nKHhFc(gbhKE^k?q;H@v>6K@XzTY2m2;VsKtZzsla_LeEvTh>bS zHZ2X_YGZM4&9(-psW6ogOz)G{$G)3`LQEhjg8hV& zd${E2rHFl&*cQjWA3#U#WwvB?aNBJbnUs>vUY;^9>|G@&cG`bgg zq+4q7;oJ`^>8WMI(^72=4WaZ%#1aLWGs{yzQ94H2D9fyf6^Ymna=wa2BJ|Qw#UDRN zNlV?Em5k?gcfHF_N34Clj#&T4ZjY(O_=&$F%m&$B^?C;x64vJi<~1^c>LtZE+*4Q) zfBd}m9E1UkysCaJ6h?O?gtT7Qtd29KVVysqOb&*3EG6zoZYt&T`zSpE`SK*}MPN8O z28Fd8EPO0^WHQ^16$a1u2@7?L*Hl(G&B)V_c=qR@@sc7M$)Kg{i~HJ-a>kD_z+xh_ zzBorqa_uiz)5hv0WIxGrwfyJhzQxnBn+>n`EeFdbm%$5uSzB63X{HKpm9$9&w{~gH z69$$-ZqjC9Z0uqz5C-~&tI;A1^ca`H%YTbQ%4IAT1|r5~oGJ{g;amnk0a(r*T?~F? zu$+6l7%^d>R@@|~2xDCrqfrh@;FUgCs|Ia?T@UP2KsFTO1qq=0j&Y~&P5_nB>6&|(L3Tqxp`-lCg~ z%d7cbDR!4IC=ZS!SN!(dZy#g?mm{bQ?sDaR^rItT=>1Z)_f=$Gdas#*63ISp9U>GV zujBg-w|HLXIV4#=8b;(@lGk~j=|ez={dl+JcQE>f>^}h{1wgAHAD5|XC*ZsQiL(tr zNmjZNyjmHGGL(C=$_%wTWR)LnIWI!9e6qSrk zWoO0xc_q%AgpJBypV}bK3(9*}XyjYd8 zJ#Jc(C91#1>ZtQP>>KjZHH13%I@^JCybj>J0dRm90%hq3*HWU+o6u=Jj+;a&6=&<> z*>6FTT^Y7`+b)#7*F@chb;Y|nR(YG^JQL?Qe}Q&V*@S=uZgR}R48xPY*^Vm2Jt!^F zjYe7_$kka@Y2|?xRd(9=Z_az=)yy z--rK6Ilkf#VU5-QYa@;OY1(uCU$qF{k#k1B+eHA%TM6G#jnmS2bGKPfZw4K zvkh)x*_aCFdaU{|A9pSKO7B#q^W?hWcn;Di-UyfHApY>q8STz-oZ^-BhHn2;T_v-v z26@^6Ebs7MVGOKTvDJXZrt>wDE0edn+QrJIgRl=JXQzA9JiPym38vDMT^0iMPf%HV zjrcCm4mTxUQF9(@Z(j1`*YDcpL-KSn^uyQ-a4BIyiqXo7eFw|Moh-32jg*Cz<4!S* z*xy4|k?zM9GA3d5G$iYFS1Gf*QfseD+1-_}BI(6aPIsjhy(;B(S30#s}g3e#AfN}RjHu6(pkMK6?IqY z>{V%4ccqoxmHg_-UB&V_h&9F7=NVS@KEEA8bd{$E5+1nr8VKn!!|j;dVU)7d2N}uh zZDo5SY^%6DvxEcnN5o~q5GdVS(o|^kWtLx_tkfHE8EjPgHclVc@^v80y=ud@4Kqh# z_7zzPo~HZKd@@Ru6{?Mi=qv1!^lPaERpy`Impt;w7;I7##t0Nej}6=7y;1ekIux?o z&?M%%xr~_T?jAEFLw-SdcRage66%c)4%tV-wtB~jBRhPOP5ZD1K6oyUU~2Aq!{(WQ zAxzG*pou6AS1zuyLfNJal?{|l$WU3HY)yvB(q+RkR2Gi%250PNIB|v^G*pSW9W5tI zO2>G@fHWk(XZCt*+6K*pvB}ppHnF7J*d)Ua`iCBy&PGnMr=-Rv9hIs^u&eZ+hFoG* z{yz+-%!Fu3#)!_1_uq}C6IC}@jM`JrE?NA(+A7ujZE=21H~zqWu6}kmetVqXSMhnh zz;S}Oz)OiK+-Cgb;_Ly)s&XF=b|9H&pU&+W`3%QS8wLt*_RLWI)k48JufvnO<@^FD zPgL@F{6gC;Mf(_v`82YG-%sf3xkq0HqdO zLsyHtB}6FXC>|He&9cLKk(mkKhWiVacvG*5hJqT;GB=bz>2K+W20m?#_ zf7pjeChJyAs5}NC4!hD}p|byUuY1%E^#+cjuo*oCrIgom$^s9EV#@TyFsOtaJS6dh z9LM|!&J%grkD!(?7x4y+UOKh26=sJp(EbS13GsVrs|@FCJ5=$>x4xgHE1H7eNX zx$3vUQI7zw+l3DL3SI<9@lPM{CbXG;|<1j7_OPP z&cwAE*WI`t$Mq*%Z{pg8E8j!ZfNMUkWw<(UJ%(#5t~YS)#Pt=fUvT*`>1W_7!c~du zKwO97nt^LBE(h0{xK`u38rKF~_u+a9*NeFRg6m^k-{RVfYXAy96xS$RlW-k_YaXtp zxY}`Di0c|$x8S-TSN&rE-qs*y4?JI-f+mecxN+0CYQ3$fG6Vc3=BG1110c?x%WTwU z$jR!aKCgH6`TJ3C?p^(){irYKU47wx)DdO9`F?VDb@yQKaMT8$62{XWdeh> zU6eYnpwhImt2;6H;>ybc=La{5s zcu62|uQj9h1QQYyOq2uy_gcsFo&aNHR}P0t0)cz2>AfeIq!UPi(A&FGW55?eJV(0- z0e6jdUQVgm74du=+r{=_$jJkUvyYFn^L3S>EJiy9QzR9**P6*Xb9vR^%80}~tAy9auotH#vRRQO~v10w%xdL%cgnKQN(~99pQpmx(7imva zlF^P<6FaCAqaF1ngk*>25kguTRWF3p#j%=zNuwPF>XN{7Aw+^&>XM*tx+K`(>5|M& zl$@9-X-t&NNt84tN>H0!)-ZN-l4XgKXrd&RC}~ZUEY}1=*=S#pC^Tw8jvZj%(cQakkp5nguqoibJ~2Pi3iE!b0= zS?K|-9dIh*+OPS0Dl;oRsFi~b_UX0hVD`-9VBpf0gS~jFGuztXrzJ0Nq)cYpSzttq z;E;p$W2p2DPwU@c%E4i7^*Yk723De<(d3(@L8wGio~2eIt@_4^v1o2_k994t*|E@) zKVHkC2I6bkQs7vH5QZbd^g$SF=@eX-;o6An8C>LfA*I4O4bTFgOt3SII=1luin8#ty3;E`4KU+LPyu&ZXo#C9PyeBxui(_6Y^5RaG*vZhfQyBCC(0i5_ zNXl2cr^K_Ao0276DLY>4u84;!D|Ucn!4exiq?`4N!L&NIcTa>TFxNUu609Qt5(|K5 zGuJvxdRRxz!TKBB6X8M4wa$_R>u+{f#1oinoh3c2BQ#n!PE{R%Lxjvd_-;c3UU&XNS{?{-(j z6On73B|WTP38vNYUiUL`J zMXZcn>n!PE{dZtm9Upd2gq5^woh1p@cXn6A6ysWFNe}B+gK2f_>YfOriEEuD3Dz!rLGVbZmF{MLg{9S=%v z7ePJon}Id^(3iyNkvyWcv7bs`(L6dO(mduQ(mYBe(%i2TY3_-MH20lEnxj3D=J-sc zIieD2j)6p)TP=}h|1pDMq_Z*PXfR!i#34RehwUo zPr2uUFxv#~wU9+`Po$WMp(Ajwg%;>d2eUGC1n#xa0{iHc^YqTsC})i4Dx;lSEKYC} z#|ds%CdRWG2YXz?EgL5|6ygN8bDZFYjuYI{Oo%n^Dsc(7dz|2gj}zSTae|vZPH@}v zhvnRur8OOB53lJQgvRI3@vdVgf2=JC7}vWDLBP1dWe5VsjV?nFFm7@gf`D8y={|gSP+Cg zfA{?c?)=x|yYF_ceN);hPui-TYhQh5-Olx{QLb@~a$RebYgwafyHKuK&E-1PDA%S& zxgIsjHKXxAS__qQ|6k_~d0Y!mT)~_iySBW?6RcAODH0 zuiXHZ9$)&2ET{Lc07aH-xA9KZ3VvKW6+nMbD6%{oV@&U|PVOPu@rJtxl(e=WHD(Mm zl4U>5OT>HD?wC?dMU0W~{=_%JA47|eV*>q!(N`G7lha4IcYUf`3j18H zPTc#VTq=i@5;q5X9I{>BfI%1suyU2Ofu)C{`J=7CV&kE4hH1Y5yVfuRrxX|~&sKM2 z_!l=r2aU-;zOfCAUZiMT{CtRMKPBSl0C{K9!t^REe5Wlu>@fA!u9?FV3J!f#t=xDJ%zp zi51r)ERCwXPV7p=?2exR~Xb9 zF8;Ppp(MHJuTtOZ_El;|J3D4(v~yNyV0FH@m4@7;zOCo8u3w={xe~{$ByUq0aSlUX za?~WAo9P_Rj;L}x(7hba6n3p_0S?w z#qO#nNv@lOlXI-Ax)@KbkE+iJ_^jVz@bkDX_+YSw?|Xxm2iun%Q=WoQ4Ni-^41O76 z_C?&oswRF$P58Us9{WstD}*+lo~$ILkz(U}r!Eb@I%MGu*weHx=~X_OZ_01Y=zdp= zB+|2$h5JC7T^3AvyIgK&l$vse!&7CN=x)GYc?`jk@D-$GHTR|I1v0eU65>I>W~Mv#uAjd85~1 z5K~#?&-Bz}S&(GqILE_O^m~|)k3&k$EDsKVb}^&y2nRaZvD}$B6f4+FPxVYI`YR`5 zdC2AShGG6tjHm&1lvgL@?0h-t-m)YdMQ2O1a%QD_St|=0j9qzQ3J8^I&-)JRqjK

6WsSJ!=*;{GMt%5(o?xG0yZBr|a@6u~p%Nw9*H?s>ia@LuIJK zNa*^gHAGil2w#QH#Fwq1h*k4(V*Nw{>0!|hche3-I~)lIYCh?zF%y%kX@7v0a>oUZ zzk0-eKg50vL204yy$N~PFXx40C!hhXtoEPLSBw1?-k$L&H5*JjoyVsWfysVkAK2iz z!?V1B=LtmHPFUe_Sk0IHxo>&wU0{aPF-LwDYU8Q0xWX(c^;j`%!dgxv8-y($pIUG) zV80N}Nablq>*CRZ$0)1q7fG2_V!wD!s*DLq4Ub*=b7zWB&rT^9iYKPiz5eR>t-+?~mfFdKuOA$#&^P z&6(qVxE$xiKh}uwU!@^W>0Gl7(*$A^lLR1EUS2uEk9>oO(N3(t5Iiau zzT=SsL8M-O@f{ByLgPU}?i=+Tk2^vm_~efDt=zFjl{+Fy?(6vev?;N!jv?i1Vj)Ve z(H5Zc%Oa&J?$6eb89ZC-pV9KP^AwI?Pq-F2UEy|`!NEsCWuybjSAHvKh*eGQG( z0h9MmAxpn^!Xp&Ue#v_$e05R35+r5?9Ld9AhZji}A~NBvQ#dFuojP~JpB}G*APhpi z^K%h~d!%Ge=NAyZ7V05mPUn}9xgT;I%-?}oT|ZvZ`7MMUoG*TChi~$_OBI|m1eb5} z^2wG;;GDqao4mlXr9wClaQWt(!i_AI!^Si0MW7*LLS8)CTwNb{@Nsu3jmbyN=s)ya z;>!a%2acodze5^ndqKeGIio@A>ws~;dyM`OT@>Fv+IWwJ?;rch^o6e-ZM>lYog00d zU15lTFQB9w%z>qF5Wp<*wFzon9wDet6;I3AX8(Ao7!=Qu!%DY zTmGC^V&>USjB__VUK>xsmbdS$a9NdKGEc(CMS>(-6`qVTKYU_$csYYrW)O>%R*?Se zSy+1wec38c#%DI{w8v(?_UkbCHL!QTj8c62RDomh-AkGjD9;FZvYq8HQXVq>UVh%U z%KjpsI(cheRdaJ=&+_V`$hS5gF`DJ9fDum^A1(=>$?ts@cd`V} zMpS0CktnIf43<<{BdMMF0j*;s=wOu;*I~ZWaZX45gv-+X&KW?Gtu}Tf=(KTDs8!D= ziK`y{&FQ67aJO3PT#s|?Ff1JeCx7{|--=-YZQ%if1)dn546vr-vSVnW5|mwaw@~bG zbmFj?YvWlbv?33;D~1OFl=3OoxZ8jo&kfcrR^n zIv|yAW0U>N!Y~O&*?ag2IZ2rKn{gRQ{#YlZN%iNV6$A1UF}%>ut}KlB3zBC|@PR!` zU!xQ7vSR~0)#A5oB7x|jGDH^k>p~S{K#g*#@?n<5f@f%{707Z{A|Dwr%JO zxbq+LlX3M04^O3WKDPxTfCh6MawCK?!j^pwa*dq}fDbFr!wswXRk-=3u+I5Fvywa# zF3Dw8K?#?1uU`r;Qh)Sl)B}3+1)R!R4JZSpx7x(_%PN*$NNftF<999;{fhw2z7h*~ zWb#S-qWvxg+v*tr7QTc=L%VH{2COhY7^ai4$gg7Hoy3n;rAjY>!S}mGCc5=0}BB#;`MBb@Db$X{kqcBr^7T)cA;J8u`x0 zY{L@Mi|3l`nes4%&M*XtN=GYwvuzK=dkr4weq}qnRuZJYDaFU<$l2{!kGd-?MR;sp zm)VyBljZr{*69PsE^_9wGX4zIsN**Rgprz{+w!n_%poh6?pPc z;iy1}#+Key)t|l_F*}e#R}S1z(4QKI^{wttHxHj3NTYBb+ZkKew>pKs3UV2(AsY%p zbpK$s{ONFpNkt3?6fk^D;2{ylpRHqf!ytxbHp6P+d?~4pEMv|oqJJPt(VsR|a&0%E z)FIjgn-*OR4^fkYM+FAZ=Yw+!ucU2=NQ+xLo(3bOY$Y%$&jjbZKc$p+$A}qll>cvo;J!p&R=$JPXjG-^$oReI>`wAp6?^ zX>|S&j+0;WxE?m3bwX5!Rzswvjl$Nz6Ols^fmR9UatL4wJ=ljW+>pf|izRJI8tWW}y0xgGZ1o6>ZY&ywGEOd<4cH{Ge+A?B-$!hQiZy5Y^svn> z^*Lf7jV>F&oJsXl^GfJo#AFGbC~(Lyj?X?)S3eGqBL3e&M5WOiux!zp=;;>aqFqvG zcKMNL&CPv|gg^F(97JYK=%Bn5T2{$@^GQUGMK2BEaxKW?cs^(d!vO;C6ZirkN`(H{ zpH`ryLbOCm^cLC$J+$Disua4WY9z+M&cp7gOA~QDov<7 ztYVk(IDJc=qExyIC2GbmWc(sC+D8S1QyfpxzY}DCWD4mP!d5fANS4u+?iGA%grzEZ zhXc?j_{Aii|N3VW{lWNz2I2qANTpXX#Wh1_8z!iaDv2(kVEnvj0OY}QP>sX{dU z7!8|oTBKg6pD^t=)Au+f(v{zjbfm$)d@jEHj4zv*x(1e-X%Eeibn6S5`WGE5GQ5%o z^>3P;V8t}%7}Yc)--kW0gMy);WgQww2_DngmLCDUu#Dk}1q@FvVYqP+!*N9s=zkN+ z40g!9Nmwi%16vCta*vEci)~W>HPW$e=|#;HN5MHN8Dz z9PqyZ8kCoEDBuI>o8mPv7Wzdrr(z2GHjt%Ng);yvOOIpC(h~tMuS)?8h329}PY&l& z-|SfcxVv@{;P-_~0oRr>oIaSP|ITN)K7Bdh>ijbR_Y^a{yo~GZ3H-+s9y+>;Ip^WG zkUVsCEpyfnV*E70SL8FkQ1Ew)89!g}wS73%Q(opA=i^ix`- zN-hPw$8#m%EuL!uFZbL8*eTK#9=5QzfYY{n)&pKu!uWGu#=l8t+zc{4G{|^*fN?v( z_%}YrpUGhSWQ*|=1b;>Fe~FzcKl9J3Vx1cWH&YoOMa)0Hp7CqMW>r4pPo^>dUulec zgg-r#@iT1Z-)J*#7BOB{#Q3?MjeyM&#{U7RVhsKlaQ(cR!J0V(7#=->;j#jTk9sx% z2K%qp`bBg<+Sfyq>h1?@9L%+MY5~Jxfv%c7EaMO0tf*)BO#wrdZ()$}`~buE(;40) znsoyhXRnZN731IaVfaZJ!+ zbB0-81I|kQE?7r@^8Xa%2Zn#e$CeArtk5x?FXS<7%V&6Ui4|haP$-N3OeuhOm<&(w zGPHdRpZ4_yoNf#P?4Us*i^}sh85aFMkcmEi#L%H)VHl*FXawN-Cc}~5F@Tnj@f&@N z*I11I&SLy$!RPxKf632$gBVYjw9k8l?`3|Ir2R?kER(cvO4<>Uc7voHFKMSrT0*`h zbnW1jU61g%v~t8$z-MZX2AouLOejJlF?L1hM}b8c{UY=X z@M@|Ya2%wj)ci3rDlU??cr&?CNqWU)pSkKQ=tr+u4G~}gH8}?P2WD{EQ@xNU81PK*3b(^ z2K`P`Z-p{p^GTupZg38n^rcX{46~*Z)D_suMec#qN-p+f)AgEKRk9_NO&c`zYC)sX zm+sQkj)GLYUwueZUj`bD9C}hyKLt=$dR|jgB8^5ay`rgEkyM=Vcw19XrZ*aS^ns>c zPEW;|hfg(CozaLN_WD{=qcc+R|KI$qsT1lO4LnH?QeL;zr{cLfsHuD5OMi-J>Jj+T zAFEBJc@=CH&;U)XgUtde)6^FwjYc62)6{qPb=g81rK#6Zh9VlTshuc85lzw5?5aj% z0L{?Uf~r*P*Pp1Vm-{pt1L-79{iRPT4J7^#ow%+ir!^Xb=u}NjOG`y@IyE&Sv(YG~ z3pCY`nM%d9MpGV?p@go}R3DU~1T&|yIp1zH2GgCIa&UBeFg>U!i5{DtQxr81Hn7Tk z65GWbb&*1*Hu1&<_NUfnz7VqM0-GrnXG7>_p;iT22EK-O%C`x%GH~j^w?W;jWXR#K zcs;OLsOKod{=q1xg+scmRL})NtqM#2t<$`LU z8#VRopkR0`J*26>f*MaRYwC$UKAK2ZO;T1Kf}e-bCQaP{Y7#xCscVa~!-vu5ntBG* z6!J{wbgKf_L|!nCpnReJ9{gjlAbbQ(*VNmfj-=H}6C01I_&RH|P%CL$|6urN@*Jje zACp@Wo=!=c8WpY#9}|}y3E4~01uni4*h{;a7-K%GY4Xe!q~C44%i&0t?v(kf7AP_3rE0@X&xXsVc|gwLeY zG&KUgwA1yP+U=PV?w}_%^));@i$2iQdGMtZKck>>$V2Wc<7J4#%GoqPWNKDBhpM#Z za`eV?;;lIZwR;||JXTqmoINdkKCKl>)%9w6O(<2ntLf{RtjRWy4_`#({9Xj*Yb#zD zzJxBHt*BPmyp(Di6~#GR9?$P+P*>2QB2zhBMW+d+a=40WnmFCnlwA=EUrh%KwJNZ^ zu*JBB4$;)Rg+985j?@&-f7jAXP4WD9Ej4NCfJj^TI%?6>xX4OSQBCpOcs-q=DV`gz zr*kyLbK?zkk*0WVyn(LL6wi$}(v6zpx$#E2RZ~1S-b8n6is#0g=wVIq+;}rRttp-x zZ>B$Kis#1P)2o`|x$*b(j;45STuVDO#dG6Y+N~*`8`sgdn&P=}9sQyyo*UPbIhX5m zReo>rdA={?bN2JE0FGXI#*L){sdv(oijvvsF1m3Z*MyoW@1mypOsx#$l&uNh zMJ<{dTy{06s8Fl$zb_eBv7Z&EQbAp!sqZmc+)dZVsZ>z6$EhaIJ@l}m0*fnJjC<*6 zO`TogqkHL3n!3GTi*X;ls;S5O`RG1+M^n!azcGA2?G$Qd;Pv6_LG9MEIjG$S=vz&l ziQ0XDe$mu+wC00kHgow_1-?LQK1g9ry))#F@I#cYsqco|11eurKlOho{0Ew@DPO@u z;fLvBMM(`lLf;Ful0F=6&?D4&lB&Ut70-kpp(}-2MN83|kI+UdP?sq=A6`2||0so&Mi0CldW-hyl!U9G7PA=^fGC`#((MY>-o)vI2l zKXs#24XXL*MS4SI=TOl2SNKJGFG2GqUDrzUCHhorzJrPpujen-0ntH)!CcR1{GoWI*rttKVb*&b($uWD$(ov zXf|riKTss;by}dQ%gspA8}S^*dD}d168|S&>}MZeB{ef!=WRMw%MP?6Nq>pU zZnoMy@6cIVX80pXJL0m%{x;9MbiS6o3E6vbS(w^9@6%;k)(^h?H7Tam%q_QE&BknkK(d1@a1E=SIh2(FQ3F^Q{l_s=@BiP z312>q%R;D^&$v?Xx7Bw~MRw9|MSyxYttjd9IJFeimqK}D<#DOJ&*jr)Ta5=JgOhLs z5PwYF6RAkT2|!KV5;-90M|wtbUlmB}*J%7iUn>gH+K}`Ur7mUNRe`55%j}`PLahwE zl%I-y=^`bAW-9jCtAx5b;71?(7mW~VO(2p!G3j4)u$Jx0_-FW6ny6*pW=u@_m8NRh zhMIqd|4lQr?EadGN!Z=ivPDR@m*#8PnMk*n7HOF=;Gf~&D5hn}112W@MrSHYMk)MM z9v}R`%#}0(=Xs0_P34bB#ZFeCP^upp#-cctinkqYLam|l5r-w2#>GPY-Qafc7(Z)@ z+revGF7M+1Zg4wT#%Drd&6jp$Qoxwjs&cPH?S_owHFaRWR0Oj=$5X~DA%%2kgm`eCDf|G3e-!HF+<+Bos z|FWb~nkl86_Mn8ciZdvW`Tel(fZx{>TtT*D(7ORQFM|~4e;VdQIA4{^y~8;7Q_Glh z_wX)$qPGii_`{%u>8YtET_R}{rT-}&E@W%}X{z(Ev-Y2-O03DJvDfmSTli1?{J+sx zv7}-qF)C`RxsC8&AHo0TG=_;$^gn_BcS@1y;kXL+@BxW`#{YZuoM?f2pBs~jt@i&D zFCW1^e4NklMTye?Gco&bG4bAGU;JZ<`Ba|TN!6aJ)h^sah5dOPW=(?*!8m5n z?+3f}?8eeN(waT%ttUsdz8^M?Ui@J@uAj;W<#VDPZeKTYlr%9_PyEGNjt8a5W3q{N zLCoRV#H;y3z;XTg4f?JR)#c1rIVxOvQY-z4`6j8fDv~*t4053l&+I{*un6KF!WG7q zOVjaoV>;eA%));l#qWnAfIhq_VY~Q1E$gr&*aomw2N-fJsj}< z+~a8*eUW(zZKsO{FGXo~*qyXRZ0;d`qxCIPU5fSXI|Hx6v)9zh8)%PbW6@fy2rsJM zND<@3fp-JHu%fD9d83xPR%l9B|8^7CRdS z&49mQKb-x4*=X@{9U8{TB`+JxfE%<<>g_rsHE+AI&L}U~VO(eA=It`>H+dCx2W)<3 zY%%y9$Q?$@uwQ{2d8WDDn2zV=?ZzBD{jP+aBy*cFyC}_EE2K47%U= zI;-5Q6%R)V+#&wo?>!)EtZ5iW;SJvwSh$pCc~1@=YVPsWRv%%`@}7t%@LAqd@I2jQ zgsP4+w|lo2&M|Y~?F@4V_zTQk-jv|!<__3QrCr`}S!bEMz0+#XGq)Ijwl6gIc)k6u zG=sitGp`q$YXx6xCPDvFiul^fZZmUyd1;%>BHwNG_nAX{PZT|D=9sOi&zce6Sp#kZ zd@he+`=Hxkp)hq9ReKH^@uFGnxj5rBbBxaz@HY6jR=;oVFe2F1++q09ren+xhyKkR zPg~2rH4mqZTCZoBxe#@=%;XZ?VIDsG1!KDSFp5^@r+SLalZU6`GzGuMsukGe+mYJf z86{CMijD{#0{rcvQ#`f8Io%AFPxGtLGl=nIpqKULg-6APye-Q{hu zRQ;S%=c8@DS#>R_xAeM~jV9llWuJPNS?zUSd1rZjbvW-~yj1mqvBNke|9kHaV{&P> zZ-voGi=%*{ma;P?!BBJgCEmq(9TULHMm0N&@z@tl_%Fdwu2hI8Yy zyeq)pP5;h%*tbRMbBFOu=o#O3!M9mv?pEIpjTeMp@fl`)|3l4P!r5XxKj=;0ZjE1D z{GM-%u?cXumvz2XseE?_|K{7Hb^chg+h_Ry*8feEcj~Z4quMh^`gnQ0->UX}Q4z7W zQ(=9!RZZNxcl!>kec4z^#(+j+7Hz1(cW06zrj|H z|EbyvtH>{7j=wIu*1}j?&m-HV!(Ybi@J`(X3v-Ul9kn%cts4a&`hk0cTFE2osKHF&737YVwN{p`-(LLd0{WZTp2plG)xDu$@(() zWn+_Aen`fpC#63=C*w(rRg#zPe@^=8%fdG#VypeP4MwC{&(>DrH?X+RaxWX~5BhGa z#m7&+*1-q+5Adt_@#K#Me;GJ?JRj8@;@@t*+;1vyPyRGm=C#3_lKXSi8j1On=)uU@ z{_RvX;%5J2@cb6QJ$ak_k0I(ddLOgiE!;?3q(qNdvG9ZbA($^xDd;mYIp0r;$eSZG z$We3<>VGB1w5@&~f7(1_{HK+E;9u?eq3$EV&j5MG@zH9}?YSGh%>N$z`*SxU&Swqv z23C76%S{rR{jMl_g!2ODOKGD3&fI(w2w;`*IbdJ<8Ze)}2P~vLfP-i+{-5e?{ADG6tKSAZhlT-OM6*-I(Ur($9Nj>70pCEcrhFv%HWEPNB&b3Qe}qAb5kuIhS#w zGe_V&ft>E zt`oRH;AVka1U@Tpr@&nT$tyVu^av~zSR`Y(7PK|TB z7p8Ek27z+~b_!f8aI?Uj0;vyc77A<-I7eWoz_kK53*0G?Qbk{2gTS4s?A6Xx_KG5m zQ$*qH$!6hf7S2w=cWPYxOk-;e0_Oiio*yg=oFlMP z;LcL!6P{o{N8h{BxYyWZd~GZ-^E^K9MDJ?vv)S#MbXwhH}2{j>ZX{?+~`{jd2y_y6k84Gat%9yliu#BM<{_7M0B*&hJ=;=3Oo zcouj8O2^JY2EKF5hE4^(8X1mnJ{v%d$1FAhI|dW6n{XKBqr+Ict7iE17XhyyVTwcxa27!$Nr{*)~vQ&lz z=?sSn+)>K-Z#6#yuI~45!0T!lek3rfAA9(o_<4Zn|B%7@f2d*DDR{{M#tTQV=E0)> zVxf^tI8kgQ2k<2}e=l<)po!M^AU09~1N0hsfo%sg5holo8Gt5E@#4!Pe5UFLo{jjy zNp(OI(Gmup3uq!@l7Z(-w**D&DM zptl(K5^6Z`>u|Euz*(#jz;D35nn5=LnmC7XAn=<3O`MK82>4n+6DOYdORM#OCe~qN zfZqaW;$+e|;I{#qIBhfm`0aou_SOyoekY(wchMx^n*dGh_8kWN9zYXka;5;k574Ch z=?LHt0Gc>Ea}@B008RP>O#^(GW&l1y$AbSTpov|(S->9$H1So|@xY%3G;!K|Ht^>q zMz&HTaGbgT{{?CSz75dCms<0HzXWLFNu(M0D}W}xHCO=rRX`KZ7cGFF;1~8y{8H~? z@IM7K@qLy9xSN&%eoisKFK9X7mvk!NSJ-zn@#ee@@M~%Z{D#f~{1!WrCjApDTZ6s> zH0gUf5BLv&CjCg~1OExo#J6Cp0ZWaGz$pVnv>2BFuLMN27?%OB0z|YJYk=1PB3iK4 zMYI6oi+baC!0P}_d@ptl@B;u5Eyi`g#{!x(4l87X#six88tf+EGXZ^w=b`8s9{`3Z z)fkGN(I2oDHIQT+X*^{NGY>RBGyi18c~?2{Z#Lfdc@r300_*Wu(Vh2V;J|`?d0PS_@P1-ny={1B%KOdg zOLNBG2+YJDc6YrkfkB1)@?H#NNZRhc^?!Y0JPJeq9GruCi~#(GbqvC}gT_)<#qHR1mO`vN?_d981;x!%)6 zCs@nO0Q3V!qj9F?H=nX*(`Qx_E%w9YsL=;BHr6y&SJ9}Y&eG+Jnp&I3N1dhPol}>L zp6g2HJ5!pMET7o2sI@sN+&WIMsA+EVB2K7G)a=&;OGeLYY#iSbTe_&}^l^)tVzHX4 zMxAn)V9S=b%sZtk2gR(M*Xl@ywbib64I{mKs_j(|W0gft(|nj~W_J~5Uk`@Yx;6zl zV#%0!tt~51{`s6HF03BTYV(|>r%yO--lFC6@#_gDTw z^I~U3Ggt1U*5<`A$yfyY8Xhj(Q(KnIcTTNtJRF5nZYpIoA&ha6k8YmVyrh*29vkOG zrSy<2XcpGerq+d=1?#rNT90XIhAnPw#XJ&Xmg$J7-d{aeL()sZn5`pWze({jXjIRZ zjwjr2I<0|*1h!Apg43HfG^)4Sat-y?qBM2+BEM{i<_e^bwqT2bF_JW zHztRRvxIfWIg1uGyVQggXn;eTmdsz&98EBUKn8UY$O5cHD82$e-Vd3F7Mv#2Kw zx{WiYPlSrfYrnb>^paP-$}656zv{EU;y^N5E}pOVs|Gvt$MNb_+ zj^;Uw=Q2k)0GQG@cN`E+zMK0)9HnZ7W}D5uw`WTkP|7`Hqc#R#rBZXIY+SA(V+ zPvUuYx^p-tUg8c&W9F-Dj&7b$-KQUX12JFE+gjpMjqtP;IkFWbi;wY*)0*|HGHzkh zk_8a4iC&pUVh(SPww~@Ps%1svzU)a;oz|9f2nz9dd4yK%Dlw3gO5(KOdt-bGD2eaXCqQD;fZ8L&Cm zL1$XbGdxXcYFQ%4C`9(?QyLq`HqAQ)tIdfm&5P#KC>3)(`BR!(7drEM@+a{cqbGYx zb1c@Y0QQ|zxea@!LGAUzo!-*g8+-Edm@GD@HZATY(Uhin3tN^n_bxo#S{%qj9G+oyJKHZ(g#Xw}gi`uV`M>)1K-LJ^3-|B|Z84jM0;OOmj4bg=|m3 z_?D;|KzoX&w=8a+*4ngqX;0CZrM)oGvJ3F&*rVJS@7;Rk)vR7N_teAa7Q@=NHxsD3 zsmmA7ZH^vs64!jJXJUEY?8$aBRt-A6dC8HBmiLw#Pkzz=#ooKX*Hx8y!#l}Ia+0(m zNvX8jl7mDo*rqAH(5h(fv;(E3ErKKdXxg5(8FC{@p~YL$>Wg^8JNoLp;AKSojl(#v zh%@slUSEW7MyQO#F!L$sHwu1!uPDw8&IQi*|F5;4eb(7o``mI*)@o1oZLMcL>silj zJ!|c?yN(_k8V!N<5z6Q%1L>ncci`k@>64=$?mP@_-!(M)39ZzA=uNFfNesN3upQP@ z%&$7XYM|>f-aEoS+5qnBJC1W|W33I8eKV&Zu`y}phL|*SX-t~A>QUMx0Nw}tI`L}W z&Or`}b`M;AtZOK}ufOw98n1%(bSopvp)w_CP~F}F%{-Le**iGY*^69<(?>dwcMpZv zL=I>U;1SicIaNx^oHNH2eS5W%-QBwjrMvpO)7I17=!dS}&TeySbJtK$XTSAajiJr8 zvH=`Zo9nELz@d~?XiI1Bkg0TAPyf(KDX(!=UEFs#9rW-|T15bGOe{WC0neG6k zUri6_^N_^)5>CQi8uUPEp@B5w3d+F44h zMySC~MppU;slCO^(Yjor5o&f}qwEdVvvY7C9H!3huA5c){e4^ejtd|ykip*LVA!7Y z{*(P_bLZ0Z5U;im^!1oK1Vw78D%FV$Nid8>n^ZIgju-an)`>Xc=nBEsTwu2@wr zm}%d!z5zH&I;Zm7R2f=gb&?H#z)ykEP?jikWL1{yy8DhEA)cmJ)Hz`*d!`9S%cclP zCuJ*W(|1%qWj^iB>T8Ix$w@&_MOcZtAP0sQfDoQvs-rPs3EN_-`g3j&&4Ya>!qUp= z49i;fR28+aLqX5lTxqnOjco!+L!9NDmMW}gJG4M}A?8@s7+y$q;SEFJ@R}7__F9#; zuR)iv3NhU(Q+Od&gf~nT;q~PVNp2b(O!pk@R@PlhQr6llcw4M%RI2S<-+(SKNEU-J zK60`G-2Y)w!Y>tiJ+Be<6U`OZOgDrv@o?&WyQ+CiEOs*|=vw@gTv% zL&aZ0xdIA^A{SiK(;c3puaxRh4-R9zaFp0G7mI97AL{PpcCYHrrCMZzAwDKM?K{>v zkPfas1{XRzkiz*Mc)74poeXa=h^U4(S;e$6_jvzdkSVxMo2;#dY=N>khdKv`!aE?DbP!>N_c?aho4($?Vz!;-19eZ`U}l4T`!{KC zf71|l>&19mn+kN;lA6}6@J~YtT zz1Q^3;N`GR$1zBV7N>p4-itIV`vAO))^+7%7MWCPGn;j*_7Y4_zMesZ>_Z~D4}tge zVe>ruC#eljP}jjOM3+xypQ>?irwnAZ;AStC>}D^`5E!nB8Qcamz1Ahiz1F1~ z`C8XU)aYB^I6=PNd=h`C1XSM#l(3<+KIh#XorC%UM9?Q-h42nYrNSQJliV9OlAVHm zoi{>9@sIXB0_aS-fa!tu^a)+}UTAKx8V2NnxI)nTP=eYmO2d~poIbJp2o&MbHNEMf zcFhu^G_|Zk6Uhyui`ugfK>HrJ^PAzaGvBt}Lw)KbXId#*T*b@UsoyQwrZd|OyYdMM zb#>=JFV8uIz_5^~N|%KFY;ID~sHY&PIYW$PP~T%`>(LPPs-UxVpc4U-qrpxPPW%U+ z(l?^uX#YrIq5M_eH}}}=KDmJJc9Xf^#n^;WNdfBH2LA*Doh=x|3~lO#uy+pNhK^Ml z&pgVnh?FAnRe%`n&1U55=y`ivzpVFZ!k zo!#9B5q=8b@aPkX`XWk(IG_rQ=`-crlS1Z+&Il1dl z4`hYq>XVxq5Qn^QNN()vJ3g3Go)4~oQ8qVC#Q3^h$d}e5m@KC5o4`tEF)>J*dVK?< z&+uG16O4C4H>9r*c8HnJag#!GqgZ4UBNbhP*9Y4X-0n7}K2W}?j;@;+x+apyS$2dv z*uMMVA0hODhFh;@!R#s7L<_0c1MO0%Da=4ei_?eIU>u5)^P2P) z8RC{pq6zJTP_AJ^bxI~OcWG73={}fusw!sQh0)`{NpnFUgIOTvly_OR0<2C{Wh#`e zkph(7<4RMh$BJ>(8Skr;9y#H3Ep3ImYlx-Jb=V~!v4SlKc=q++yt8+Z%O}*y5kv`t zJkngUx+?kb&M{PrBD=J5qq^Q^kT6zv+-i@CSWez2Q7Ch=07N zH_+az9RyLM@tueIdKDLj{tgubA#-qbH9`z37;StZmDAV~MKU?h8A-{_8+E8K98g=% zI4qBDS$2k&!zH>q!a!mcjTYh))mw0r7*gdm6>sOzAq+`C1}FooGBSvibQ+!L?o&1_htPV$mWBaU zMd|EScOMqqNU&9{5m0c#JBP!woO%_MJ$-`;3Df0=(#jK6`Z-I?t9lV&!h(du2sN1u z=sIQQG__qB299C{MDNh<<3qcTsCZRQVHt#3H%)=;9o6QndkpiPLmh?kl^jH=ZdN{s za#Eo?!3)|V=}CUNH!8ad0Bwbo?djwaiC%`LRAZHjzdU_pNEhS!C0$gx8QLtk9uso> zQ@Zf+Pqz&Wz*@O#KBD|wxQ!gD#^j04O{-=g@TyQZ%7#YnI=M$rU75o4O>)c57I~z6 zEaI=m`s&1tu+{lszm}aahgNCo5^5IlbahHnGvcA$LUl_ma8YM47`=$_q6*Eu(9P;f z+;DZ#Z=7^>L5|p*PWP+6BwTnPJ^hN2vsb23*&BQM`Y}<)B{=(WmYta7(k0F5JfVtH zcg&=)s2eq5iRY{vT(2tQ(Nx3JNQqq-P#*8Mhv=6M^x+0-0MDtBy1ua+MoM{50s%3f z8`K&eAiBA8KTiIZO*iz%--G)cPaY_B{m=LqTd_r>rWp-lv8`b!EOvtIUqu{>cCM8t~RS4 zP-GNc4=V;oe!!-b+=7oSrzAWsnUM`Kr^@b{bLEwo^Go5o>ddBt%oXFd1VLz7&4w)y z=_z42+=XX|tm|mBI#rA+*U@?NoQJ}&X8t_qnatwuh1rAxwN`fp*@3O&VI)43QxHR{ zqq#RiyEj@B=VVmMMyt4-`%nlu*Q63CDJ~6rUMRsnh|m5=YhMqBy9`}` zzVQAw9qt=Igh_KV6}sFYSWe6jz}+w*C?$EAuVMIcN4gsp9YNHq5GWmh)1+d4bR5aB zYOJcxh^e_EL@jb0vzs%rfjPAn5@MXf@rHT8#serlDRakO_(E?LPxr`_BCq$F`MT^) z!T_Rr)=}|o_G+irhR_88WCLr_ve%rzm-TzuNCQ1EL#N9-Pofwsx?*HyLA0IHryAeT zaL}u=Mn=JPgEB}8S17`~5Int0dQ7+?>e`V(5EnsY2^!)N+MV^IaBY^n;!G{I#b2(t zh384<2q#$DXht0<#^p4)2d=-db5M8$Bl@Ggm}l=gG)VE=)zuCCoQ4m2Sh8S3jTh`q zdZ22yP@c7muV$1qT(%p#4y8vu77iTsTtb#vTDKo<7bknrx@$zdD?QjQ+H26tsNWN)fS96v>$-vLQeX8PtfO4~ka%JM5$Ep*;$RXzR0(53=&@`x-MSkwhv<3^ z;s)FIV7LQk^F{zOk*w|Aokvlh3B)TjHVvpdxl5OnZcBQU|hRtNHUO0iLkFBFsOGiBGNL-8}} zO%uQx5g*10`xiaM1z179Il>>tZHbhtEIZO%KBFo&r!1(Wq4tgbek&(5ll3f|?$Deh zlOG5~n8i7mhq!KM52psZG+xRGtK9mGRhro*YC<(-uzNu6?A*ktCkz7!W4fplj)u8G z)1@QV=7tHWfsM_L0bSB~H}K>!?TU3J!BsoAbz>$7XR67{cRDP$l$*1yH@psmh&dUQ z!jU^^18rOHja^tms2~d%5eOalSH;3xTw5BNaxfCKIKw9C>^oLLbNWGL!_^P1;+cw_V)D+ zA&hzwp13+yZA5F}L=FX7F;ev*N(B*N>`vQpb(S@q>JpRreBP}x8L!U-;Wlx#W>hS8 z_V(kZVgx;9iRhXc-AN!CO5(;eBhpfquB;+~I$>FL0?vkf%0toQVIGoOkrjo_)Qemm z)-y43c@(}Ti>o@QJk^$lZIABm@RA&$ zo2;IaZ0dvz!zHU)MVd9V0VjC^Ogbo>LbC>SbVAD_82Au|QE+f^hYbOQ^Z)~w`W8kQ zm3~l?C3@$?)-}UR@C-4=Yd^N>xW=$HgCp zqpO!>F*eq&tpdgygYA02p>Pd@E~a(a>rI1)E=~7gE#JUN&SP2^;Gpmc9M)~bEdass zS4g4Sy&G%#FilLgsyrEUzOxsr9-uk!gnXu^`PF=~WrpA-_F)-=Zlut41dRNiEI`*CXmH7#)ntP!(Q7zYcFA58!Ry&Hy`e1zYj!#_y=P z4zApUr$_O|ZV&GEBF`Y+tVHw($3fgVjH@BM;mg0raGk=Fe*Ejk+rWnuj4nLw#T(fv zyyM$}H++NYd#*t1hOij~+fPWEib3V})%$VXk5VZ>IF1$! z;f#I7ULf=?U`d9$8OMV-!xtXrvp3k+WS3z0!&_CwuTVv!g)~>DfY@;qX6N<+%paj3 zQ6e{zXhgmnh@@20hZJzKitzPe`iY!-cCik%=d zOZNcY5dN`|(eelJOeBm%O$D0)2|;`0J?SVPtc|aaOxdGqWc&7^MlJC@L2&(5s`Z*# zrLF7&$q~g%OS^8p#y?A=(Uhkk;`J54>kNVmcHyc66z{S}Fjs*4_68OBHdc6kT|DolA@bUCXjLrwo*XYSbUE-O z&q=>%+S1w#fZ9+`ua34=aNP^oQ~}H@>QJC*oP+b<02pkA^!^pdpRJ3s7wnG5KVMDc z0&N$MMM~tU#Rhur0@hil0!;LC}-Wks|QpF zF4>~$p|o}x38QhKR+pZlKBYN~auKBSm7`0G!PZWL@DTF8g#6M8`H_0GIb$1xD@Vi8 zJV>mtY))ar{^~X`w2h%g&{X1m+dT*_(+0Q;?LQgTxJ~hO7G}TV9GXh%D(Z4gZPJPE zj&^8*vvSJ?Z={qA;%Dn6p_WKXwm;aHv=_uVYh*n|*{2bl-HE@St1qz9&4i-?QlVb-JR657Od_oz(JwguV>yngK z7*KrhQkRCYZrBF*U@tbN+Kc_)cET~+j`IMY7~KZ5auqhX3hJ)Lh-)vN1P$A9wjaOC zp>S#Uq$Vk5l=vTv2O=xFQZIxJK3uo1(Ug`jA@+pSWQzWYx+nP z+c6r=3ls{Cs~Vf;8IfceZ!2mY1ox09ve8Y9GA`j0?WpzOS=OzSUdh6sIVT@vc`&$| z44pOe^w%|`vz4RkqjO3Zg}yyw3PO$SNJ(=?uxc-!GB2Tsub&lPF~BJm&SMZTSWSw$ zxjx&1i1^(U<@qSDlhQKs%gPtAVl<1+N){(dmX=y=wDjmjQ-kfa#C~P8UfXHMekI7; z56IHW;EmDz(l?g@gOf0OR9aY^gfhg7{XqjvJ|q9hh*q0!>KJW8$weH`vL_fd5WHEM zwGSX4jdB(v4xb1yi`h=YJ5i&|HgF`bqfD%U^kd|qQ%RWSaaSE7?3Zm*`AIi18e3I) z;>0sjDY&4RT$JYEO6pj*;ShRehX~@pu&p|Ns+GMRxeaQyyAmuGCs^a@)CbIVI>Rr3O-kGhW1o=SR?D_HQnMd8oW%b{&wV&2^#hZ zhkOiJC~mL9#;dOwt%qG@gOzsNpY>^LnA@_f?h3Y)*FtiR$WQP_+ITGyLeDD;)@%<0 zatDR%op8|khH_wMo&52JoOR*zKrV|OwtJoj_F8g^4&&(X1Fy8xtgRa*n3^E#O+a5> zupjq0({L0|vi>W%U56;h|MXykRfTdg;KbhHbR_vRXy$+ouV^XAgdgDLIjz;T*P&%Y zOBOX0d4(+$Kb5+MA-wKj9gf=85;Akpz8}Y3t?v%uDEu6(+6Ii-PU$Dtn*0cJQXg#bG3!=lhdR#*a6Ng}s zey!#k!9lb(y%B-S8hK61kYemj)?lCW9#+|8bvGn-ab&3!a-)$ zMx1flmqsY5sY$Lmr0~+~KX!r>X?UZ!=cndMv^R@WmVX%Aj`F(wl$6tPZ;=hbN(^)q zkE|JU_eHd}72pCY6mfh@lP{b5a^v*Gmv?fd?zKV1>xx$$2`fdv*b5JCu;qidGjS)~=U=1m|3hb5ftZXWf5^ zwscZj_nOgF&DuL+N$rLP3-p~Gz)hUSpkW`{K)(tDkp;ww19r~)Q5Mjbt=Foyh};Wb zNGLa`?!bIg@QVDo#Cr+OAzh-d(B}(X_p=MqLC%M~pL&I+oRv~)F( z{I+G}UzaXv>1j+=FIkekJS$aGVP7XwK}#2IE@{+xmat3>ATDV+UV|E2hTlo}OBSh% zk$*@2rH%M*SYzW-R1YMUR0G1uE+V#sM||4qRCQxxQ*EN9ZDGss2La)uN&Gah_c8bI z|4HEEr;WgP_|uh*m5ZAyDuMj*igSbTfCuLWl~wf>jdeN~AiTJ#(&Vei&3A4^O?_n} zax^zp;1TK!AywC_`UMdXY(bC&b%A@(a%v&YlEl2R`P5>K;PtpfN;cH0ux zfk!;n*EgTK1a$$-8C~U10lRtlm-^!8ial6>4e^1k|7(sOM^ z%g6>*>;|$`OHZPv<Vxxws+N(v7vZes z)F*V+e@uWQpHQ`antw;WrOGO%IrS&Wg)OJeo&FVv1R0vmXS>@BimX!=Hq5#WpZKj$WF+GuKZrM10O9*Ra7nr=BE;9 zz{uY=pZd$@Q(spZ4E;}ii^LxJ5fDSGKqdSMD&`XifRbW3p!sBLU8MPAuR0pQ zZp4?IONh;xnqqs~Uj%8ylNzYgMLX z%g9wN9cU~B9i8`65PV4jWbILxzvSPMt5AK*$VU}dk9@Qy0N5o<8p)Rb-ZHYZW#moG zBb_Syy=0e>H);C+R?{EPvUGO zNvkE~g67kTuTC$lPgS;@UfO*6Jn%~`O7%d0;pvJxU^3FPv@zMJZr{M$EvHwhzZ;19 z=}VGHMTCuVFB=MDT3`y~1EG~3jC`pSmds+Qq@)&G-0Wy^8?o7YrPb#BmvUc*17 zP5za{TGDd*4FFEH010CGk@rDYphVXa&3>ml6%9{Q*w8@eR32{72d!F9pVU`xeNk;a zdJlrKbV+ha%i@+zEh}1H*0Qt?9EqDsfGU&uDUT4|VlaC%jLcIZ~l|`I3fOb`6xwwJp~gT&`78bS(|naop#T&!J7V z95buvwQJE^v~d)VmTPO!Q`a;$)&>dk`I570=RqkYtBgiYR@PJ@dn5JR(#EAcPlDqr z8NnwIB%oY83-S76j;5P!oN;AUGS0d&1zQ^0!=DsfFwlN@UPA z$l2J~(nHBP{U-cZyskP@ci*?5^JpMOzGv!fgkl}}9&p3o#=6>S9Fk~;>eTNwR@S0z zyo2k?#^%$1qKquM9!*6`QdblG1r+XKg&Me9+0jO5OEf?o*6PE9(AKpS6qINgIYU+X zmZjAO5$L=|D3f~7r=q?#Rh3*?orE>4s^D>9Eo1}*9tWM!EodSNYH|5e9gV{9nU>RE zBL6m@{xVtc)WSwI7%G`sHhJI8*S>!7nkR2fuDXBy>%X+_inYlj|6~3W4PXA^g~>mE z-F0to{!#s_5&=@8f`2Ochaa^|@MZ!+8B_!y)9^@D&C&LamB=XL`140VFMZEY|{&^l(Yj84B!9Ugf zQ^!B^`KOtG7V^(x{#nXD=kd?W_~!!tS;0Ra1d!!C`E&#Oz{m@4+>Iyu@w9K4facZ%>#JtgoRo z;`U!CI&wr8l7;hkvYZ{#bL*PjN$8eXwRrhb}v^${epW z$Fw=Vm6p7DtGOB>AatL(e5X0ys*l6(!;z?I8HN^usS0cO<9WamO@+egXjv2rJ)VPw zNA7NJqP9}1j+bakC2Vm8oVcK6Kat>HWKazx&*0)3b^jUzi+YcyOo?1gstPs_CK4(l z8MgLX;16l6pzRs?aW&wh`-1>pN6_*bJVVz*`ssYYwBZsxj4B#iI-r#`Txv7)mC|XA z4Jjy>zf1z+*OzF>f62#5dNCL^z?D$hsRHSq0;dXiO3e^GMTbTjNA^6bYK zNt%3()k%^dfxkV-*T|FCpy+(&9X^w+z!zwl&aHqx*kAdgs|Py!vCne251QI;f3O1i zs6m3@WfegR?_RFCB0ZGitF-BX6khO5nY{*5`>@GM8mmb0;abUc&92K?!sN!Qhtx;- zGG|b`ZN(LxC;BjmYpe+BkVV4_g4g2XpYpkc6gHbpr!GtPrna=Fup4MLmAi&2(gB8byhWZCzwQ}WAY#Dg`U_0K~T-kS+k5`8E0BwV! z!iGpG%oJ*?+dKFVUvtLtv~=%^tM(ySg)irBxoGvpTUT%2uwvcC+t#jFvvvK}6&pI% zu3NEb!$oV>Z(p}=?b`L5u{a&y$w@Y*l; zmpPlIQsI-7%6&eFY2IO1y8)_=ul9EiUO!m7M$kn6Xyi9mV5VO0fP~lk)pq5B?fbD= z<6t{>)avU!+I^Bc8exML{m|^9m4)<%ir}*BNAqN-@8gHN`r7rT*#Km=Ou^f^T}SZ- zba-PQ-X-oI80$^ImZ#*~TFZqGE-}{(|?zPNMk zp|$H)ZCJe~-LZbd`J*e-AB~VY(PFZ{7L_2_vuP{;-}=Kl-~Y(A|N7jwuX_32pLp;8 z`LCOA`s2($?|pYmR@AOAoS!nU$YY+ z-~K>#a8Y3(Bnv}bQtWFVst(Sp1;OTlp1Ux2wmH~@BUZTw2f|-PkUF;Yp{Vz7CLqiTb}lG4z~A%pW39l#a81-POQABqvPV0C$RbM z%KicD24+6YPz7aGiBAhJ*_#NiFtW!Tddt8oD#~ZSs^Y}*yolY@)vFO(rx1hn4iXxh zL)F1`S=G1g1X1Rm`|aC~9Kp^HgJqyMs;`gL1lVUxzDa7;p*9igR38W(kBZKIU1d7G zCNCkYye#`!yAZFDkY;zLwB?n0>w86y9FhbLiEP(%9{w_e4+k z5w&0LV0+)d(Um=FugVo_8wuImpJ3K$Fe|7pTOqtlpAV|l#~0cf;6Er?{KWHZb!ReF z7k8}t+zV}W4`iy=tm*jN3$0BR!MT~BPW1NRe7Gx=Z2jqm-mae3g_Xgb&j*eAOAFWl zNbSMU+FZrE_4+O?@zM=sQ8A@P;PqD^+cyD@vc&D%ItO9$^p4%IE=s^!;Slc51hup_ z*dVEOUNtYP)uuhI3o(v^zoX0Xv#{JEV`)bv>blSfLR?)}9>;E-U58LKz4YQL6j)WD zKyD>eR;|sokh-8=KjCh1t&PdxjE!s^FEz4N|MGn0%eKHqy}XXvkf{npYX5JUs;e?V z+nUOteOb6ikdcuK+Lxu%uiD#%t=ZCAYTCCC@M9y`(dmM-UubKp3hD>LEx$kUeEYST zDiEY?ej=#tcvZ)%R<*DF!V7J+@Yp-9%+w;pgzDSo*TPo>`q<6)l1w6*NR(9nF6{Bw zHFW%NdYtQDTp28|+HW=;VI?h9!94pL$Ju7qLfdp?8<bX{ZmXUX=-2TN(l!8mvv2 z+Lkt8YY+JbirGD?U4LQp7tgo9F;n$SCOH3v%p1WQiNw72XERkl$OJV_|CxEZva;^{ z?c3LF;=i`q|HxFVzv21T1@i(tp9iZ7Uv+Qi;jZI@ZME})iuE7N)c#kd>c77bw4OCT zz#)nKtoC5D@}ahd`DjD?+U2WW{z7YWBcIi){hG|vM*XzoG}rR8Zbe$xf@&D-(61;p#3)%V9(N7RLDm2Be9)HsOr~Hw9=)tXguRsWexV)ce~ z7s_?rXP`7UgqM7L(T4W5cs#HDm6@u$o)1=ltU+r-OK{ioRSBxXwx*U`p>1thfQLZ? z#%N;E+Zr*ifI$uvRA=`knYQ`g&(v}UUu=hd3EF#h@CVNaHCiFmo*gV*3ziR7I_;qT zaEP(E?Y1VV!sxxVX(6n2P!|eyTkS$cz1F4|sRyC9X{*B=->MF%kwnt8tgUH5P`?BF z``paEn}8t7wBC&Qx_QU(MG17OYdN2)QWut*}nZ zqNplVa4-7a3vJCmjxc#!?JqJFYryQyi-TbpV{WI|KQxF>HPqBBhJLANed&w&;3dLm zdb6+1odemeoZ1>+93(NI=GUGMgY(*6!V*ifo$f6261z-e$IoMWv9s~kU zQZMC`#XASN|0UQI8{~B!MRezw`L=OQ%}a@5`~FPTdtV6JUz4eN7Y-XTReylPg&F*> z`WckVtIy4><({M|Y{H*n6H-HcDf)6L26nm;*g1kd+6Gh0dblrRN^i`FmRvv{Ot@j5 zcW&k-*tj^g>GJ(61f<$)R>R6uQektjdxhGkFZBux&{EtY?iEDpu#Teur{1G0)tB%T zxKuA>cQ6mkmFH$I&^zoYSSjujm+I4VsUzwuJNa7Gc5dceyN+HZO<3LZ=@(#n*;lL2 z&8#pntrYgB!zU+n1A6e4kJQ05ItL%jNp%jgFv9&M&1J@*0Br<0sZ!1 zCRo96M{C3R!Go}I$`CZ3A0+jjvb(Q`@KZyqfg~r-WGXLO4L>~jK&JBIwK$pg{Y=ef z^>t|2f`&&j)qANiaGrcNQ@Q&xR(lHg62NKznD?%@t+2)mp23LZ$5mn@;wmJv0Eysu_nV&R=$(aZR$!ucT3&EmN3 z+)PIpCcP2f76dW{G;<=Q?WxcJr*^%5PXWYpx-@w^SY;jTUHwNgiOrA<+CXvv6i-|I z!;W9RR9qRvA!^W$ z!+ke>;`vrgUu1(4xTw)gL5~RHyqcz2#V6LRr;%P#$=nO|$X*R3j`zz4hT57dg9feq z)E5Zgv|x~&8^oy6L5$tKdJwd#bz#C8#Hb#}AVy7Y5TiC5#7JSfre67zYPh4q1enCJ z!UQj`Ly(kGlM^sloQN4PW4K@Shp=JEFd9&!qX8Z5t2rjdyqFpvC93YpR5Ul#o`3QB z^;@@Z$LNZ~%4F`a5=%tXu(EFSu(GbyVda}J7NgI;X8D@s>zBhdH3Ny(mikcxpr-oV zu|?aw$1NLZTQ~xtdF42(t@)u$gWke>3qP>}2FkUjv~{%)!%U*`XERN;)he5|&s0He zEe~bp835`t5~Co{9vcX)XEnf>2g#j-TU6efng-Haby|}YiID) zyw*jHY-_Xj5J4&P0j|M@#-Qr+V6^1#FpBSBb9q(!yG#W~>1tGt@mX8#cQO?n@RjH@ z@u=7YUPD{svza8E=>a`Nt$i|6^^NCMKmrFHkU0OW;OmTXClghlLr18Q-isc}G|5i3 z+0v>O4El0wfos>=+!UZ}{mwy70&;X!Q`5vwZbc9R4-$+d)gm78|7C&;o9aV^Udc+M z=(BQd?zaOi040>sWp2?yKor6Serg?+u09g8qNO0VfGv(2uw6e z?fWyjf9eFbv;NSfCwI+zHdCWN1?$3t>_m@M;UTn;>^XRZKpn(Lni`zgtd#~38-_Qo z*t#VS6*`zoqY5f2Zw?+II0qipgzZFPosC4xvzdA38}z9hp^I=WXC2!XKa^P@*jOK~ zhd!l1i>QV09azn8u*x~HyV%B#F(-afJ}+vR63G=P`3QXkuMn~Wull4Eaw4_fMv8%> zP1(=2#Pwfelwvt$awrypcVJdsg>p`$HrPm!Qfhe%)tL(=N*P8Bno>r}tO7asgph$x zC}#~>_@mHCev6}R8y{*N^)V3_E|jz;;$mwZlRHEt7p8+UbRRkg2i?eo+Ee6Sf5bix zn`UA|{S&fx8lUHcRnJ8ygz7*iS);3P;}hyn;#2=@Cc#Kg95$Hc*S?Toqci8?5<+y~ zQlr4TF$t9@F`>Q1U{J-1;;>negAH=KunD0$u&Jv>Au1O)LZLR5u0n21s>GplHqoJ{ zsfZ(ab7>QTbYPRL(PfB?8b}|80-<^^9jb$w; z$S%(~`wzyrs2~d}9NfQF2KP{A4RnL~RS$eY1VfWWY9&E4Zpuen@Fh6JbZcrV==ZkO zKaxrCo2+)kl2ef!>gX9XOzKPEw5gIKX8HEZC!SyW3M_#O&WlXo%VIlxTFHEVvUL%c z$^^~U6ZP@VLCpUyeHoX~w8q0wIXQu@=C>A~-K1j_h(8Ra)w4{dwS`Mxf(G@WXM9%& zpVz`{^wO7A#X`>Jtb)L{;=Lpsn!~RqZauC)eB3s_Ivm1p#VDqAehn+CQI!w2*91#b z36y+sJocRJTfuSY;(1Apc=|99#tH`9#B40S*Ltw8bKr10mNeX{S0(%@rb-qj9g&f? z3zL}aR-cli(&@%3g?)Y9UHGaHrfb!A^7u8ez5z^jw>H;Bf+%hEbwPq(@WE93(ah5I zSZW+x6v10hT1MA}D44P=qzY4Ut&R1;7qY7@+G^|7^m*&N2Hw`IF4{0g=VbA=i`QM; zv6V57DzvL@c`|spX#v-9UZ2j>hFpwUvD6d;ym<1o&8rJ)NQ~<`6gi3jUJ~Y|f#))m z#mShcl1+tcGfOv+0n1s>Q-$$zYvVjS9Hy2JVBJIOy!qL%SX=FU6Q@$kQ{wT;X(QIZ z0KNds!a%oE062fU_^gI2`uGua%#Tn8xaI*Nq;Hs^d@BM7-w;KE^J*pAaKoG$3I(@g z!bDHho)v7D8Si>5V9-q7Ht&H<&8myrH>_I&Z)e^aT&!>JSa%VE01Zv3DNt&!4d>Mt zwRfz#829U&d7ra3Z5VG?Fl%E=@WbZ=Sp(2k-xAQj!kl~SIScrtNptb8E;QjXVrIS{@=>qeD~g82mi48*Y#(<`^f8q-+%t~ z^^fkkcU`dOUF+%-|LxD01&KTV@A~@0l9~&kBDVjm?hMa(^5~AMF9?R8{d`>_b^Dee z@tYgE>k@ze7dHfnjaR+4?#!A$Us`qNmp)YU=m*~LjmrJM{Y`b^BfYm&CjRTW)#mK% zpZ-ze4Da#eQJy?~XH#Y3@E`Ui5}#wWfBudKYt-2pp1n8yx!}=H{osEl{-xnh@a#qC z$fh6duS_)kOJ!9;!Qz>M#gpG3Us0X7^XAu7C6=xFS#@IGC3jRM9{I+}nlsBE`m3to z-p|&YdGf3WgAcs(qjit|`R;py{!ji{U84KvpA8brp8DIm#P47AIn!94sm88<@8^O? z`hQ!O_{dAY5G20;>)+QU{@1=g3liTP$kd(rulu%DysPT=`bYoQ=F2LE-}kBd#DS0P zt4N%<^G>{@bnKu$JHs>Hdh~10-dJ($-|+0chdx%3`1t?)Xno=>KfI>`u-<}Bxbky} zj<4KOd*y5De~_r&{?*?-|98QGjr;!L%bnHL4_tQft((4iU}Iw0uNrF-$9h&JHI;a# zsKk>;hc9^|`Q&vS$;6^1x78=U_VMAG#G)5{pk7mnXNpREs3^$nhN`4E39VqU6CQo~ zpU$sSy|L_nH#8(v52-Unah@qyJo&=kezzvU?1=-P`%{A#&lD`4JlfG&SEHW2_ig*D z6JPu7&B?^)-g93fapL;(lV|?nbWLUQvcIc;^l-~RRDA!OiiX6{#s8xsG5o?y8Z-%c zcIHnXJW!Ey^5_@tS+DLSzQ3ojB5~*WjSUI%bAk-LI9b#5sR++2KLeUat(~bg%gfs8 z&JL-b#zxEe6Bdjw#Q+V;=_mhoP31+Xp{R3y+yzbD(jT+wmM8_ z3{v*_W7%@;Im-zg9*fZ>&pr2?Ds$Uyw`D~B(H6@81Nc#2?ZJ;eiBFyabA8+wsg^=MU1yHemU)`Y=_N zt{mIne*5hi%C{>$_Sj?UIprQZeX=gvdyexv@bk%2V5U(Z1%%1Jk8%8Z?AWo)J@?$> zwAZxL^s_1dw3#R~D}Iz?%0BhgefQnxY&-8$H!NGWjBS1bKl(Y;i#~Y@OjinU{CNz& zhiTt9PIcLA+BDj8$^i1tsb5D&hmvcTy(e9$6O7E$zaPdgg`ZEJ0@Hy49BbZ1*{0p5 zeYO+Fue9ZSW@6KGO1428XM5?paIDWU$}`VAW0Nc+GH>Wb-~Ir8N&I~B6qrm3q)-{- z$WPJVW_-*}lx^N4ADeNglh;w+-#0YinB67w^zBJU(CQid7{l{pc@V*;38laeK);W6 zhCXI=&dJO6_~c{`TRxkJYIj9>pS`r*KY_Ou5+7b!rVdYE(DQQJ))ld+`9oZ|v6 zbHWdxZ_hcz=y;wso_-YQ@C1IG%V@&SCr^QLD8TU`dFUzH7kk`IJ3}9na*yZ!HwiSL z9j86F$MV#%)B_kB{RaKOSiN7110wiT6a_;0CJ))ZIeCo!y0_g^r`s6s;9Q2?FZAho z56_-M4>NA!?R!zIJ|{E9$~Sq6@p2zin>zUhM~?EF7@xD}E-iVdeILfp%R7kRQ%Hep zaQ0Nxep9}A56}E>8qTb@Fh)(B`Ivx4x%df}Jr`bb+6V&6jkIwmUzE^=J`rjO&0d+ao zJV>H1Z~FfZ@PLoY&um#|ob56CZ?e9EM?VIiySk139OJB#IDV_Gt$iAN;^TBPQ`VIY z=Nd^#wCCPOpSv;+HdekHeR;~aB(AG7aXP*yVRvuU4}LcHsrm*%g~wsYSPNgTJEnEZ(u!}W6q zQTkf9Q$Neti*Z%1RrP#d8sE=VdfD?Z^aIWMn)^WyAEN^ira_{g{s3iK=1%B~nfH{v zoO?gLXda;7XUB7B=fPV~;Kz8bPg6&M^^BF;emdvF{dyN~!@-h8%Xc&{-+dFC!TDF? z#~+wFHlNcqA82iD{k_Cd*e}M{D!YH9{q3*Imz9}LJB|TmJr$2uJbq3K-6S{u7QTBT z@pR6M_%$zcS0*P)r*IBd_OhWJG3zewLw$bCKCuGNc-vj1xA;|@6Zi3SFXIy>>x65^ z<2mn+d)%LnaUq|^p90jO57_G)Oq|5~>0=m+f~KB+MbLn8UP*i(rmn8;Nzl&6=RkyU zOexaU-hFn3GO)h_f`6gAK zrgMFa1IZc<9vKS;zJ6`|*fdlJb*9ABNmn0l^D;NpdVujcnDO_w9rW7*?LFY6@<`+8f( z=^y!bNxh6u7uk;D;bpxf*_O;|JkE75Oq6jyH|}LTDqGX-nzAl)L6#5i$Lk{1xyNPp zc-+glm+$E&&xP=jeaR^6t5&W0cjWhR_*@xR^W*XjGmgu>9rtoxNUo;abK8fv=G->s zvih98;ySm-B%VR~_?VlQaqz^9oU^B_OB|lOym;~A-=Zzc=B#wZ@Yuc0|W-$dpV{FvPHem>rx zOV2n~m$~KP;bF@9Or2Lx(I=7hK=f7SQa}2(dYx8?2e^ht63>x;2YxdxVfx^H)eN(~ z*UR}Fi!Xy=eV-SgfqajE^URE6fo3zwe?KO%2Kpv`-zU%SUgq6AV86%8_clSN+wq$T zX%W}^h`;XV(A@otj`X(9(?IcnJ=bR5*<3#Z1pPjVCHi%(UY5N+D~<;ki(}&aGi>}B z&}};V?+4^vQ?7~edqx!3$6gjZo#?;I8WR(L9|m7c$CP9oLFNj$e*}>9KTiYC14Z%x zeRd|=$O|sG;P;T9>9_|CLWj2~Jh>jm%edEZo(D?j0ogOw%u(F~8cwIAVsEm3-GAq> z^!`O>dfn)0pys9`a+@T^Q`BAGI>B^a>g&_zH-wcb=czyAA9q5 z8BFPAd<-;TOitolW>2+a(?HOnb{Be`!rZ52Xyp%D#V9+ z$oKKs``FXa(~vwM-!3sWy&w0cDuuS(@7d~k6HMs!{5aBp>*SbdL-FmwUxL0v8>6~jb`@~M>+L_RnGY04T z*z>sOfr;aRh)ti&{U}0PZoV<$WxWht&X`8AKQBjaIePiaUtTl~ckS9WBl%Qp`XtBR zFS1!+#!k4bP%dIz#Hm*8&FD`$+`{M~KUp;&lS68w3*$;*4 zh(6B;JDPXAujw~45eLAYjMzKe2)*`gvggam6}t%S*UNKb(eeX!g*j| zK+)#jd+*IW`Q($~w+n@i|M{Q)sc8G)gAZmt^O?_N-uAY)g>)f(`O7X)8P*ZSq1bDI%_IGV zuYdjP&N|Ay$v&aoBK&+f2_91==k~gHBY(?)?|7$UY$p@P=KwybKcVs4-~M)mL%u(s z{p@GQ4L7ORRbL@Fm$E#5&Sk1JM2gl2f3DZPNkgleNZOuvpNCqw}kJWaxP8UJy}Pg zZ(RJ%HBK9^xd5r##TUiMIc4?Nzy7tWxVra)AN)Y^VLn>(}{;!zvEZ6o7+ zcBzN5WtVlG3ynVc$xli#=dsk-iLKv1^q~(qVaiR$5=6FLIPxCxEEFH%SS8LzNIR!e z&e;xmzs0OW9nW~&?Xrif*`uyt-^bCqoclswm+#A1u1n9C%2RQ8N!`Lv_AyS*r3{ZQ z+yq9cV^+eW-HuDew%NunpU=*E=!fU?Wo?}i$Nz#a>ndg(AblZtvdqta{&NA7bEJMN zB_>RK36J_UF2%tUeB#Hu53PBMW*6xaItNcHo53VdlpUf$K&u4SUeWe8H5`r zLoWCNJKy{Yb-$}@zI%jAS&#Fx$Y(CyCiqOXoZIm@^UcEXSo403d|SonkCN${kLHD* z32ixUawU%Wn8(Fq^dk$wFZ5jMchwyyt5SyXKvyDv74k9T@FMJdJW6{XSC;ohR}hZN z*Km#3^U+b->e3nXFQR%bj%HDu1uluRg?mrJ(^PE#%CYzM#H!eqv$ zCvb19=`I-$O!i*QHcz_ZZ(U`fbor0&p;`lh4*v_a-Q0}Rxq(N9%yii*Nc3eE7*jPlNdP;dNI86sRC*F*SGx2>BT#scgJ@nc6?bA|dG9Gz_ zt{l_35@nn9NWQ3jVwth>gTQvxpHI%?;=^ObXDoEJ{UevpF6--D@lNW6Xx%~^#v!6f zd;^!hD`xyBu;bRmlrqkb;$7~w;51$2T;#%he{mS?DmR5b`((d=Dm3NM6@Mcip;0+< z9_QN^<0lHN=uz;9@-eUT$+^pqWf{s+w2sNTmbUQd(utHwK6A;fYYnWxbLj5P60UQd%6C@cV%C&tTRzwar%#{OOc427 zjGt)3vd^V&BOujfJ~@xGL&VXBKbhy!7MIUXc_J>7Cn{gAHL#L5>gSU<^w;INOXub5 z6Wi~I#_19oOaf?i=}C6{gAd+3kLgi&;m<-NI8*+d=$! z&o#a*hED`8;Y3qDIgjH7fj1Gyd~LL8>hjrn&*o)U9_n17nT@~8HxPZseC(@edg!5t zLRbP*jyCLQIbM^tcAoJ*C#?h*`zZCq^{t(Evd+bKH|tu;c`yAIiQUJ=A1A6ULQfuD z@i&(~Cyz6KT-+wA7mCGQaEar$C>+TjwTCQk&ksnxi8w}a;{Yby3SA2ivEFE6e@DwpewUm_%TL6$%fGgH)MZR8loac)>M(HB$w|Q|g&t-j!S?|6Pbr+is&{t==h7-A@b~! zE8Fh4{6V&*kgVq8DaPYm_QQpX+!J`LJDT#zd7RFV!Wi%Cd^ov$cGmBbHMZL&XLcOj zWusksSZL^q%jX+|vD{Q8I~Eb;g}A;gmA3@$Sda3qs#zOX%J)^D;F?ON$^8DQ@B@#o zxOpk_t}g$S?TPdG<7h27v1~NulPTADG+KTlt~sA)x5d_-E}FRfe3qAX(?75i+bqvq z^JOkODDYfpCK@O{lj}O38lFMn6m% z?$Wn$cE=@GXv`@52q$iA7oB%^mACH+PA-0O;UoFu{1M`1!!Pw*;B)^8SBj1+B|ncY zpFNsi@R4%ScF^~hXRfh%T>DtY<>#{vF5N42MD+~w$LS`)y_loG|KbM5SG)7fSd+a=d57*VXQqI6JKy}=Z4u!x6&m9U93BNPT{8D?J~@xGT`r!s>&tg;^QUX9OYEX! zZNcB=vy-Oz>XWijKY(p;$-h1C7KJN);)?CjK1by?Uw*c8EVfhH#iNVYT(L~HN6NW$ z6><9f=Rcp9o>7{N=e4}QX6DiF2kb&AoHsY`!AuJ7LPN@+E7^0hXh1=n2rpmEKFU{d zFa<9cPWj}VHB zPh4`FFMp}yFKLslE8~2wI9)9Ch?8^r22#&tA32XM3Exou4eHOA_#Udt&bfD%Mdk_r z3H^9<`PxK?erGAT2uzo(5uR&I=z=eBSSFhC$qCE3Y!_irMvB!lf|KBp4{nq{rHsq= z3LXMK?noG}xVnqiDZ_Dacwg{wjq6=EhBkHvVzt=o`=v z$wz~Ud?w#!;u<;B(}7=H>WJ9?Nx@nAGmal=1A%bKKf-mzc-faOzH-$exUoz$vA@b4f4dL zaF2GDL8b}++4OgfAxXQaohlYD>6a*v5+?6a4hz8&7%US_`Q)5%S=PnVgv0Nqalc{a zaq+iJ7r}vhzCQl=<54u!b#!bjWq5S??8V5Xw1F`4@iq}CwvPyl`o)!8KAW_|Mc>55O#~m}XVWe2T=1fviKe(149l<`ak9y8C)wXdlsckE@)+0U z#K9>vz7}}-8tGAf@ z(*8I;%I8NF3qNj7iEXv@t_z;v7v)LmPgfcH9?Me(<9Lg3_)R~4$CLZJ+5AC!Prdt3 z|MX9;>ce}k_?O@v=d%|pmuw4R#o1sYK|N!)Ip4Y9<(dm&Y|-W02o7<+kr0A=}NkyKD>PIlJAYmd@<=2*Uo62rCf6_ zW+ukgQ0^)G;?h&Hu4Xd!Zx*`oDEdVqYW-o~0@<>EQb$~TuaK`G!L(?a%K@Fond zYsn|;Av(?u-1I{hnRx;+jMsFmFCs$YXCpfzBD}}!ahkk|Y+c7TK#oS|?Tx}Pe<9zn$Sl$K0z9;bF_WUSS7YjU>?k$8H z%Z{h4(~cJ-`bwND`TgkduN_(tFzP2snd%v`&Zhfru-?%Oevxbd?Y zXNNXt&?>ITs8Recb;XSh^7&ArkBCn+l`7|g8}VVC z9G91p$k&wJV)%n~xa=kCD^)Iux6mQlSH;HdrR{PgesOvuUw=q>;={2o=~1e@lkWM( z2U3UYNW5LLOgxAa;{o6O?sxNcD`lMayqJD;;gIj1tba9g7q0I&9E;=`B`^8lm->wK z;*WjmO4RG)Nr!xO6%&suwSC3pCr*sdkVk0aqw#d|FTWvh@4fe`Z>f$aJ&M6^rsSb) z@%sv-6X_L=w{aXw`jXC*@qIw{>$~3dF7*u!(Lt2$C!c&$;ZTmAEw(SjR-1Y8+fgo> z!u{YTdJkvPL4I*Iw$L~Y$d{ytq(15oS9*KQ9yO)biGOE1~$*^GHzb8F#V z?GrtxCNdWnbEO=XGVfCiuSlJ7v4FV!4vK;8^NcUAdU}>mPl=_Qcgi0FEu-mvv8@xi zw}g!ID0gx3+j7^rqCt6WJnM{`OD`0UD+Jp=&rf?#pUI<-_^Y7#bNEFQRKOD|%S6td zi(TcBvgJyJ=DL7*UU`mtE_KJnr(E$LDHAGv z{b47PJ|Zu1@i)pnyqsLa$veKS$yg-6%B6|CGfJ_dplBIjIN5jU4^$KwQVMV!bVZ_mfSZziI@=Ne3z zQ*wM;anj^maEOSEx-4aX#*dDXhN2?11}-lCHc{*PS+DCy`Hj;#c05kT8(z-cbac_y-pYOk7cp#6Q;}x}I-fxc?%NIji zpU2DKbm4(Ka_-0HUdDY)W|r`Pmve7(ri;z-cuX8GdO4ps+IqhAw4E+IkWbFJ7M5u; z_J*4-^ze9i*_@3$kVnoZd_CN3q^EC_*Avr`2fUnnzMPJH>2VrgzLa;gxaJeI9mY@6 z#*U5-<+o49-tDN=$96ppJP%9|4@BNqJ0?PoBVIpGDLFU$$N4^(pg!J-1L3oY2f4md4DgTOc#3Q`Ded<%02OoS;eG7%}^x8?jDf8`be_MUynfnC^oax-wnT*?0Pd%l&fO|fo9Vz_m z^qAOt#^mt8|2z#s9uV1-Bfn2p=)3H;yxZsePWe0D@eU>Lp3lZ#&PZ!({B6rP&+q3q znV8J}abX|(z8L?$m`OAh+2--)n{UqWJEP-~2#4Q7^ket&<1dM)b8lzx*faP=(;c$E z3i}fe{m;`N^s&hkTz|pug^y<?k;%e$$!-+sHNyO(jr z17gd$Z{~Q*xabSQrJvwseeALxk>PtBa(+P8xEo#I=|0D0U1XfcFMs*VB9^0$jJ18` zD_>FHCT3htf7N`)*s80dGX1Ok93QKys&)926fs(cI8eDm1;wwe)f zb$CqH#&SP*Proev<{~XbCiy*zX!_+Ze_1wv5H7!o>q=k!>Q~E#I~V)NZu7Eb%M?jz ztIhrBH<58$rF-O^wsLeeAP9VaoF%lNOma;9^wUpg{`#-~TCHgt85zl3c;SU*_p#`Y zAO7%%qePwG`2s;k)N0QT{f<<%++wBRMj&wlo^CChgd=b!xKCz(^HPAPdS zmG=b?ITB7O@2pWbab29qdmO#<(WF$I=SqHw!SS6_wD}4A3Z*a>XUdeU^HIT!DkFRw z$9GX#8PDrDo)(;Vq>s*ZXXBM9Z=d|+Crgrb8y}v>eLKDw9BJbjGm4{k98G2#Uri>y zVw=r8S-u#Y$p1!pw~ap7Wa2tibqNp0@m(>zTW%f~Pup=p%J>g{@Pl%}=Pk#vJKJ7} z?ooVP^XYjjay+E2`HR2!3&)d;lK(sv$mQ#UYXO*#JE?|$c$CAmpG6OD&Q`>_;!1nyXljKfE9 z@YnJ3#qqeTgEO)7xOH$KV@`Tl*2A-p@nly2gpcFw`DCu$u;W~D_)vxzU+11K`TB

+ +
+ + + + + + + + + + + + + + + + + + + + + + 800 + + + 600 + + + 150 + + + + diff --git a/bin/Release/LogViewer.pdb b/bin/Release/LogViewer.pdb new file mode 100644 index 0000000000000000000000000000000000000000..54a5c10ed0a2af0b3ecf14ca0abcd0303acef3d9 GIT binary patch literal 146944 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 [Log4Viewer] Start +initializing windows components +Initializing the registry persister +Can Refresh execute False +Can filter execute False +Setting default width to 800 +Setting default height to 600 +Setting default Grid Height to 150 +Setting the UI Culture to fr-FR +Initializing event handler for ListView control +Setting the RecentFileList toC:\Users\odaha\AppData\Local +Initializing the RecentFiles menu click +Initializing Error Bitmap +Initializing Info Bitmap +Initializing Warn Bitmap +Initializing Debug Bitmap +Setting the title as Log4Net XML LogViewer v.3.0.0.0 +Setting the GridView widths for each column +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Removing Menu Items +Removing the menu separators +Loading Recent files +Inserting Menu items +Loading recent files as menu items +Format is _{0}: {2} +Checking current pathname is less than the max length allowed +Path name is D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog +File name index is 4 +The short path is D:\EnCours\...\bin\Debug\LogViewerlog +Hooking up the file menu +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Can Refresh execute False +Can filter execute False +Clearing Merged Files +Loading file D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Clearing entries to load single log file +Notifying Entries property as changed +Resetting the ListView item source to nothing +Clearing the log filter +Turning off the IsFiltered property of the FilterIndicator +Clearing all the text controls +Initializing FileStream objet to open the log file +Initializing a Stream Reader +Read all the contents in the log file to a StreamReader +Closing StreamReader and FileStream object +Reading File +Start reading the log file +Completing of Log xml reading +Calculating the number of ERROR in the log file +ERROR count is 2 +Calculating the number of INFO in the log file +INFO count is 3460 +Calculating the number of WARN in the log file +WARN count is 1 +Calculating the number of DEBUG in the log file +DEBUG count is 29 +Initializing ListView to show the log entries +Loading ListView with Log Entries +Clearing Sort Adorner +Setting the title as Log4Net XML LogViewer v.3.0.0.0 - D:\EnCours\LogViewerForLog4Net\bin\Debug\LogViewerlog.xml +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Inside ListView selection changed and clearing the text controls +Clearing all the text controls +Getting the current Log Entry +Show the selected log entry on the UI +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Can Refresh execute True +Can filter execute True +Saving default application width,height,split to open next time diff --git a/bin/Release/Microsoft.Expression.Effects.dll b/bin/Release/Microsoft.Expression.Effects.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2b722f92b9b55663e5ed41cb92d646cebba87cd GIT binary patch literal 122880 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 A4gdfE literal 0 HcmV?d00001 diff --git a/bin/Release/Microsoft.Expression.Effects.xml b/bin/Release/Microsoft.Expression.Effects.xml new file mode 100644 index 0000000..ba0b390 --- /dev/null +++ b/bin/Release/Microsoft.Expression.Effects.xml @@ -0,0 +1,1056 @@ + + + + Microsoft.Expression.Effects + + + +

+ Determine the orientation of the blinds. + + + + + Transition shader that simulates blinds opening when transitioning + from one visual to another. + + + + + Gets or sets the orientation of the blinds. + + + + + Gets or sets the number of blinds. + + + + + Gets or sets the Amplitude variable within the shader. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the BlindsTransitionEffect effect. + + A clone of the current instance of the BlindsTransitionEffect effect. + + + + Gets or sets the orientation of the blinds. + + + + + Gets or sets the number of blinds to display. + + + + + Gets or sets the orientation of the blinds. + + + + + Effect that implements a bloom illumination of a visual. + + + + + The explicit input for this pixel shader. + + + + + + This property is mapped to the BloomIntensity variable within the pixel shader. + + + + + This property is mapped to the BaseIntensity variable within the pixel shader. + + + + + This property is mapped to the BloomSaturation variable within the pixel shader. + + + + + This property is mapped to the BaseSaturation variable within the pixel shader. + + + + + This property is mapped to the BloomIntensity variable within the pixel shader. + + + + + This property is mapped to the BloomSaturation variable within the pixel shader. + + + + + This property is mapped to the BaseSaturation variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the minimum intensity that will be used for the bloom. + + + + + Gets or sets the base intensity. + + + + + Gets or sets the bloom intensity. + + + + + Gets or sets the base saturation. + + + + + Gets or sets the bloom saturation. + + + + + Gets or sets the Input shader sampler. + + + + + Gets or sets the Base/BloomIntensity variable within the shader. + + + + + Gets or sets the BaseBloomSaturation variable within the shader. + + + + + Transition effect that reveals two visuals through a growing/shrinking circle. + + + + + Dependency property which modifies the feather amount variable within the pixel shader. + + + + + Dependency property which modifies the circle movement. + + + + + Dependency property which modifies the reverseShader variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Makes a deep copy of the CircleRevealTransitionEffect effect. + + A clone of the current instance of the CircleRevealTransitionEffect effect. + + + + Gets or sets the FuzzyAmount variable within the shader. + + + + + Gets or sets playing the circle reveal backward. + + + + + Gets or sets playing the circle reveal backward into the shader. + + + + + Transition effect that transitions two visuals using a cloud + texture as the sampler threshold. + + + + + Defines a transition shader effect that uses an image as a sampler threshold + for interpolating pixel value between two visuals. + + + + + Defines a transition shader effect that provides a random value, + allowing the effect to provide variance each time the effect is run. + + + + + Dependency property which modifies the RandomSeed variable within the pixel shader. + + + + + Updates the shader's variables to the default values. + + + + + Gets or sets the RandomSeed variable within the shader. + + + + + Dependency property which modifies the CloudImage variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the CloudImage variable within the shader used for sampling. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the CloudRevealTransitionEffect effect. + + A clone of the current instance of the CloudRevealTransitionEffect effect. + + + + Effect that modifies the color tone of a visual using + two colors as the sampling. + + + + + The explicit input for this pixel shader. + + + + + This property is mapped to the Desaturation variable within the pixel shader. + + + + + This property is mapped to the Tone variable within the pixel shader. + + + + + This property is mapped to the LightColor variable within the pixel shader. + + + + + This property is mapped to the DarkColor variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Desaturation variable within the shader. + + + + + Gets or sets the Tone variable within the shader. + + + + + Gets or sets the LightColor variable within the shader. + + + + + Gets or sets the DarkColor variable within the shader. + + + + + Gets or sets the Input shader sampler. + + + + + Effect that simulates an embossed look for the visual. + + + + + The explicit input for this pixel shader. + + + + + This property is mapped to the Amount variable within the pixel shader. + + + + + This property is mapped to the Height variable within the pixel shader. + + + + + This property is mapped to the Color variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Amount variable within the shader. + + + + + Gets or sets the Height variable within the shader. + + + + + Gets or sets the Color variable within the shader. + + + + + Gets or sets the Input shader sampler. + + + + + Transition effect that gradually transitions from one visual to another. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the FadeTransitionEffect effect. + + A clone of the current instance of the FadeTransitionEffect effect. + + + + Effect that simulates a magnifying lens. + + + + + Gets or sets the InnerRadius variable within the shader. + + + + + Gets or sets the OuterRadius variable within the shader. + + + + + Gets or sets the center variable within the shader. + + + + + Gets or sets the amount variable within the shader. + + + + + Gets or sets the Input used in the shader. + + + + + The transform used for this shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the InnerRadius variable within the shader. + + + + + Gets or sets the OuterRadius variable within the shader. + + + + + Gets or sets the Center variable within the shader. + + + + + Gets or sets the ShrinkFactor. + The higher the shrink factor the "smaller" the content inside the ellipse will appear. + + + + + Gets the EffectMapping. + + + + + Gets or sets the Input shader sampler. + + + + + The GeneralTransform corresponding to the Magnify effect. + + + + + Attempt to transform a point based on the effect. + + The point to transform. + The result if available. + Return true if successful. + + + + The effect instance. + + + + + If the transform is an inverse. + + + + + The transform specific to this Effect. + + + + + Creates a new instance. + + The source effect. + + + + This particular effect keeps axis-aligned lines axis-aligned, so the transformation of the Rect is just + transformation of its corner points. + + The input Rect. + The output Rect. + + + + For the inverse of the shader, we need to find Pin which is the Pixel Ouput, given Pout the texture input (is the reverse of the shader) + However, the shader algorithm is dependant on the radius of the pixel output from the center, which is a variable that we don't + have when computing the inverse. We need to perform bisection in order to converge using the equation below + PHatout = PHat_in*Scalar where + PHatout = Pout - Pcenter + pHatin = Pin -Pcenter + + Scalar is dependent on the radius of Pin (which we don't have). + + + + + Given a pixel output (Pin) find the texture input (Pout). + + + + + Creats a new instance. + + A new instance of this. + + + + Determines if a point is within an ellipse. + + The test point. + The center point of the ellipse. + The radius of the ellipse. + Return true if successful. + + + + Gets the inverse transform. + + + + + Effect that turns a visual into a monochrome color. + + + + + Gets or sets the Color variable within the shader. + + + + + Gets or sets the Input of the shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Color variable within the shader. + + + + + Gets or sets the Input used in the shader. + + + + + Effect that pixelates a visual. + + + + + The explicit input for this pixel shader. + + + + + This property is mapped to the Pixelation variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the amount of pixelation inside the shader. + + + + + Gets or sets the Input shader sampler. + + + + + Transition effect that increases or decreases pixelation between two visuals. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the PixelateTransitionEffect effect. + + A clone of the current instance of the PixelateTransitionEffect effect. + + + + Transition effect that performs a radial blur of the current visual as the new visual is introduced. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the RadialBlurTransitionEffect effect. + + A clone of the current instance of the RadialBlurTransitionEffect effect. + + + + Effect that simulates water ripples on the visual. + + + + + Gets or sets the Center variable within the shader. + + + + + Gets or sets the Amplitude variable within the shader. + + + + + Gets or sets the Frequency variable within the shader. + + + + + Gets or sets the Phase variable within the shader. + + + + + Gets or sets the Input brush used in the shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Center variable within the shader. + + + + + Gets or sets the Amplitude variable within the shader. + + + + + Gets or sets the Frequency variable within the shader. + + + + + Gets or sets the Phase variable within the shader. + + + + + Gets or sets the Input shader sampler. + + + + + Transition effect that simulates water ripple during transition. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the RippleTransitionEffect effect. + + A clone of the current instance of the RippleTransitionEffect effect. + + + + Effect that makes a visual crisper and sharper. + + + + + The explicit input for this pixel shader. + + + + + This property is mapped to the Amount variable within the pixel shader. + + + + + This property is mapped to the Width variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Amount variable within the shader. + + + + + Gets or sets the Height variable within the shader. + + + + + Gets or sets the Input shader sampler. + + + + + Defines the slide orientation. + + + + + Transition effect that slides the current visual away, revealing the new visual. + + + + + Dependency property that modifies the SlideAmount variable within the pixel shader. + + + + + Dependency property that modifies the SlideAmount variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Makes a deep copy of the SlideInTransitionEffect effect. + + A clone of the current instance of the SlideInTransitionEffect effect. + + + + Gets or sets the SlideAmount variable within the shader. + + + + + Gets or sets the SlideAmount variable within the shader. + + + + + Transition effect that swirls the current visual while introducing the new visual. + + + + + Dependency property that modifies the TwistAmount variable within the pixel shader. + + + + + Dependency property that modifies the number of cells where pixels will be twisted. + + + + + Creates an instance and sets the shader's twist variable to the specified values. + + Level of swirl twist. + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Makes a deep copy of the SmoothSwirlGridTransitionEffect effect. + + A clone of the current instance of the SmoothSwirlGridTransitionEffect effect. + + + + Gets or sets the TwistAmount variable within the shader. + + + + + Gets or sets the CellCount variable within the shader. + + + + + Effect that swirls the current visual. + + + + + The explicit input for this pixel shader. + + + + + This property is mapped to the Center variable within the pixel shader. + + + + + This property is mapped to the TwistAmount variable within the pixel shader. + + + + + This property is mapped to the AngleFrequency variable within the pixel shader. + + + + + The transform used when this Effect is applied. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Gets or sets the Center variable within the shader. + + + + + Gets or sets the TwistAmount variable within the shader. + + + + + Gets or sets the AngleFrequency variable within the shader. + This property is not exposed. + + + + + Gets or sets the Input shader sampler. + + + + + Gets the GeneralTransform for this effect. + + + + + Used for transforming input and tree transformations. + + + + + The instance of the Effect. + + + + + The inverse of the transform. + + + + + The inverse of this GeneralTransform. + + + + + Creates an instance of this class. + + The effect itself. + + + + For this operation, the bounds is the bounding box of the four transformed points. + Need to transform each of them, and then circumscribe. This is true for both the + forward and the inverse. + + The input Rect. + The transformed Rect. + + + + Attempt to transform inPoint with the Swirl effect. + + The input point. + The output point after transformed using the Swirl effect. + Returns true but throws if false. + + + + Returns a new instance of this. + + A new instance. + + + + Gets a clone of the inverse of the current transform. + + + + + Transition effect that waves the current visual while introducing the new visual. + + + + + Dependency property that modifies the Magnitude variable within the pixel shader. + + + + + Dependency property that modifies the Phase variable within the pixel shader. + + + + + Dependency property that modifies the Frequency variable within the pixel shader. + + + + + Creates an instance of the shader. + + + + + Makes a deep copy of the WaveTransitionEffect effect. + + A clone of the current instance of the WaveTransitionEffect effect. + + + + Gets or sets the magnitude of the wave. + + + + + Gets or sets the phase of the wave. + + + + + Gets or sets the magnitude of the wave. + + + + + Define the wipe direction. + + + + + Transition effect that wipes the current visual while introducing the new visual. + + + + + Dependency property that modifies the WipeDirection variable within the pixel shader. + + + + + Dependency property that modifies the FeatherAmount variable within the pixel shader. + + + + + Dependency property that modifies the LineOrigin variable within the pixel shader. + + + + + Dependency property that modifies the LineNormal variable within the pixel shader. + + + + + Dependency property that modifies the LineOffset variable within the pixel shader. + + + + + Creates an instance and updates the shader's variables to the default values. + + + + + Makes a deep copy of the WipeTransitionEffect effect. + + A clone of the current instance of the WipeTransitionEffect effect. + + + + Gets or sets the direction of the wipe. + + + + + Gets or sets the FeatherAmount variable within the shader. + + + + + Gets or sets the LineOrigin variable within the shader. + + + + + Gets or sets the LineNormal variable within the shader. + + + + + Gets or sets the LineOffset variable within the shader. + + + + diff --git a/bin/Release/Microsoft.Expression.Interactions.dll b/bin/Release/Microsoft.Expression.Interactions.dll new file mode 100644 index 0000000000000000000000000000000000000000..979c9651da8b9fda3513e911cb06e61f28f28fe7 GIT binary patch literal 91648 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 + + + Microsoft.Expression.Interactions + + + + + A basic implementation of ICommand that wraps a method that takes no parameters or a method that takes one parameter. + + + + + Initializes a new instance of the class. + + The action. + Use this constructor to provide an action that ignores the ICommand parameter. + + + + Initializes a new instance of the class. + + An action that takes an object parameter. + Use this constructor to provide an action that uses the object parameter passed by the Execute method. + + + + Defines the method that determines whether the command can execute in its current state. + + Data used by the command. If the command does not require data to be passed, then this object can be set to null. + + Always returns true. + + + + + Defines the method to be called when the command is invoked. + + Data used by the command. If the command does not require data to be passed, then this object can be set to null. + + + + Occurs when changes occur that affect whether the command should execute. Will not be fired by ActionCommand. + + + + + Calls a method on a specified object when invoked. + + + + + Invokes the action. + + The parameter of the action. If the action does not require a parameter, the parameter may be set to a null reference. + + + + Called after the action is attached to an AssociatedObject. + + Override this to hook up functionality to the AssociatedObject. + + + + Called when the action is getting detached from its AssociatedObject, but before it has actually occurred. + + Override this to unhook functionality from the AssociatedObject. + + + + The object that exposes the method of interest. This is a dependency property. + + + + + The name of the method to invoke. This is a dependency property. + + + + + An action that will change a specified property to a specified value when invoked. + + + + + Initializes a new instance of the class. + + + + + Invokes the action. + + The parameter of the action. If the action does not require a parameter, then the parameter may be set to a null reference. + A property with could not be found on the Target. + Could not set to the value specified by . + + + + Gets or sets the name of the property to change. This is a dependency property. + + The name of the property to change. + + + + Gets or sets the value to set. This is a dependency property. + + The value to set. + + + + Gets or sets the duration of the animation that will occur when the ChangePropertyAction is invoked. This is a dependency property. + If the duration is unset, no animation will be applied. + + + + + Increment by Value if true; otherwise, set the value directly. If the property cannot be incremented, it will instead try to set the value directly. + + + + + Represents one ternary condition. + + + + + Method that evaluates the condition. Note that this method can throw ArgumentException if the operator is + incompatible with the type. For instance, operators LessThan, LessThanOrEqual, GreaterThan, and GreaterThanOrEqual + require both operators to implement IComparable. + + Returns true if the condition has been met; otherwise, returns false. + + + + Ensure that any binding on DP operands are up-to-date. + + + + + Gets or sets the left operand. + + + + + Gets or sets the right operand. + + + + + Gets or sets the comparison operator. + + + + + Enumeration of different comparison operators. + + + + + This method evaluates operands. + + Left operand from the LeftOperand property. + Operator from Operator property. + Right operand from the RightOperand property. + Returns true if the condition is met; otherwise, returns false. + + + + Evaluates both operands that implement the IComparable interface. + + Left operand from the LeftOperand property. + Operator from Operator property. + Right operand from the RightOperand property. + Returns true if the condition is met; otherwise, returns false. + + + + Forward chaining. + + + + + Represents a conditional expression that is set on a ConditionBehavior.Condition property. + Contains a list of conditions that gets evaluated in order to return true or false for ICondition.Evaluate(). + + + + + An interface that a given object must implement in order to be + set on a ConditionBehavior.Condition property. + + + + + Initializes a new instance of the class. + + + + + Goes through the Conditions collection and evalutes each condition based on + ForwardChaining property. + + Returns true if conditions are met; otherwise, returns false. + + + + Gets or sets forward chaining for the conditions. + If forward chaining is set to ForwardChaining.And, all conditions must be met. + If forward chaining is set to ForwardChaining.Or, only one condition must be met. + + + + + Return the Condition collections. + + + + + A behavior that attaches to a trigger and controls the conditions + to fire the actions. + + + + + + Initializes a new instance of the class. + + + + + The event handler that is listening to the preview invoke event that is fired by + the trigger. Setting PreviewInvokeEventArgs.Cancelling to True will + cancel the invocation. + + The trigger base object. + An object of type PreviewInvokeEventArgs where e.Cancelling can be set to True. + + + + Gets or sets the IConditon object on behavior. + + The name of the condition to change. + + + + Helper class for managing binding expressions on dependency objects. + + + + + Ensure that all DP on an action with binding expressions are + up to date. DataTrigger fires during data binding phase. Since + actions are children of the trigger, any bindings on the action + may not be up-to-date. This routine is called before the action + is invoked in order to guarantee that all bindings are up-to-date + with the most current data. + + + + + Ensures that all binding expression on actions are up to date + + + + + This helper function ensures that, if a dependency property on a dependency object + has a binding expression, the binding expression is up-to-date. + + + + + + + Toggles between two states based on a conditional statement. + + + + + Called after the behavior is attached to an AssociatedObject. + + Override this to hook up functionality to the AssociatedObject. + + + + A helper function to take the place of FrameworkElement.IsLoaded, as this property isn't available in Silverlight. + + The element of interest. + Returns true if the element has been loaded; otherwise, returns false. + + + + Gets or sets the binding that produces the property value of the data object. This is a dependency property. + + + + + Gets or sets the value to be compared with the property value of the data object. This is a dependency property. + + + + + Gets or sets the name of the visual state to transition to when the condition is met. This is a dependency property. + + + + + Gets or sets the name of the visual state to transition to when the condition is not met. This is a dependency property. + + + + + Trigger designed to be bound to a data store property. Fires when the property changes. + + + + + Represents a trigger that performs actions when the bound data have changed. + + UA_REVIEW:chabiss + + + + Called when the binding property has changed. + UA_REVIEW:chabiss + + argument. + + + + Called after the trigger is attached to an AssociatedObject. + UA_REVIEW:chabiss + + + + + Called when the trigger is being detached from its AssociatedObject, but before it has actually occurred. + UA_REVIEW:chabiss + + + + + A binding object that the trigger will listen to, and that causes the trigger to fire when it changes. + + UA_REVIEW:chabiss + + + + Represents a trigger that performs actions when the bound data meets a specified condition. + + + + + Called when the binding property has changed. + UA_REVIEW:chabiss + + argument. + + + + Gets or sets the value to be compared with the property value of the data object. This is a dependency property. + + + + + Gets or sets the type of comparison to be performed between the specified values. This is a dependency property. + + + + + ExtendedVisualStateManager is a custom VisualStateManager that can smooth out the animation of layout properties. + With this custom VisualStateManager, states can include changes to properties like Grid.Column, can change element heights to or from Auto, and so on. + These changes will be smoothed out over time using the GeneratedDuration and GeneratedEasingFunction of the appropriate transition. + See the "VisualStateManager overrides" region below for a general description of the algorithm. + + + + + A VisualStateGroup that can use FluidLayout or not. + + + + + Visibility is shadowed by a custom attached property at runtime. + + + + + A VisualStateGroup keeps a list of these original values in an attached property. + + + + + For every state, the layout-specific properties get extracted and then are attached to the state. These properties are removed from the state itself. + + + + + Remember the current state. + + + + + The TransitionEffect to use when the state changes. + + + + + The TransitionEffectStoryboard in use during the state change. + + + + + The cached background in use during the state change. + + + + + The cached background in use during the state change. + + + + + The cached background in use during the state change. + + + + + This is the set of elements that are currently in motion. + + + + + This is the storyboard that is animating the transition. + + + + + This list contains all the known layout properties. + + + + + Stop the animation and replace the layout changes that were made to support that animation. + + + + + Locate the transition that VisualStateManager will use to animate the change, so that the layout animation can match the duration and easing. + + The group in which the transition is taking place. + The state that you are coming from. + The state you are going to. + The transition + + + + Remove all layout-affecting properties from the Storyboard for the state and cache them in an attached property. + + The state you are moving to. + A Storyboard containing the layout properties in that state. + + + + The set of target elements is the set of all elements that might have moved in a layout transition. This set is the closure of: + - Elements with layout properties animated in the state. + - Siblings of elements in the set. + - Parents of elements in the set. + + Subsequent code will check these rectangles both before and after the layout change. + + The control whose layout is changing state. + The storyboard containing the layout changes. + Any previous values from previous state navigations that might be reverted. + The set of elements currently in motion, if there is a state change transition ongoing. + The full set of elements whose layout may have changed. + + + + Gets a set of rectangles for all the elements in the target list. + + The set of elements to consider. + The set of elements currently in motion. + A Dictionary mapping elements to their Rects. + + + + Get the layout rectangle of an element, by getting the layout slot and then computing which portion of the slot is being used. + + The element whose layout Rect will be retrieved. + The layout Rect of that element. + + + + Get the opacities of elements at the time of the state change, instead of visibilities, because the state change may be in process and the current value is the most important. + + The control whose state is changing. + The storyboard with the layout properties. + The set of original values. + + + + + Go through the layout Storyboard and set all the properties by using SetValue to enable calling UpdateLayout without + ticking the timeline, which would cause a render. + All values that are overwritten will be stored in the collection of OriginalValueRecords so that they can be replaced later. + + The control whose state is changing. + The Storyboard holding the layout properties. + The store of original values. + + + + Take all the elements that will be moving as a result of the layout animation, and wrap them in Canvas panels so that + they do not affect their sibling elements. + + The set of elements that will be moving. + + + + Take all the elements that have been moving as a result of the layout animation, and unwrap them from their Canvas panels. + + The set of elements that have been moving. + + + + Copy the layout properties from the source element to the target element, clearing them from the source. + + The source of the layout properties. + The destination of the layout properties. + + + + Create the actual Storyboard that will be used to animate the transition. Use all previously calculated results. + + The duration of the animation. + The easing function to be used in the animation. + The set of elements that will be moving. + The old opacities of the elements whose visibility properties are changing. + The Storyboard. + + + + OriginalValueRecord remembers the original value of a property that was changed in a state. + + + + + This enumerated type indicates whether a FluidMoveBehavior applies to the element to which it is attached, or to the children of that element. + "Self" is useful when there is a single element that should behave in a special manner; "Children" is useful when the same behavior should apply to all + children of a WrapPanel or to the ItemsHost panel of an ItemsControl. + + + + + This enumerated type indicates whether an element is identified by itself, or by its DataContext. + DataContext identification allows movement from one data-driven location to another. + + + + + Dependency property for the scope of the behavior. See FluidMoveScope for more details. + + + + + Dependency property for the active state of the behavior. + + + + + Dependency property that provides the ability to use the element as its own tag, or the binding on the element. + + + + + Dependency property for the extra path to add to the binding when UsaBindingAsTag is true. + + + + + Identity tag used to detect element motion between containers. + + + + + Indicates whether the behavior applies just to this element, or to all children of the element (if the element is a Panel). + + + + + Indicates whether the behavior is currently active. + + + + + Indicates whether to use the element as its own tag, or to use the binding on the element as the tag. + + + + + Extra path to add to the binding when TagType is specified. + + + + + Private structure that stores all relevant data pertaining to a tagged item. + + + + + Behavior that watches an element (or a set of elements) for layout changes, and moves the element smoothly to the new position when needed. + This behavior does not animate the size or visibility of an element; it only animates the offset of that element within its parent container. + + + + + Dependency property for the duration of the move. + + + + + Dependency property for the tag type to use just before the object is loaded. + + + + + Dependency property for the extra path to add to the binding when UsaBindingAsTag is true. + + + + + Identity tag used to detect element motion between containers. + + + + + Dependency property for the FloatAbove flag. + + + + + Dependency property for the EasingFunction to use for the horizontal component of the move. + + + + + Dependency property for the EasingFunction to use for the vertical component of the move. + + + + + Remember the popup/adorner being used, in case of element motion between containers when FloatAbove is true. + + + + + Opacity cache used when floating a Popup. + + + + + Marks the animation transform. + + + + + The duration of the move. + + + + + Spawning point for this item. + + + + + Extra path to add to the binding when TagType is specified. + + + + + Flag that says whether elements are allowed to float above their containers (in a Popup or Adorner) when changing containers. + + + + + EasingFunction to use for the horizontal component of the move. + + + + + EasingFunction to use for the vertical component of the move. + + + + + Simple helper class to allow any UIElements to be used as an Adorner. + + + + + An action that will transition a FrameworkElement to a specified VisualState when invoked. + + + If the TargetName property is set, this action will attempt to change the state of the targeted element. If not, it walks + the element tree in an attempt to locate an alternative target that defines states. ControlTemplate and UserControl are + two common possibilities. + + + + + Called when the target changes. If the TargetName property isn't set, this action has custom behavior. + + + + Could not locate an appropriate FrameworkElement with states. + + + + This method is called when some criteria is met and the action is invoked. + + + Could not change the target to the specified StateName. + + + + Determines whether or not to use a VisualTransition to transition between states. + + + + + The name of the VisualState. + + + + + A Trigger that is triggered by a keyboard event. If the target Key and Modifiers are detected, it fires. + + + + + The key that must be pressed for the trigger to fire. + + + + + The modifiers that must be active for the trigger to fire (the default is no modifiers pressed). + + + + + If true, the Trigger only listens to its trigger Source object, which means that element must have focus for the trigger to fire. + If false, the Trigger listens at the root, so any unhandled KeyDown/Up messages will be caught. + + + + + Determines whether or not to listen to the KeyDown or KeyUp event. + + + + + An action that will launch a process to open a file or Uri. For files, this action will launch the default program + for the given file extension. A Uri will open in a web browser. + + + + + This method is called when some criteria is met and the action is invoked. + + + + + + The file or Uri to open. + + + + + Repositions the attached element in response to mouse drag gestures on the element. + + + + + Dependency property for the X position of the dragged element, relative to the left of the root element. + + + + + Dependency property for the Y position of the dragged element, relative to the top of the root element. + + + + + Dependency property for the ConstrainToParentBounds property. If true, the dragged element will be constrained to stay within the bounds of its parent container. + + + + + Attempts to update the position of the associated element to the specified coordinates. + + The desired position of the element in root coordinates. + + + + Applies a relative position translation to the associated element. + + The X component of the desired translation in root coordinates. + The Y component of the desired translation in root coordinates. + + + + Applies the given translation to the RenderTransform of the associated element. + + The X component of the translation in parent coordinates. + The Y component of the translation in parent coordinates. + + + + Does a recursive deep copy of the specified transform. + + The transform to clone. + A deep copy of the specified transform, or null if the specified transform is null. + Thrown if the type of the Transform is not recognized. + + + + Updates the X and Y properties based on the current rendered position of the associated element. + + + + + Check if one Rect is contained by another. + + The containing Rect. + The contained Rect. + True if rect1 contains rect2; otherwise, False. + + + + Transforms as vector. + + The transform. + The X component of the vector. + The Y component of the vector. + A point containing the values of X and Y transformed by transform as a vector. + + + + Gets the transform offset. + + The transform. + The offset of the transform. + + + + Called after the behavior is attached to an AssociatedObject. + + Override this to hook up functionality to the AssociatedObject. + + + + Called when the behavior is getting detached from its AssociatedObject, but before it has actually occurred. + + Override this to unhook functionality from the AssociatedObject. + + + + Occurs when a drag gesture is initiated. + + + + + Occurs when a drag gesture update is processed. + + + + + Occurs when a drag gesture is finished. + + + + + Gets or sets the X position of the dragged element, relative to the left of the root element. This is a dependency property. + + + + + Gets or sets the Y position of the dragged element, relative to the top of the root element. This is a dependency property. + + + + + Gets or sets a value indicating whether the dragged element is constrained to stay within the bounds of its parent container. This is a dependency property. + + + True if the dragged element should be constrained to its parents bounds; otherwise, False. + + + + + Gets the on-screen position of the associated element in root coordinates. + + The on-screen position of the associated element in root coordinates. + + + + Gets the element bounds in element coordinates. + + The element bounds in element coordinates. + + + + Gets the parent element of the associated object. + + The parent element of the associated object. + + + + Gets the root element of the scene in which the associated object is located. + + The root element of the scene in which the associated object is located. + + + + Gets and sets the RenderTransform of the associated element. + + + + + An action that will play a sound to completion. + + + This action is intended for use with short sound effects that don't need to be stopped or controlled. If you're trying + to create a music player or game, it may not meet your needs. + + + + + Initializes a new instance of the class. + + + + + When the action is invoked, this method is used to customize the dynamically created MediaElement. + + + This method may be useful for Action authors who wish to extend PlaySoundAction. If you want to control the + MediaElement Balance property, you could inherit from PlaySoundAction and override this method. + + + + + + This method is called when some criteria are met and the action should be invoked. + + + Each invocation of the Action plays a new sound. Although the implementation is subject-to-change, the caller should + anticipate that this will create a new MediaElement that will be cleaned up when the sound completes or if the media + fails to play. + + + + + + A Uri defining the location of the sound file. This is used to set the source property of the MediaElement. This is a dependency property. + + + The sound can be any file format supported by MediaElement. In the case of a video, it will play only the + audio portion. + + + + + Control the volume of the sound. This is used to set the Volume property of the MediaElement. This is a dependency property. + + + + + An action that will remove the targeted element from the tree when invoked. + + + This action may fail. The action understands how to remove elements from common parents but not from custom collections or direct manipulation + of the visual tree. + + + + + An action that will change the value of a property from a data store object. + This class is identical to ChangePropertyAction. The only difference is that the data store picker is loaded + for this action. + + + + + An abstract class that provides the ability to target a Storyboard. + + + For action authors, this class provides a standard way to target a Storyboard. Design tools may choose to provide a + special editing experience for classes that inherit from this action, thereby improving the designer experience. + + + + + This method is called when the Storyboard property is changed. + + + + + + The targeted Storyboard. This is a dependency property. + + + + + An action that will change the state of a targeted storyboard when invoked. + + + + + This method is called when some criteria is met and the action should be invoked. This method will attempt to + change the targeted storyboard in a way defined by the ControlStoryboardOption. + + + + + + An abstract class that provides the ability to target a Storyboard. + + + For Trigger authors, this class provides a standard way to target a Storyboard. Design tools may choose to provide a + special editing experience for classes that inherit from this trigger, thereby improving the designer experience. + + + + + This method is called when the Storyboard property is changed. + + + + + The targeted Storyboard. This is a dependency property. + + + + + A trigger that listens for the completion of a Storyboard. + + + + + Initializes a new instance of the class. + + + + + A trigger that is triggered by a specified event occurring on its source and fires after a delay when that event is fired. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of milliseconds to wait between ticks. This is a dependency property. + + + + + Gets or sets the total number of ticks to be fired before the trigger is finished. This is a dependency property. + + + + + Defines a transition effect shader that transitions from one visual to another visual + using an interpolated value between 0 and 1. + + + + + Brush-valued properties that turn into sampler-properties in the shader. + Represents the image present in the final state of the transition. + + + + + Brush-valued properties that turn into sampler-properties in the shader. + Represents the image present in the initial state of the transition. + + + + + A Dependency property as the backing store for Progress. + Also used to represent the state of a transition from start to finish (range between 0 and 1). + + + + + Creates a modifiable clone (deep copy) of the using its current values. + + + + + Makes a deep copy of the transition effect. Implements CloneCurrentValue in Silverlight. + + A clone of current instance of transition effect. + + + + Updates the shader's variables to the default values. + + + + + Gets or sets the Input variable within the shader. + + + + + Gets or sets the OldImage variable within the shader. + + + + + Gets or sets the Progress variable within the shader. + + + + + Allows the user to use common touch gestures to translate, zoom, and rotate the attached object. + + + + + Called after the behavior is attached to an AssociatedObject. + + Override this to hook up functionality to the AssociatedObject. + + + + Called when the behavior is getting detached from its AssociatedObject, but before it has actually occurred. + + Override this to unhook functionality from the AssociatedObject. + + + + Gets or sets a value specifying which zooming and translation variants to support. + + + + + Gets or sets a number describing the rate at which the translation will decrease. + + + + + Gets or sets a number describing the rate at which the rotation will decrease. + + + + + Gets or sets the value indicating whether the zoom and translate position of the attached object is limited by the bounds of the parent object. + + + + + Gets or sets a number indicating the minimum zoom value allowed. + + + + + Gets or sets a number indicating the maximum zoom value allowed. + + + + + This class provides various platform agnostic standard operations for working with VisualStateManager. + + + + + Transitions the control between two states. + + The element to transition between states. + The state to transition to. + True to use a System.Windows.VisualTransition to transition between states; otherwise, false. + True if the control successfully transitioned to the new state; otherwise, false. + Control is null. + StateName is null. + + + + Gets the value of the VisualStateManager.VisualStateGroups attached property. + + The element from which to get the VisualStateManager.VisualStateGroups. + + + + + Find the nearest parent which contains visual states. + + The element from which to find the nearest stateful control. + The nearest stateful control if True; else null. + True if a parent contains visual states; else False. + + + + 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 Could not find method named '{0}' on object of type '{1}' that matches the expected signature.. + + + + + Looks up a localized string similar to More than one potential addition operator was found on type '{0}'.. + + + + + Looks up a localized string similar to Cannot animate a property change on a type '{0}' Target. Property changes can only be animated on types derived from DependencyObject.. + + + + + Looks up a localized string similar to Cannot find a property named "{0}" on type "{1}".. + + + + + Looks up a localized string similar to The Increment property cannot be set to True if the Duration property is set.. + + + + + Looks up a localized string similar to The '{0}' property cannot be incremented because its value cannot be read.. + + + + + Looks up a localized string similar to Cannot assign value of type "{0}" to property "{1}" of type "{2}". The "{1}" property can be assigned only values of type "{2}".. + + + + + Looks up a localized string similar to Property "{0}" defined by type "{1}" does not expose a set method and therefore cannot be modified.. + + + + + Looks up a localized string similar to Cannot find state named '{0}' on type '{1}'. Ensure that the state exists and that it can be accessed from this context.. + + + + + Looks up a localized string similar to Target {0} does not define any VisualStateGroups. . + + + + + Looks up a localized string similar to LeftOperand of type "{0}" cannot be used with operator "{1}".. + + + + + Looks up a localized string similar to LeftOperand of type "{1}" and RightOperand of type "{0}" cannot be used with operator "{2}".. + + + + + Looks up a localized string similar to RightOperand of type "{0}" cannot be used with operator "{1}".. + + + + + Looks up a localized string similar to The target of the RemoveElementAction is not supported.. + + + + diff --git a/bin/Release/System.Windows.Interactivity.dll b/bin/Release/System.Windows.Interactivity.dll new file mode 100644 index 0000000000000000000000000000000000000000..0419e95f0913fa6873b58a225747057ee571a715 GIT binary patch literal 39936 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 literal 0 HcmV?d00001 diff --git a/bin/Release/System.Windows.Interactivity.xml b/bin/Release/System.Windows.Interactivity.xml new file mode 100644 index 0000000..10cdad6 --- /dev/null +++ b/bin/Release/System.Windows.Interactivity.xml @@ -0,0 +1,1072 @@ + + + + System.Windows.Interactivity + + + + + Represents a collection of IAttachedObject with a shared AssociatedObject and provides change notifications to its contents when that AssociatedObject changes. + + + + + An interface for an object that can be attached to another object. + + + + + Attaches to the specified object. + + The object to attach to. + + + + Detaches this instance from its associated object. + + + + + Gets the associated object. + + The associated object. + Represents the object the instance is attached to. + + + + Initializes a new instance of the class. + + Internal, because this should not be inherited outside this assembly. + + + + Called immediately after the collection is attached to an AssociatedObject. + + + + + Called when the collection is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Called when a new item is added to the collection. + + The new item. + + + + Called when an item is removed from the collection. + + The removed item. + + + Cannot add the instance to a collection more than once. + + + + Attaches to the specified object. + + The object to attach to. + The IAttachedObject is already attached to a different object. + + + + Detaches this instance from its associated object. + + + + + The object on which the collection is hosted. + + + + + Gets the associated object. + + The associated object. + + + + Encapsulates state information and zero or more ICommands into an attachable object. + + The type the can be attached to. + + Behavior is the base class for providing attachable state and commands to an object. + The types the Behavior can be attached to can be controlled by the generic parameter. + Override OnAttached() and OnDetaching() methods to hook and unhook any necessary handlers + from the AssociatedObject. + + + + + Encapsulates state information and zero or more ICommands into an attachable object. + + This is an infrastructure class. Behavior authors should derive from Behavior<T> instead of from this class. + + + + Called after the behavior is attached to an AssociatedObject. + + Override this to hook up functionality to the AssociatedObject. + + + + Called when the behavior is being detached from its AssociatedObject, but before it has actually occurred. + + Override this to unhook functionality from the AssociatedObject. + + + + Attaches to the specified object. + + The object to attach to. + The Behavior is already hosted on a different element. + dependencyObject does not satisfy the Behavior type constraint. + + + + Detaches this instance from its associated object. + + + + + The type to which this behavior can be attached. + + + + + Gets the object to which this behavior is attached. + + + + + Gets the associated object. + + The associated object. + + + + Initializes a new instance of the class. + + + + + Gets the object to which this is attached. + + + + + Represents a collection of behaviors with a shared AssociatedObject and provides change notifications to its contents when that AssociatedObject changes. + + + + + Initializes a new instance of the class. + + Internal, because this should not be inherited outside this assembly. + + + + Called immediately after the collection is attached to an AssociatedObject. + + + + + Called when the collection is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Called when a new item is added to the collection. + + The new item. + + + + Called when an item is removed from the collection. + + The removed item. + + + + Creates a new instance of the BehaviorCollection. + + The new instance. + + + + Enumerates possible values for reusable property value editors. + + + + + Uses the element picker, if supported, to edit this property at design time. + + + + + Uses the storyboard picker, if supported, to edit this property at design time. + + + + + Uses the state picker, if supported, to edit this property at design time. + + + + + Uses the element-binding picker, if supported, to edit this property at design time. + + + + + Uses the property-binding picker, if supported, to edit this property at design time. + + + + + Associates the given editor type with the property on which the CustomPropertyValueEditor is applied. + + Use this attribute to get improved design-time editing for properties that denote element (by name), storyboards, or states (by name). + + + + Initializes a new instance of the class. + + The custom property value editor. + + + + Gets or sets the custom property value editor. + + The custom property value editor. + + + + Provides design tools information about what to instantiate for a given action or command. + + + + + Initializes a new instance of the class. + + The type this attribute applies to. + The type of to instantiate. + A single argument for the specified . + is not derived from TriggerBase. + This constructor is useful if the specifed has a single argument. The + resulting code will be CLS compliant. + + + + Initializes a new instance of the class. + + The type this attribute applies to. + The type of to instantiate. + The constructor arguments for the specified . + is not derived from TriggerBase. + + + + Instantiates this instance. + + The specified by the DefaultTriggerAttribute. + + + + Gets the type that this DefaultTriggerAttribute applies to. + + The type this DefaultTriggerAttribute applies to. + + + + Gets the type of the to instantiate. + + The type of the to instantiate. + + + + Gets the parameters to pass to the constructor. + + The parameters to pass to the constructor. + + + + This method will use the VisualTreeHelper.GetParent method to do a depth first walk up + the visual tree and return all ancestors of the specified object, including the object itself. + + The object in the visual tree to find ancestors of. + Returns itself an all ancestors in the visual tree. + + + + EventObserver is designed to help manage event handlers by detatching when disposed. Creating this object will also attach in the constructor. + + + + + Creates an instance of EventObserver and attaches to the supplied event on the supplied target. Call dispose to detach. + + The event to attach and detach from. + The target object the event is defined on. Null if the method is static. + The delegate to attach to the event. + + + + Detaches the handler from the event. + + + + + A trigger that listens for a specified event on its source and fires when that event is fired. + + + + + Represents a trigger that can listen to an element other than its AssociatedObject. + + The type that this trigger can be associated with. + + EventTriggerBase extends TriggerBase to add knowledge of another object than the one it is attached to. + This allows a user to attach a Trigger/Action pair to one element and invoke the Action in response to a + change in another object somewhere else. Override OnSourceChanged to hook or unhook handlers on the source + element, and OnAttached/OnDetaching for the associated element. The type of the Source element can be + constrained by the generic type parameter. If you need control over the type of the + AssociatedObject, set a TypeConstraintAttribute on your derived type. + + + + + Represents a trigger that can listen to an object other than its AssociatedObject. + + This is an infrastructure class. Trigger authors should derive from EventTriggerBase<T> instead of this class. + + + + Represents an object that can invoke Actions conditionally. + + This is an infrastructure class. Trigger authors should derive from Trigger<T> instead of this class. + + + + Invoke all actions associated with this trigger. + + Derived classes should call this to fire the trigger. + + + + Called after the trigger is attached to an AssociatedObject. + + + + + Called when the trigger is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Creates a new instance of the TriggerBase derived class. + + The new instance. + + + + Attaches to the specified object. + + The object to attach to. + Cannot host the same trigger on more than one object at a time. + dependencyObject does not satisfy the trigger type constraint. + + + + Detaches this instance from its associated object. + + + + + Gets the object to which the trigger is attached. + + The associated object. + + + + Gets the type constraint of the associated object. + + The associated object type constraint. + + + + Gets the actions associated with this trigger. + + The actions associated with this trigger. + + + + Event handler for registering to PreviewInvoke. + + + + + Gets the associated object. + + The associated object. + + + + Specifies the name of the Event this EventTriggerBase is listening for. + + + + + + Called when the event associated with this EventTriggerBase is fired. By default, this will invoke all actions on the trigger. + + The instance containing the event data. + Override this to provide more granular control over when actions associated with this trigger will be invoked. + + + + Called when the source changes. + + The old source. + The new source. + This function should be overridden in derived classes to hook functionality to and unhook functionality from the changing source objects. + + + + Called after the trigger is attached to an AssociatedObject. + + + + + Called when the trigger is being detached from its AssociatedObject, but before it has actually occurred. + + + + Could not find eventName on the Target. + + + + Gets the type constraint of the associated object. + + The associated object type constraint. + Define a TypeConstraintAttribute on a derived type to constrain the types it may be attached to. + + + + Gets the source type constraint. + + The source type constraint. + + + + Gets or sets the target object. If TargetObject is not set, the target will look for the object specified by TargetName. If an element referred to by TargetName cannot be found, the target will default to the AssociatedObject. This is a dependency property. + + The target object. + + + + Gets or sets the name of the element this EventTriggerBase listens for as a source. If the name is not set or cannot be resolved, the AssociatedObject will be used. This is a dependency property. + + The name of the source element. + + + + Gets the resolved source. If is not set or cannot be resolved, defaults to AssociatedObject. + + The resolved source object. + In general, this property should be used in place of AssociatedObject in derived classes. + The element pointed to by does not satisify the type constraint. + + + + Initializes a new instance of the class. + + + + + Called when the source property changes. + + Override this to hook functionality to and unhook functionality from the specified source, rather than the AssociatedObject. + The old source. + The new source. + + + + Gets the resolved source. If is not set or cannot be resolved, defaults to AssociatedObject. + + The resolved source object. + In general, this property should be used in place of AssociatedObject in derived classes. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the event. + + + + Gets or sets the name of the event to listen for. This is a dependency property. + + The name of the event. + + + + Static class that owns the Triggers and Behaviors attached properties. Handles propagation of AssociatedObject change notifications. + + + + + This property is used as the internal backing store for the public Triggers attached property. + + + This property is not exposed publicly. This forces clients to use the GetTriggers and SetTriggers methods to access the + collection, ensuring the collection exists and is set before it is used. + + + + + This property is used as the internal backing store for the public Behaviors attached property. + + + This property is not exposed publicly. This forces clients to use the GetBehaviors and SetBehaviors methods to access the + collection, ensuring the collection exists and is set before it is used. + + + + + Gets the TriggerCollection containing the triggers associated with the specified object. + + The object from which to retrieve the triggers. + A TriggerCollection containing the triggers associated with the specified object. + + + + Gets the associated with a specified object. + + The object from which to retrieve the . + A containing the behaviors associated with the specified object. + + + Cannot host the same BehaviorCollection on more than one object at a time. + + + Cannot host the same TriggerCollection on more than one object at a time. + + + + A helper function to take the place of FrameworkElement.IsLoaded, as this property is not available in Silverlight. + + The element of interest. + True if the element has been loaded; otherwise, False. + + + + Gets or sets a value indicating whether to run as if in design mode. + + + True if [should run in design mode]; otherwise, False. + + Not to be used outside unit tests. + + + + Executes a specified ICommand when invoked. + + + + + Represents an attachable object that encapsulates a unit of functionality. + + The type to which this action can be attached. + + + + Represents an attachable object that encapsulates a unit of functionality. + + This is an infrastructure class. Action authors should derive from TriggerAction<T> instead of this class. + + + + Attempts to invoke the action. + + The parameter to the action. If the action does not require a parameter, the parameter may be set to a null reference. + + + + Invokes the action. + + The parameter to the action. If the action does not require a parameter, the parameter may be set to a null reference. + + + + Called after the action is attached to an AssociatedObject. + + + + + Called when the action is being detached from its AssociatedObject, but before it has actually occurred. + + + + + When implemented in a derived class, creates a new instance of the derived class. + + The new instance. + + + + Attaches to the specified object. + + The object to attach to. + Cannot host the same TriggerAction on more than one object at a time. + dependencyObject does not satisfy the TriggerAction type constraint. + + + + Detaches this instance from its associated object. + + + + + Gets or sets a value indicating whether this action will run when invoked. This is a dependency property. + + + True if this action will be run when invoked; otherwise, False. + + + + + Gets the object to which this action is attached. + + The associated object. + + + + Gets the associated object type constraint. + + The associated object type constraint. + + + + Gets or sets a value indicating whether this instance is attached. + + True if this instance is attached; otherwise, False. + + + + Gets the associated object. + + The associated object. + + + + Initializes a new instance of the class. + + + + + Gets the object to which this is attached. + + The associated object. + + + + Gets the associated object type constraint. + + The associated object type constraint. + + + + Invokes the action. + + The parameter to the action. If the action does not require a parameter, the parameter may be set to a null reference. + + + + Gets or sets the name of the command this action should invoke. + + The name of the command this action should invoke. + This property will be superseded by the Command property if both are set. + + + + Gets or sets the command this action should invoke. This is a dependency property. + + The command to execute. + This property will take precedence over the CommandName property if both are set. + + + + Gets or sets the command parameter. This is a dependency property. + + The command parameter. + This is the value passed to ICommand.CanExecute and ICommand.Execute. + + + + Provides data about which objects were affected when resolving a name change. + + + + + Helper class to handle the logic of resolving a TargetName into a Target element + based on the context provided by a host element. + + + + + Attempts to update the resolved object from the name within the context of the namescope reference element. + + The old resolved object. + + Resets the existing target and attempts to resolve the current TargetName from the + context of the current Host. If it cannot resolve from the context of the Host, it will + continue up the visual tree until it resolves. If it has not resolved it when it reaches + the root, it will set the Target to null and write a warning message to Debug output. + + + + + Occurs when the resolved element has changed. + + + + + Gets or sets the name of the element to attempt to resolve. + + The name to attempt to resolve. + + + + The resolved object. Will return the reference element if TargetName is null or empty, or if a resolve has not been attempted. + + + + + Gets or sets the reference element from which to perform the name resolution. + + The reference element. + + + + Gets or sets a value indicating whether the reference element load is pending. + + + True if [pending reference element load]; otherwise, False. + + + If the Host has not been loaded, the name will not be resolved. + In that case, delay the resolution and track that fact with this property. + + + + + Represents an action that can be targeted to affect an object other than its AssociatedObject. + + The type constraint on the target. + + TargetedTriggerAction extends TriggerAction to add knowledge of another element than the one it is attached to. + This allows a user to invoke the action on an element other than the one it is attached to in response to a + trigger firing. Override OnTargetChanged to hook or unhook handlers on the target element, and OnAttached/OnDetaching + for the associated element. The type of the Target element can be constrained by the generic type parameter. If + you need control over the type of the AssociatedObject, set a TypeConstraintAttribute on your derived type. + + + + + Represents an action that can be targeted to affect an object other than its AssociatedObject. + + This is an infrastructure class. Action authors should derive from TargetedTriggerAction<T> instead of this class. + + + + Called when the target changes. + + The old target. + The new target. + This function should be overriden in derived classes to hook and unhook functionality from the changing source objects. + + + + Called after the action is attached to an AssociatedObject. + + + + + Called when the action is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Gets or sets the target object. If TargetObject is not set, the target will look for the object specified by TargetName. If an element referred to by TargetName cannot be found, the target will default to the AssociatedObject. This is a dependency property. + + The target object. + + + + Gets or sets the name of the object this action targets. If Target is set, this property is ignored. If Target is not set and TargetName is not set or cannot be resolved, the target will default to the AssociatedObject. This is a dependency property. + + The name of the target object. + + + + Gets the target object. If TargetObject is set, returns TargetObject. Else, if TargetName is not set or cannot be resolved, defaults to the AssociatedObject. + + The target object. + In general, this property should be used in place of AssociatedObject in derived classes. + The Target element does not satisfy the type constraint. + + + + Gets the associated object type constraint. + + The associated object type constraint. + Define a TypeConstraintAttribute on a derived type to constrain the types it may be attached to. + + + + Gets the target type constraint. + + The target type constraint. + + + + Initializes a new instance of the class. + + + + + Called when the target property changes. + + Override this to hook and unhook functionality on the specified Target, rather than the AssociatedObject. + The old target. + The new target. + + + + Gets the target object. If TargetName is not set or cannot be resolved, defaults to the AssociatedObject. + + The target. + In general, this property should be used in place of AssociatedObject in derived classes. + + + + Represents a collection of actions with a shared AssociatedObject and provides change notifications to its contents when that AssociatedObject changes. + + + + + Initializes a new instance of the class. + + Internal, because this should not be inherited outside this assembly. + + + + Called immediately after the collection is attached to an AssociatedObject. + + + + + Called when the collection is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Called when a new item is added to the collection. + + The new item. + + + + Called when an item is removed from the collection. + + The removed item. + + + + Creates a new instance of the TriggerActionCollection. + + The new instance. + + + + Represents an object that can invoke actions conditionally. + + The type to which this trigger can be attached. + + TriggerBase is the base class for controlling actions. Override OnAttached() and + OnDetaching() to hook and unhook handlers on the AssociatedObject. You may + constrain the types that a derived TriggerBase may be attached to by specifying + the generic parameter. Call InvokeActions() to fire all Actions associated with + this TriggerBase. + + + + + Initializes a new instance of the class. + + + + + Gets the object to which the trigger is attached. + + The associated object. + + + + Gets the type constraint of the associated object. + + The associated object type constraint. + + + + Argument passed to PreviewInvoke event. Assigning Cancelling to True will cancel the invoking of the trigger. + + This is an infrastructure class. Behavior attached to a trigger base object can add its behavior as a listener to TriggerBase.PreviewInvoke. + + + + Represents a collection of triggers with a shared AssociatedObject and provides change notifications to its contents when that AssociatedObject changes. + + + + + Initializes a new instance of the class. + + Internal, because this should not be inherited outside this assembly. + + + + Called immediately after the collection is attached to an AssociatedObject. + + + + + Called when the collection is being detached from its AssociatedObject, but before it has actually occurred. + + + + + Called when a new item is added to the collection. + + The new item. + + + + Called when an item is removed from the collection. + + The removed item. + + + + Creates a new instance of the . + + The new instance. + + + + Specifies type constraints on the AssociatedObject of TargetedTriggerAction and EventTriggerBase. + + + + + Initializes a new instance of the class. + + The constraint type. + + + + Gets the constraint type. + + The constraint type. + + + + 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 Cannot set the same BehaviorCollection on multiple objects.. + + + + + Looks up a localized string similar to An instance of a Behavior cannot be attached to more than one object at a time.. + + + + + Looks up a localized string similar to Cannot host an instance of a TriggerAction in multiple TriggerCollections simultaneously. Remove it from one TriggerCollection before adding it to another.. + + + + + Looks up a localized string similar to Cannot set the same TriggerCollection on multiple objects.. + + + + + Looks up a localized string similar to An instance of a trigger cannot be attached to more than one object at a time.. + + + + + Looks up a localized string similar to The command "{0}" does not exist or is not publicly exposed on {1}.. + + + + + Looks up a localized string similar to "{0}" is not a valid type for the TriggerType parameter. Make sure "{0}" derives from TriggerBase.. + + + + + Looks up a localized string similar to Cannot add the same instance of "{0}" to a "{1}" more than once.. + + + + + Looks up a localized string similar to The event "{0}" on type "{1}" has an incompatible signature. Make sure the event is public and satisfies the EventHandler delegate.. + + + + + Looks up a localized string similar to Cannot find an event named "{0}" on type "{1}".. + + + + + Looks up a localized string similar to An object of type "{0}" cannot have a {3} property of type "{1}". Instances of type "{0}" can have only a {3} property of type "{2}".. + + + + + Looks up a localized string similar to Cannot attach type "{0}" to type "{1}". Instances of type "{0}" can only be attached to objects of type "{2}".. + + + + + Looks up a localized string similar to Unable to resolve TargetName "{0}".. + + + + diff --git a/bin/Release/de/Microsoft.Expression.Interactions.resources.dll b/bin/Release/de/Microsoft.Expression.Interactions.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..ec30f52cb9a354abe01e18120d1d56b67a0f4704 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/bin/Release/en/Microsoft.Expression.Interactions.resources.dll b/bin/Release/en/Microsoft.Expression.Interactions.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..0eca2657a962e46d08f8b5b59ec4b2bd2fbad20f GIT binary patch literal 7168 zcmeHLeQ*`k6+at;1Q7hfR3md-JlmZ})X~U&xcH z>4z4k4vMY8T3XXiN9vTSQ)NmSbxO4kwCc#zaXOBr)Q@VbRa%$cGOT?ZlH)ttyXP3}JZ2`MYM&!&9Cv-Kn)c zUE0-e`6B7LanDGInBh2XAfi%uDMwh2Xl(Bk3D=bR^yyRQW>`m>h+4IiNTv>6nU!{c zib|(xB}8YS2MITnI_XB3Gh{d zYl%K!BaBVGM5m1HJDRr0L08lzXkSqi^fOY_QN*C4@xC@gY>eW5pi=k6tt3~Bx z z`}cIO-S^hMcbf5J$x#zuYzh1Sq z9-Bv7u~VLp-A{K*R!qYLeVWf-*TO$m3le< z7K(`IyLa<7xl(�Z7&Wn)iz}8?Rm<|lOXiFhmU03s zA+ypuWx(q)BV)lxT_gW5Z8SIA_q;ybyLsxCr|syx4?(`8pt3Uzc!K-P(Qh3QXR!mw@`PeTa8=jEu>h9v4EDNOo7IvCK|*X zNy*$iruOkOD2^JZFE)U^0dnq$kcY`h)I3Z{j}lo&35r5|9L!mOk5LmpE62P&Gtnj>68!^+4vt6katLPQj}t?%0#$&fosEm3D;_%WWSKq4$L-|WURF&Lh}I7 zn1%4iGAP^)g`Uv~p+RPUq>f@aK7=6qXa$W0(Slvj0U-wbA*<;`n%#(fZZ;~3vQ5EfpgzknMM4JsF4{&yn&QIskMD?xha4^Z$=K}>)I_^LwHIv91HTKF!=a}X+c`Vz&S2? zhEXs_bQxY;2D*rhrt|r{2Vy(TC%z23oIGFPTWbwKfj-Yoh(?)|jwzj3x?QQSYZVzB z%2EX<i=5T4g!xWw241uC;Z+FfC5ZlL;tZfID~Y^kpCdS9EzPDJ&Qm^o=Q4gl&^k z6DL;C>Dmfr7cNU~3@T-guvS(MREWx$k@CSZ@Wp^(gL$6L!>K~ohH_^0dBHMN*)2NVa&ZY|o zV-?|GE>tqu7Fka<;4iS5C;QmZ@;c%SZ}nLcdJZ;(22!i$2kby&+&k~ox@dBII4*lE zmIca%6Xc-f!;qmcj97v4Bvvzq^O~RanSf)9nCtMtS=TB0c75EM--hX`D zd9}4=$3I`~hD+F80<|}lZfJGLggYRcY_&h?V#@7dLtbt_l}x%GUMM;aDfOKz>NUbw z3W?)~fodFotIDe?mT=D`yo!n5L!NUZ0uqq5BG2gzJj;puOtBrG0S?pVtm>qPQRk3m zPV=gkMm(QD`zofdx7{e(oY19BMhr8BMgDVM6@3C7sB&nNeP-+2=1jCV^E{d6(V3vF zS7nbX2UWRQmD^Er3TLriQ|K}}pH5fhELE1Oa)Bxwm3(7gFei4;u zI#p4#Ry>rCGnxBb`UlO^@T$)xji#c`Ig~#?1aVoLYo=_ujIyx?$GwQ-LHshWB@Fuu=Lk&r0%yJV|zDgPTag^~Vq3O<<;C!T5m&H<|X> zZO0ESw``e-hw_7MR?KsKw=d9}29qB4CUEF2*pZ&0l<*OSX2UGgMr?8P^duc>8jMM$ zTj*O|M%0$Nbn;ButS1RBX?SVT)+e_Gtt00?^y0cZA6!c%KfQiU_pIsz8)q6jU%Gqu z*8Q{AK63H)ZS$k|?z`!sWU3^(L^OM)YehH3 zzczc_rMKw>Ru^_nvy_>P^qRQ1eRbl3SY^CcpmjXTN&E%%%75eSi2X z?v_1&Z;rgWWsUjL+4nT$LjfS{hqqA~kqQUjB zm(^E|XqiS!a?2{_#}B-BNnZ40&bzQCeM58r0I3r^E$8i&7?>^%Ze5AZbFcAH^2p}$M1vomlyJdZ@Js+}nQ7cHQvclX)ju6n|+1D1bi zH0tp6#&<_o)e?J6l!WKoLRjZ6$Zv< zfws^d<9QxC?!`DcXgM2pE8ToZ;;ST1mH3{PBUhrVL0O~P>`>*H$Ez3G!+{2NfyVzi zHa%l~jxs%1n^!_dY{!>hxId#yA)mv{xRT7Pn#64aTPX|{N!fRFpP>2Rv;Z%|@%TP& zJ#yN}+`JJ=gI&NP7z_aw?L?HNk;P_|2UExE-vK_BH0$GUb$wvVZND7=+0 zVL|rRBm3jA$|sz^*mp+D80$eF=Rb>a^3-5gzH;PPJqjzOVbihmtChcnKFE9cM9NqI P#^5u5@`O?TFJ0o_*YSMP literal 0 HcmV?d00001 diff --git a/bin/Release/en/System.Windows.Interactivity.resources.dll b/bin/Release/en/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..a9aac8e8e2f1d5da23db7714265f6c463e667994 GIT binary patch literal 6656 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 QPkh->Cww6Hzr?_Q0RJp4f&c&j literal 0 HcmV?d00001 diff --git a/bin/Release/es/System.Windows.Interactivity.resources.dll b/bin/Release/es/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..bc65afbcb7030f62678f838a04eca856518146a7 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/bin/Release/fr/System.Windows.Interactivity.resources.dll b/bin/Release/fr/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..e4b0407fdc853a7eb4299104d5f7b40116aff3ee GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/bin/Release/ja/Microsoft.Expression.Interactions.resources.dll b/bin/Release/ja/Microsoft.Expression.Interactions.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ef3def862b3052c89ec52213adfa5bc6011afa0 GIT binary patch literal 7168 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 LVEa1#-y!f{q$w7I literal 0 HcmV?d00001 diff --git a/bin/Release/ja/System.Windows.Interactivity.resources.dll b/bin/Release/ja/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..94edbdcd826c7c0c014da09919d8a33b76b83757 GIT binary patch literal 7168 zcmeHLX>b(B74DUV4K{~y5r+_tSq{euVy#8UfXyMK6^C^oq(ul9L0avOq=nUvYGzg- zWAGkwKmx~rxlI6@`w~=P5+SZ~S*|jv7#xDDD5uIHX{`|8n79IVDuBuNW_G330jnaE ze(EzN$anHLY}M?PfmE9p(fp4R?b>QI+> zQU34(W7DaT#MlM`p=~K(tb1EpXZk|3=^A%e^ruG5GpXW275$+wPxFO*h24=wV64C- zE3zF#&9)>o9>>!MPee(A^(I+#Nnq4$Ex;hj>W3$yBr%p8(bb!TD+<{b!@95&BY+R) zcGIYgWeJRZ1)<|W_l9WqtD3-j_V?FM8Njp(k1MA_QN>bIwx~!R*)A&0t!&Ze5al?b zRIy94%UKvF$0o+GM+OOKETS(7aEe=T>(rq`z4*wkG;cdqQ} zuJfr-ZPoTdL`j((Q0QCf{ot(mK%#A;ZsQ_JK3hHDgvJ%kCnG+P5rQq$t zpUCVOC7PRMFb^oyE7L}-XqAFPVX15(_(afKc!{n+Vln7c=5|KygR8JXMM+00tnkJO zE65I+O?oK)oQJZq=*k{0h=0Ud&WWz{!67swKyu0EQv6YfIG6=JTF6Y)sPC2+;pgCA;ZY!%m zu!$^3d)vWLghvElv{3vGmSkI?f@0W-Xt0Hpk;+m{X-CTzP3(Kvba|<;SA^AS8*7uH zM8QaFk6O5+3I7(t=eDr7h9WW|Cc`6Iwiez@sHQy{O+^h3h=Ob|s+b^an}q-&+;yZ0 z6t}kaGB`+$%5qWDF`+{k9s4^_lKwCS)^}knb0%!DA!_KbvcewnLecD^)v!kR69(gc zkvb12q#?g)$I`~Nhq-?r53J+Kb-6ZmtSeAA_pk7RW`MBijAkUmYnoEObR! zXtGU#P;E^cKR9)H&DQXuRkmy!|LV){*EQ|Kw$THi^?K%nc41ib{q|79@tqB|)d0w> z0n{8P?Kb66gK_GN3cFNVW>cMoE>TdN z#cmsYE1HB1+kEuV6x3!hl$B_oj+p2W6iiZzoT8#}q>`ekpu0p_aELCk*rq}Z_if_- z6Ag9VhPveqb%z^Htm=qlG-Mdn(Rm3o$m|q7;VE)L2Mp9baN9~nM@N2iq{3*ZH()J8 z>{=*yaO}`l)R=%NZOBClh_AqU9yqAQ%CES8J3^sx#Zv7wY>RXo`Rz_W94d&Tu!@n| zvfV>R4fmaHr)DE<`R$Qz_*XZZ3k>&n^3;rKXFDT1JfjIjSQ$F0o59emoM5y#3a8~^ z?Y7Kx+bE7yNsy7LxXMMrYLkmaH51FHFGsueGSaDtb&&|F4 zjj_D{Z$7u&dbbx_n4I%UvVq~l6ovA>a!Q;M;uFkciP8nX$qe5Rj15`B*k`CKshy+B zPIs|_CbMEHrPo7d=CC?CP{Vw&bwMcIa* z%yOq%flN1)O0s!2mb%a`meB`*?w6HT(KOE%!PGffCWnjQ!li+rRh~0(&rWpQO$$uy zcU)MORm8m8*ig9OWo!)?9tRfG&(4`-rn?7n@#yW9mt)>2UOI5WOK*Q!HRh867h>wf zW5R%f*%Q{)uNDU`+x+3gK0ms4bmD>D=9;Jel<@J_1;*kL>-%0c@2NT2W7`ui47<3v zPCC=;&g@@b_#&|(ee8U=%>Tvk zXQmwdNF09iqpn?kxtHC*T}HU{q`Y1T_uAB zVAGMy=A+JJlhLMfGWPoS`WZkwYDAWPaWx|A$J(fVX3$7vv7lpsRLYeo>7v|&vb!SW z9aM(Wj?}V1%A=J~j-+3s(0K3I!?D|t)fr%up7m1B++Nb_8c#eMg_Fw6s4m1Co1P88 z+;Fb0=bUt)<{(?6{G3u*6Pp!E2PNDGDd>}hG)5Vmeyu~-Ju2oO<7>r!$Qrzus@XdE81MTI%?ti@9Z6eUmQa-X1SVQ zO0xxwjfBVXct+x#hPM*3W@;=kYgzdy=MCh>)&;s#{1AK)JC4_Tg?& z!()1glQMh4BfNIhqYH!wU#n=iysE`Y7W7N7$OCWHh}C#-y)c=L(_*Bx?6#3|uQ;Lk WkID~#01hG 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 mnLQzLq^IoOnR2T~W)i~t{Qd*! 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ǚD6b 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 literal 0 HcmV?d00001 diff --git a/bin/Release/log4net.xml b/bin/Release/log4net.xml new file mode 100644 index 0000000..df56743 --- /dev/null +++ b/bin/Release/log4net.xml @@ -0,0 +1,32464 @@ + + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see
http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Interface that can be implemented by Appenders that buffer logging data and expose a method. + + + + + Flushes any buffered log data. + + + Appenders that implement the method must do so in a thread-safe manner: it can be called concurrently with + the method. + + Typically this is done by locking on the Appender instance, e.g.: + + + + + + The parameter is only relevant for appenders that process logging events asynchronously, + such as . + + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + Flushes any buffered log data. + + + This implementation doesn't flush anything and always returns true + + True if all logging events were flushed successfully, else false. + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + The fully qualified type of the AppenderSkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns false. + + + + true if the appender requires a layout object, otherwise false. + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Creates an instance used to connect to the database. + + + This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary). + + The of the object. + The connectionString output from the ResolveConnectionString method. + An instance with a valid connection string. + + + + Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey + property. + + + ConnectiongStringName is only supported on .NET 2.0 and higher. + + Additional information describing the connection string. + A connection string used to connect to the database. + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Connects to the database. + + + + + Cleanup the existing connection. + + + Calls the IDbConnection's method. + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + Database connection string. + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to reconnect when a connection is lost. + + + + + The fully qualified type of the AdoNetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + This property requires at least .NET 2.0. + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + If this property is not set, the command text is retrieved by invoking + . + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Ansi code to reset terminal + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + text color is light + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + The event's logger name is the default value for the category parameter of the Write/Warn method. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + Defaults to %logger + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to a with %logger as the pattern. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + Formats the category parameter sent to the Debug method. + + + + Defaults to a with %logger as the pattern which will use the logger name of the current + as the category parameter. + + + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes events to the system event log. + + + + The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges. + See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog + + + The EventID of the event log entry can be + set using the EventID property () + on the . + + + The Category of the event log entry can be + set using the Category property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The event ID to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + The event category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + The fully qualified type of the EventLogAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The maximum size supported by default. + + + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx + The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766 + may leave space for a two byte null terminator of #0#0). The 32766 max + length is what the .NET 4.0 source code checks for, but this is WRONG! + Strings with a length > 31839 on Windows Vista or higher can CORRUPT + the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent() + for the use of the 32766 max size. + + + + + The maximum size supported by a windows operating system that is vista + or newer. + + + See ReportEvent API: + http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx + ReportEvent's lpStrings parameter: + "A pointer to a buffer containing an array of + null-terminated strings that are merged into the message before Event Viewer + displays the string to the user. This parameter must be a valid pointer + (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters." + + Going beyond the size of 31839 will (at some point) corrupt the event log on Windows + Vista or higher! It may succeed for a while...but you will eventually run into the + error: "System.ComponentModel.Win32Exception : A device attached to the system is + not functioning", and the event log will then be corrupt (I was able to corrupt + an event log using a length of 31877 on Windows 7). + + The max size for Windows Vista or higher is documented here: + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx. + Going over this size may succeed a few times but the buffer will overrun and + eventually corrupt the log (based on testing). + + The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API. + The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a + terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the + buffer, given enough time). + + + + + The maximum size that the operating system supports for + a event log message. + + + Used to determine the maximum string length that can be written + to the operating system event log and eventually truncate a string + that exceeds the limits. + + + + + This method determines the maximum event log message size allowed for + the current environment. + + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the EventId to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The EventID of the event log entry will normally be + set using the EventID property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + Gets or sets the Category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The Category of the event log entry will normally be + set using the Category property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative models only hold a + write lock while the appender is writing a logging event () + or synchronize by using a named system wide Mutex (). + + + All locking strategies have issues and you should seriously consider using a different strategy that + avoids having multiple processes logging to the same file. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checks if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + The fully qualified type of the TextWriterAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + The fully qualified type of the FileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are three built in locking models, , and . + The first locks the file from the start of logging to the end, the + second locks only for the minimal amount of time when logging each message + and the last synchronizes processes using a named system wide Mutex. + + + The default locking model is the . + + + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Helper method that creates a FileStream under CurrentAppender's SecurityContext. + + + + Typically called during OpenFile or AcquireLock. + + + If the directory portion of the does not exist, it is created + via Directory.CreateDirecctory. + + + + + + + + + + Helper method to close under CurrentAppender's SecurityContext. + + + Does not set to null. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Provides cross-process file locking. + + Ron Grabowski + Steve Wranovsky + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + - and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Releases the lock and allows others to acquire a lock. + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Appends colorful logging events to the console, using the .NET 2 + built-in capabilities. + + + + ManagedColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + When configuring the colored console appender, mappings should be + specified to map logging levels to colors. For example: + + + + + + + + + + + + + + + + + + + + + + The Level is the standard log4net logging level while + ForeColor and BackColor are the values of + enumeration. + + + Based on the ColoredConsoleAppender + + + Rick Hobbs + Nicko Cadell + Pavlos Touboulidis + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + and clear the current list of events that have been appended. + + + Use the method to get the current + list of events that have been appended. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Use the method to clear the + current list of events. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + Gets the events that have been logged and clears the list of events. + + The events that have been logged + + + Gets the events that have been logged and clears the list of events. + + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Syslog port 514 + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Cleans up all resources used by this appender. + + + + + The fully qualified type of the RollingFileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Attempts to extract a number from the end of the file name that indicates + the number of the times the file has been rolled over. + + + Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + + + + .1, .2, .3, etc. + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. The default + implementation uses the underlying value of DateTime.Now. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + Value indicating whether to preserve the file name extension when rolling. + + + + + FileName provided in configuration. Used for rolling properly + + + + + A mutex that is used to lock rolling of files. + + + + + The 1st of January 1970 in UTC + + + + + Gets or sets the strategy for determining the current date and time. The default + implementation is to use LocalDateTime which internally calls through to DateTime.Now. + DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying + . + + + An implementation of the interface which returns the current date and time. + + + + Gets or sets the used to return the current date and time. + + + There are two built strategies for determining the current date and time, + + and . + + + The default strategy is . + + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to preserve the file name extension when rolling. + + + true if the file name extension should be preserved. + + + + By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup. + However, under Windows the new file name will loose any program associations as the + extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or + file.curSizeRollBackup.log to maintain any program associations. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Implementation of that returns the current time as the coordinated universal time (UTC). + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + Send the email message + + the body text to include in the mail + + + + trims leading and trailing commas or semicolons + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses + that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses + that will be blind carbon copied. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + Enable or disable use of SSL when sending e-mail message + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the reply-to e-mail address. + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the subject encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + Gets or sets the body encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the file extension for the generated files + + + The file extension for the generated files + + + + The file extension for the generated files + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + The fully qualified type of the TelnetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is the default value for the category parameter + of the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen + Ron Grabowski +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to %logger + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + The fully qualified type of the BasicConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appenders. + + The appenders to use to log all logging events. + + + Initializes the log4net system using the specified appenders. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Initializes the using the specified appenders. + + The repository to configure. + The appenders to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + The fully qualified type of the XmlConfiguratorAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + The fully qualified type of the SecurityContextProviderAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Maps repository names to ConfigAndWatchHandler instances to allow a particular + ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is + reconfigured. + + + + + The fully qualified type of the XmlConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + Watches file for changes. This object should be disposed when no longer + needed to free system handles on the watched resources. + + + + + Initializes a new instance of the class to + watch a specified config file used to configure a repository. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + Release the handles held by the watcher and timer. + + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + The fully qualified type of the CompactRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + The fully qualified type of the DefaultRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + An evaluator that triggers on an Exception type + + + + This evaluator will trigger if the type of the Exception + passed to + is equal to a Type in . /// + + + Drew Schaeffer + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + The type that causes the trigger to fire. + + + + + Causes subclasses of to cause the trigger to fire. + + + + + Default ctor to allow dynamic creation through a configurator. + + + + + Constructs an evaluator and initializes to trigger on + + the type that triggers this evaluator. + If true, this evaluator will trigger on subclasses of . + + + + Is this the triggering event? + + The event to check + This method returns true, if the logging event Exception + Type is . + Otherwise it returns false + + + This evaluator will trigger if the Exception Type of the event + passed to + is . + + + + + + The type that triggers this evaluator. + + + + + If true, this evaluator will trigger on subclasses of . + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + The fully qualified type of the LocationInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Gets the stack frames from the stack trace of the caller making the log request + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + The fully qualified type of the LoggerManager class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initialize the default repository selector + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + The logger that this object is wrapping + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + Gets or sets the local time the event was logged + + + + Prefer using the setter, since local time can be ambiguous. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Gets or sets the UTC time the event was logged + + + + The TimeStamp is stored in the UTC time zone. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties. Active properties must implement in order to be eligible for fixing. + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored internally in UTC and converted to the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the UTC time when the current process started. + + + This is the UTC time when this process started. + + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in UTC and converted to the local time zone for this computer. + + + + + + Gets UTC the time of the logging event. + + + The UTC time of the logging event. + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + provides method information without actually referencing a System.Reflection.MethodBase + as that would require that the containing assembly is loaded. + + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + constructs a method item for an unknown method. + + + + + constructs a method item from the name of the method. + + + + + + constructs a method item from the name of the method and its parameters. + + + + + + + constructs a method item from a method base by determining the method name and its parameters. + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the method name of the caller making the logging + request. + + + The method name of the caller making the logging + request. + + + + Gets the method name of the caller making the logging + request. + + + + + + Gets the method parameters of the caller making + the logging request. + + + The method parameters of the caller making + the logging request + + + + Gets the method parameters of the caller making + the logging request. + + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + provides stack frame information without actually referencing a System.Diagnostics.StackFrame + as that would require that the containing assembly is loaded. + + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + returns a stack frame item from a stack frame. This + + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + An evaluator that triggers after specified number of seconds. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + Robert Sevcik + + + + The default time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + The time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + The UTC time of last check. This gets updated when the object is created and when the evaluator triggers. + + + + + Create a new evaluator using the time threshold in seconds. + + + + Create a new evaluator using the time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Create a new evaluator using the specified time threshold in seconds. + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + Create a new evaluator using the specified time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the specified time period + has passed since last check.. + Otherwise it returns false + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + The time threshold in seconds to trigger after + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + + + + + + Initializes a new instance of the class. + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Abstract class that provides access to the current HttpContext () that + derived classes need. + + + This class handles the case when HttpContext.Current is null by writing + to the writer. + + Ron Grabowski + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Cache will + be written to the output. + + + + + + Converter for items in the . + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net HttpContext item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Session will + be written to the output. + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception or the exception property specified + by the Option value does not exist then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Recognized values for the Option parameter are: + + + + Message + + + Source + + + StackTrace + + + TargetSite + + + HelpLink + + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + The fully qualified type of the NamedPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + Adam Davies + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + Michael Cromwell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the strack frames to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Returns the Name of the method + + + This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter + string + + + + The fully qualified type of the StackTracePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The fully qualified type of the StackTraceDetailPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + A flexible layout configurable with pattern string that re-evaluates on each call. + + + This class is built on and provides all the + features and capabilities of PatternLayout. PatternLayout is a 'static' class + in that its layout is done once at configuration time. This class will recreate + the layout on each reference. + One important difference between PatternLayout and DynamicPatternLayout is the + treatment of the Header and Footer parameters in the configuration. The Header and Footer + parameters for DynamicPatternLayout must be syntactically in the form of a PatternString, + but should not be marked as type log4net.Util.PatternString. Doing so causes the + pattern to be statically converted at configuration time and causes DynamicPatternLayout + to perform the same as PatternLayout. + Please see for complete documentation. + + <layout type="log4net.Layout.DynamicPatternLayout"> + <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + </layout> + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + aspnet-cache + + + Used to output all cache items in the case of %aspnet-cache or just one named item if used as %aspnet-cache{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-context + + + Used to output all context items in the case of %aspnet-context or just one named item if used as %aspnet-context{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-request + + + Used to output all request parameters in the case of %aspnet-request or just one named param if used as %aspnet-request{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-session + + + Used to output all session items in the case of %aspnet-session or just one named item if used as %aspnet-session{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + stacktrace + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktrace{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + This pattern is not available for Compact Framework assemblies. + + + + + stacktracedetail + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktracedetail{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + This pattern is not available for Compact Framework assemblies. + + + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + Convenience method for easily formatting the logging event into a string variable. + + + + Creates a new StringWriter instance to store the formatted logging event. + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + The header PatternString + + + + + The footer PatternString + + + + + Constructs a DynamicPatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + + + + Constructs a DynamicPatternLayout using the supplied conversion pattern + + the pattern to use + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + The pattern will be formatted on each get operation. + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + The pattern will be formatted on each get operation. + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + The string to replace invalid chars with + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + The fully qualified type of the RemoteLoggingServerPlugin class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Collection of internal messages captured during the most + recent configuration process. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The fully qualified type of the LoggerRepositorySkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + Flushes all configured Appenders that implement . + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed, + or to wait indefinitely. + True if all logging events were flushed successfully, else false. + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Contains a list of internal messages captures during the + last configuration. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Initialize the repository using the specified appenders + + the appenders to use to log all logging events + + + Configure the repository to route all logging events to the + specified appenders. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + The fully qualified type of the Hierarchy class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + The fully qualified type of the RootLogger class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + The fully qualified type of the XmlHierarchyConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + + + + + + + + + + + + + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + AppSetting pattern converter + + + + This pattern converter reads appSettings from the application configuration file. + + + If the is specified then that will be used to + lookup a single appSettings value. If no is specified + then all appSettings will be dumped as a list of key value pairs. + + + A typical use is to specify a base directory for log files, e.g. + + + + + ... + + + ]]> + + + + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an folder path to the output + + + + Write an special path environment folder path to the output writer. + The value of the determines + the name of the variable to output. + should be a value in the enumeration. + + + Ron Grabowski + + + + Write an special path environment folder path to the output + + the writer to write to + null, state is not set + + + Writes the special path environment folder path to the output . + The name of the special path environment folder path to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentFolderPathPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + The fully qualified type of the IdentityPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + The fully qualified type of the ProcessIdPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + The fully qualified type of the RandomStringPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + The fully qualified type of the UserNamePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + The fully qualified type of the ConverterRegistry class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + The fully qualified type of the AppenderAttachedImpl class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration by custom + PatternString and PatternLayer converters. + + + + + + default constructor + + + + + + + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Total number of bytes written. + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + The static class ILogExtensions contains a set of widely used + methods that ease the interaction with the ILog interface implementations. + + + + This class contains methods for logging at different levels and checks the + properties for determining if those logging levels are enabled in the current + configuration. + + + Simple example of logging messages + + using log4net.Util; + + ILog log = LogManager.GetLogger("application-log"); + + log.InfoExt("Application Start"); + log.DebugExt("This is a debug message"); + + + + + + The fully qualified type of the Logger class. + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + This class stores its properties in a slot on the named + log4net.Util.LogicalThreadContextProperties. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Nicko Cadell + + + + Flag used to disable this context if we don't have permission to access the CallContext. + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets the call context get data. + + The peroperties dictionary stored in the call context + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + Sets the call context data. + + The properties. + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + The fully qualified type of the LogicalThreadContextProperties class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Delegate type used for LogicalThreadContextStack's callbacks. + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + The name of this within the + . + + + + + The callback used to let the register a + new instance of a . + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this thread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The depth to trim the stack to when this instance is disposed + + + + + The outer LogicalThreadContextStack. + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + + + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + Formats Prefix, Source, and Message in the same format as the value + sent to Console.Out and Trace.Write. + + + + + + Initializes a new instance of the class. + + + + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Raises the LogReceived event when an internal messages is received. + + + + + + + + + Writes log4net internal debug messages to the + standard output stream. + + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + The event raised when an internal message has been received. + + + + + The Type that generated the internal message. + + + + + The DateTime stamp of when the internal message was received. + + + + + The UTC DateTime stamp of when the internal message was received. + + + + + A string indicating the severity of the internal message. + + + "log4net: ", + "log4net:ERROR ", + "log4net:WARN " + + + + + The internal log message. + + + + + The Exception related to the message. + + + Optional. Will be null if no Exception was passed. + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Subscribes to the LogLog.LogReceived event and stores messages + to the supplied IList instance. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is processed using the LogLog sub-system by default. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Reset the error handler back to its initial disabled state. + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log the very first error + + The error message. + The exception. + The internal error code. + + + Sends the error information to 's Error method. + + + + + + Log an Error + + The error message. + The exception. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log an error + + The error message. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + The UTC date the error was recorded. + + + + + Flag to indicate if it is the first error + + + + + The message recorded during the first error. + + + + + The exception recorded during the first error. + + + + + The error code recorded during the first error. + + + + + String to prefix each message with + + + + + The fully qualified type of the OnlyOnceErrorHandler class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + The date the first error that trigged this error handler occurred, or if it has not been triggered. + + + + + The UTC date the first error that trigged this error handler occured, or if it has not been triggered. + + + + + The message from the first error that trigged this error handler. + + + + + The exception from the first error that trigged this error handler. + + + May be . + + + + + The error code from the first error that trigged this error handler. + + + Defaults to + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + The fully qualified type of the OptionConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + The fully qualified type of the PatternParser class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + appsetting + + + Used to output the value of a specific appSetting key in the application + configuration file. + + + + + date + + + Used to output the current date and time in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Tests two strings for equality, the ignoring case. + + + If the platform permits, culture information is ignored completely (ordinal comparison). + The aim of this method is to provide a fast comparison that deals with null and ignores different casing. + It is not supposed to deal with various, culture-specific habits. + Use it to compare against pure ASCII constants, like keywords etc. + + The one string. + The other string. + true if the strings are equal, false otherwise. + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + The fully qualified type of the SystemInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Get the UTC start time for the current process. + + + + This is the UTC time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + The fully qualified type of the SystemStringFormat class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Each thread will automatically have its instance. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Get the keys stored in the properties. + + + Gets the keys stored in the properties. + + a set of the defined keys + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Characters illegal in XML 1.0 + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + Default constructor + + + + Default constructor + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global context properties instance + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + Provides information about the environment the assembly has + been built for. + + + + Version of the assembly + + + Version of the framework targeted + + + Type of framework targeted + + + Does it target a client profile? + + + + Identifies the version and target for this assembly. + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Flushes logging events buffered in all configured appenders in the default repository. + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed. + True if all logging events were flushed successfully, else false. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Pushes a new context message. + + The new context message string format. + Arguments to be passed into messageFormat. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + var someValue = "ExampleContext" + using(log4net.NDC.PushFormat("NDC_Message {0}", someValue)) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + diff --git a/bin/Release/zh-Hans/Microsoft.Expression.Interactions.resources.dll b/bin/Release/zh-Hans/Microsoft.Expression.Interactions.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ebf0732330158fc9904f6a5e2da09b560026ab7 GIT binary patch literal 6656 zcmeHLeQ;FO6~7x21^gBjXFB2ypcDw(4IctlG?0WCNl2OvC{{{dc5gOYcHi5+_ZCPi zbt@kN1wkhy3JAer1Q`-Qpv?z?I<^iv(%ROct)mR$egv^(y-kfTNkswxXk% z<<(w;2XxJ&D}L@$R8=#1rQmu{& zD+TAEPe$loDj2)6``m?$c@ny$?vL@kDf{fESY%>+=4w2!Cb0o`YT=Ak*mXm9VNznt zLFY2m>rqom4h&+~g--*a#9Dzx;&n4>O37htTFOv%Unjew5Vkay!5+?HY&iA~kh6@H za>jOD!Pwc+mTBYD=WTX?_V=%Tc*q8dCs2LP8p9NRdzmn_pzabzvR5V)x6re=-*9QV z&s&+rXA9l%YU-5nb_e}s@!X)#4C-QvDuSl2__BCuu+rys%@8%^+I*o-shl`bnc$jm zNA~1#x&-+66& z>wg;Bj~v@v@Q=s!k3JjzaazU~_l2*l|INI??;P7Tt~BSw%+mhr=Xs#yQ}CG+Xx|6B z`KZ@q;D``Vg_wU4RYN~aG-wx*Y?S3V!>U}SFdzPknP4WXW*T#|smz7G7k!n@mg`>3 zrc%trn#rc)83c`+<+DZDBUm80kEjj&Da?Z&m4|b|UI95xlrkNg1L*14Qqx7`ROV-u z5bptV5@2A}jX!Uac}aYylAP%az&rq0aG?OmCMy0&$Ej$&07Rk$D@UtK1x)m7B#gd9 zH$b%cRYXsRU@~rZTg?OrKfv@QI1B#pr0uInE`(ec6ctjA+QSSzF{MiB3)f=cTJa6x zx*sUXF9a(AW*?5EyS4g4^9P`Dr^4^fAT=6NJ;Mp1W;{NE7jPVd5O%%`71SL>A)=rR zLKOHzLesu9+X#W~Jn6X#a{{a7!_&Zq0&xKhr@?%kD+$NC*yuh3LH8AaSvhJayHvxa z2F|?@ZZHzkNm~FQ6zc)3G~gXIoLq1L2z@~5W<|hU1r0g_p914gARN+_uq%PVINo`; zcO@wUM-ME}o!fSh&YT6YhQtv79(p$k2qMe-F;8U=)&5hPKME9+aY}ygq z+ZNgU%W!k+$wqa>xcT30Kt>NZX z(UpfHEB0VAzRN+oKoG5K0nc|skJ|1@GA6EaJ-IL3x;(ONL%4ZoWbN*bCGEs`6=CT( zye`&MAKUdDF<5Eq9biHfFIRMrFgdtJR_%z@wnbLgMfPrvhPFpH?vK{CfJbEQPOt}% z=>9{o+ASTA?c{kPAXK+dT{R_@KNc>NLwG{}^YXEkWcth>Omt>`u=Uwo>)KZ3Roz^n z%UnR{W(`*rzi{)RP;@BQRBqM;1V-75huV3#bzP)=U8HeuxOEjecxKv4BhNh=-Mp!z z=}@e_3FhE=L0vKN>&`6|K0LTOvf}Bu0ro8Cg{n&zexaK2_4vl-R$i_L1(|DFocP(z zuw~NZ7B@0*=pgaj*nk7GC_8qyMb_3unwD6r#A8{)6W(V8|m*0t+{t?X|!>hrD^zZljRS#=WUs@#s}w*%{=u?L+U{qrecct8IHgij!2&22%O;v zJI_}Q+_bn^t(bTSZfy{YyoPCT1+E}hye8f1=}ND-aF;XS5mmb8$0F|iE={FNZEyb2 ztBW{d8=ImHk8!|(kFT)|5N>M=x3A~3y+%;+ISF-vt_1@Itj29c2}hQJoQ#tqQDv6E zO9>_zAtJ)fk0(PdY5s6?sN=w|!|jJ-wL9n#mfA8OSUBTBZzdczm4#N7;@wjBGOwpP zDWP+jLILK8Cpkf~#zL=I%_(9OQ_~S2V|$N}PJ3k9ihEb8i_DAAY7}UrwY#IMf5FRy zUt1vZeKM}5x@7dh!7Q`G0++x4@?px?#}Bepx$DPWaLKThC2QpIA~?GI7YrcaF8a z^u_6|$3EHn@>^9$-#$DrwAAs()frpO*=HK(tU4VY{KLlB>CegsuZ?_MGu8^%zSGpbs>eW=Rbwlq zhr?z$Spa=X?}io3D$GM0!gw2vr}?x>v{dkGc`dHz%tj*recL#86Z$kxsSLj~G`5P> zBaG>x&K&bPEZW#Wb_ZH(_uaC`?kd*YL7%vr6?u}=!!fB z1L;~kA7VeP9&@jv8Z3X2O9beQEDg(*N}sUD7gNYDg0^SIxAP?6~wQ-AY&**luruWGpb zd$;{{ajW*qHDAnm{Eas!go`Gx&d z&fUg%PS4GkX5tpG$r!?CgHTtKSW)WeWqtr0g}xm;ki%FW`iYX4J|5lKxM|MAGoO{A zSBPumOpFWhoQ^(~_Vf?`YsCV? znj{-e-i!O9j%zI4Dt%}ZX*Cg~_urGg4Odv3ya!VrL%DHJP9aI-V3U}GjhD3&PsSc% zL$Nm(()`Ihjb2E_;6&M*2AP_?Hrr*c7{HvBlv}C2U81EME+Onp`H4pnUP=kx0g1l` z*0SwZ)bh6{`BR#yQP0v8Lu1GAy52rU%OcOjNK*uqN|MV-f=$PfC(;@ YZ`%Ugx_f;TzruXm;x6(3|FXdU0DgKgNdN!< literal 0 HcmV?d00001 diff --git a/bin/Release/zh-Hans/System.Windows.Interactivity.resources.dll b/bin/Release/zh-Hans/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..3f37822f750059743f2275d71d1a5728f7ea0be2 GIT binary patch literal 6656 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 QP%`ZKI;_6i`|U&E|BRsK6951J literal 0 HcmV?d00001 diff --git a/bin/Release/zh-Hant/System.Windows.Interactivity.resources.dll b/bin/Release/zh-Hant/System.Windows.Interactivity.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..3ad989e64fb4d5a280fcced978c820268f0f971b GIT binary patch literal 6656 zcmeHLdr(x@89$2>ih`%U)MQIb;Nz!T5Nt2GvOfoUy?yfP_{1K-eN0a`(d-ny>V6Bts zbUeG~o^!tQz0Y^SWEZU-B{7>h>z<{QR3&{9d(p5Oi`$Mo>=XNI$14}RC!VaRyb zXeoBeLa8J=Bx{Lav%1})A{22!^0)=3TQD!p6-q=qHw_y$WKw{2b{b0woTeM}jw}LWg(gXs zYyfJyC8P5Q>PXaxk__!l5_gF})O0PxB=H)98c~uNONkh2-4Wzh6w)n<#jxK`1sP}u zYf#3r1;)M{0s(-R2VmdUd;#1Gf4b3S0MbrWSMEAl;U%UVE{h(?#^q2ihgmlwypmGV&yb#9Fz}HqtIUn zqnD#ygYiYopT&4BWdPz*akY7Gb@ktLeYzLu>&wq|Uuf;8yMp|#RW+Y|_qG1Jqc zFm`{;H-h=|Vf3D^h>VB@u!xo|jGG0~v`70Bk%*T@VGa-#5J=i)A%~FPbx)I1+}hep zz#uUS%STJE3EhSL`@RA~G9DyD`sQZkK^H5chF(?{=tEY>nqIUTmI!--&iJ-Sb%Uj0 zuCL;t_gA~s##XhtK`r0z+j^wC^K^H|Hh=4J^+bbje}}rG#@A3Gr0`;EnNyTfMVE`) z6nr{9E8lEL4Uo52g%AW_cXw^SdY}@N-hG>|?yFF@9Z;*=yF1Dupu6)ma0iYqiI}`* z2yoHxL#hZC$?0(L2#K=L-Eq9Tqtp9xOK@_&rb<{Q`1y}*S1YU4_A2$n7PYHMt%NzC zBH=-*un~f!cj%1&Xl+0c z===w3eY;-uR~-#9NU_SCxX%n(77mwyKs^qc8@z1?Lv97f_>B{Y@RY&0=-HG7@kW2; zX-hE|co}yq0fC}hP)I=yStz#3f|bs-HnF7CsyK^WT#%g(x0Q}8CLzZ1T6yG#U;VcUEE<+z{dZZo!-`Z@BZK6skYUj(-+8S$TTW5 z3lg3+`gb>_>gVoNPRM|Qx&>})3AguUM_(e0hV{DF0|cS1fwlE-Ifr!#O~Y*z>B5GD zje>fz&0F3AFNS6*9>U>NceEGr^uCAfnOxXW3_vc@YX&p$E#@F8348!s(dlCgj6 zhEdNnzO?@0lS}rb|6)_i$SGS=@9Y{?Wtj8Wd&hRA6qv7HK6I-!{Z?{))!7?)GpBf> zI)6C&`djJa|K3$M>Zun;+dlZ{%{!}8Upeyg*ONX?O22eIy86nWV{&S4f7CY6xvO3J zVCNKH?UBF6G~H}UF0qcBn3B6B#lY}cMWM5Q86BPz;u7L#6C?)jWrptvV-q(qb_s0_ z^>Y=;>2}EIvK1hu6l-E$F0-RgDbmD+d5g_x6^xr{oZ=FT&{Dz2a6}AR1BtvfIf0Ev zpT-dtAG3f)00w%bV{~~qPkUUO8N%Yx>NuLhjLpdu?H(6TVu7>#GK8_XMm8;WD_pYT z)mr9M)*;&oq!Vm?@igoj9FNx8cqx4YbmJ_vl%~LB1p2*kHQ8O{xB&tw$Nu)_TgU6J zY&JL9W*wRHx^n?5Kforzlyb&)VfqpHgvL3!^W*88NT!~;y~7vvqN8funy2eN-a6~; zvF}Hn;lCBe7A{Y!|HCVMTy^6c^G1E|+NpVMkH?>Q^e+j2yk2N@OxrW&^Z3>i=Y|~^ z_|)Xf8_$UEJa%XK%kO`f*qt%ECM|WK|FdT*o)|Uv#5*_Zw}^Y*{>Q>>br(<4C z`}nKXQ>Knwc>Fw{dh`6Cn4cU$!VIMXWn3_K4gw*aGyaoQuBkwZ8vp7fs97FD|BKe_xx`-xo9!SoYpBnqg2MkmIcxQ5%&Qy#-t(5(FtBp>nYt=Ktm-1FVY~-Qee0N z51yE5J`=b$(9(s02ul?vXc|aJrRd6lvVfq4MVfv=dnoUdHCnnl2xI+s`p&}F#t`yZ zzGjyk(txq)us9BNI-ZGmCTe4RpV(B;g?&NUgDb+)`}Ls-KF~7{4|;SRLO!>HH@(Pl zf5x7M+zh}SnnYT?QutWEo+yT2nC8!(Fo8V@UO$4b@7@02eKZD_@DE@zW~{KsG literal 0 HcmV?d00001 diff --git a/obj/Debug/App.g.cs b/obj/Debug/App.g.cs index 684ba3b..f3dec87 100644 --- a/obj/Debug/App.g.cs +++ b/obj/Debug/App.g.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "927F85A8A41779C3379462CFD214DAF6" +#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "EA2C0E376D8ECAA59354CBFAE19DD05F" //------------------------------------------------------------------------------ // // Ce code a été généré par un outil. @@ -47,7 +47,7 @@ public partial class App : System.Windows.Application { public void InitializeComponent() { #line 4 "..\..\App.xaml" - this.StartupUri = new System.Uri("Window1.xaml", System.UriKind.Relative); + this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); #line default #line hidden diff --git a/obj/Debug/App.g.i.cs b/obj/Debug/App.g.i.cs index 684ba3b..f3dec87 100644 --- a/obj/Debug/App.g.i.cs +++ b/obj/Debug/App.g.i.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "927F85A8A41779C3379462CFD214DAF6" +#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "EA2C0E376D8ECAA59354CBFAE19DD05F" //------------------------------------------------------------------------------ // // Ce code a été généré par un outil. @@ -47,7 +47,7 @@ public partial class App : System.Windows.Application { public void InitializeComponent() { #line 4 "..\..\App.xaml" - this.StartupUri = new System.Uri("Window1.xaml", System.UriKind.Relative); + this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); #line default #line hidden diff --git a/obj/Debug/CoreCompileInputs.cache b/obj/Debug/CoreCompileInputs.cache index 42cfe3d..7760c0f 100644 --- a/obj/Debug/CoreCompileInputs.cache +++ b/obj/Debug/CoreCompileInputs.cache @@ -1 +1 @@ -505b49b20f555c1e0c733dd21271a36a8b138dc6 +d9aaf3c9ec62f13780d48ab0fa75320500d85c25 diff --git a/obj/Debug/LogViewer.csproj.FileListAbsolute.txt b/obj/Debug/LogViewer.csproj.FileListAbsolute.txt index 8c13440..0701fb1 100644 --- a/obj/Debug/LogViewer.csproj.FileListAbsolute.txt +++ b/obj/Debug/LogViewer.csproj.FileListAbsolute.txt @@ -33,14 +33,15 @@ D:\EnCours\LogViewerForLog4Net\obj\Debug\FilterActivity.baml D:\EnCours\LogViewerForLog4Net\obj\Debug\About.g.cs D:\EnCours\LogViewerForLog4Net\obj\Debug\Filter.g.cs D:\EnCours\LogViewerForLog4Net\obj\Debug\FilterActivity.g.cs -D:\EnCours\LogViewerForLog4Net\obj\Debug\Window1.g.cs D:\EnCours\LogViewerForLog4Net\obj\Debug\App.g.cs D:\EnCours\LogViewerForLog4Net\obj\Debug\GeneratedInternalTypeHelper.g.cs D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer_MarkupCompile.cache D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer_MarkupCompile.lref -D:\EnCours\LogViewerForLog4Net\obj\Debug\Window1.baml D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.g.resources D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.Properties.Resources.resources D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.csproj.GenerateResource.Cache D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.exe D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.pdb +D:\EnCours\LogViewerForLog4Net\obj\Debug\LogViewer.csprojResolveAssemblyReference.cache +D:\EnCours\LogViewerForLog4Net\obj\Debug\MainWindow.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Debug\MainWindow.baml diff --git a/obj/Debug/LogViewer.csprojResolveAssemblyReference.cache b/obj/Debug/LogViewer.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..db99141f555eb48e8e4366fc34a6e6e145537f87 GIT binary patch literal 31359 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 J<4H_={S8~K9o+x` literal 0 HcmV?d00001 diff --git a/obj/Debug/LogViewer.exe b/obj/Debug/LogViewer.exe index 951f576ee3c7d1497089204f271ca4e311dc171f..7b73be93a7f518f46f1f435cea191259473d5ca7 100644 GIT binary patch delta 41758 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 diff --git a/obj/Debug/LogViewer.g.resources b/obj/Debug/LogViewer.g.resources index 8a9018286e471a80c2ab6e6c065dea1fc793bc1c..e4e537c88d8d14f04f669da4949f2d92839f31e3 100644 GIT binary patch delta 3066 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 Uk6z)_yG1>n(i@?kmU^210kLn0>;M1& diff --git a/obj/Debug/LogViewer.pdb b/obj/Debug/LogViewer.pdb index cf1ece58e6827376a9cff070d5dd91e6db8dde3c..1f073b3edfab3e56d4dc9b22a3160ae20c990773 100644 GIT binary patch delta 35365 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 ANdN!< delta 35268 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 diff --git a/obj/Debug/LogViewer_MarkupCompile.cache b/obj/Debug/LogViewer_MarkupCompile.cache index 78bbe64..a07a23f 100644 --- a/obj/Debug/LogViewer_MarkupCompile.cache +++ b/obj/Debug/LogViewer_MarkupCompile.cache @@ -10,11 +10,11 @@ none false DEBUG;TRACE D:\EnCours\LogViewerForLog4Net\App.xaml -41210977293 +4-1243422802 -14-1142573383 +14-905081002 20-818907814 -About.xaml;Filter.xaml;FilterActivity.xaml;Window1.xaml; +About.xaml;Filter.xaml;FilterActivity.xaml;MainWindow.xaml; False diff --git a/obj/Debug/LogViewer_MarkupCompile.i.cache b/obj/Debug/LogViewer_MarkupCompile.i.cache index b30fbd5..725d415 100644 --- a/obj/Debug/LogViewer_MarkupCompile.i.cache +++ b/obj/Debug/LogViewer_MarkupCompile.i.cache @@ -10,11 +10,11 @@ none false DEBUG;TRACE D:\EnCours\LogViewerForLog4Net\App.xaml -41210977293 +4-1243422802 -181347963694 +181585456075 20-818907814 -About.xaml;Filter.xaml;FilterActivity.xaml;Window1.xaml; +About.xaml;Filter.xaml;FilterActivity.xaml;MainWindow.xaml; -False +True diff --git a/obj/Debug/LogViewer_MarkupCompile.i.lref b/obj/Debug/LogViewer_MarkupCompile.i.lref new file mode 100644 index 0000000..27b8eb8 --- /dev/null +++ b/obj/Debug/LogViewer_MarkupCompile.i.lref @@ -0,0 +1,4 @@ + + +FD:\EnCours\LogViewerForLog4Net\MainWindow.xaml;; + diff --git a/obj/Debug/LogViewer_MarkupCompile.lref b/obj/Debug/LogViewer_MarkupCompile.lref index 6b1dfa1..27b8eb8 100644 --- a/obj/Debug/LogViewer_MarkupCompile.lref +++ b/obj/Debug/LogViewer_MarkupCompile.lref @@ -1,4 +1,4 @@ -D:\EnCours\LogViewerForLog4Net\obj\Debug\GeneratedInternalTypeHelper.g.cs + -FD:\EnCours\LogViewerForLog4Net\Window1.xaml;; +FD:\EnCours\LogViewerForLog4Net\MainWindow.xaml;; diff --git a/obj/Debug/Window1.baml b/obj/Debug/MainWindow.baml similarity index 52% rename from obj/Debug/Window1.baml rename to obj/Debug/MainWindow.baml index 303d995033e723c0145ad617325c0c1ce5424a5b..f310292b1ca1a76e5c3c76f45c3f2d7bdde6143a 100644 GIT binary patch delta 2929 zcmZ{mZERE58OP6wo%l5lG#QW=FeEn#acsvgxsDyjj^FdsPC{Bszg3#n4@26Aw%UhE{XitPwHwkVRZ8xjbK{d@ zjoG@#=RD_me*fn@=iGaJ`8xgf8om5RLj%E2T{=H=C@U>XvU4<(oj;tNpUy9T@P1v# zkXEnzog&^xA01wr*Vl=-h8;a#*6j|0W8*|do{@?Zs|!-IgS@oiv#_}uC!5nx$k~}0 zNiLY2;IP%#bdi@7qKhFuJ3piAf^+sA+pK06vsNC;k&Hb(;B#S?&Ws}d6Ms#3X%NhH82V!8Bk0dM{}-J~rJ^qQt_+=uPDImN=>Pm5 z^rU?gy^Ffws$DRYl19-_?ValAo+9Wy@SVL;9et??1`q6UG?=~Q=Nm-Jc1q`kgyU)2 z4Zn0WVEcPV0NZaI4FQq-O(EOj`T0{=IZ2K$<%&zPB$z}}`K;_njbBo%wLbDdA?AZc z8FwL-m*+A?;RzqaoX)x)vc5sgaVeLZkmeS0nWCiYfft=0B0SK=Bnn+U*xu?2VtZe; z>~n>%f85oN?VGMXZ2#(FK6UPHY=_(jtNldT&}hdpbCOW&hj-le$?h8)J|9*`sQ$B} z!#t$oiP@0ii=xT8BY^ItW?U*{PfLlcES)H3^Yel+K(yoeua z`c9!iQ=t&C5$<@}X(N2)>7={C>~*B}(9+4hiPKgbu#+q3A1W1I7g2omIMQm^+}=m$ z+&yJ;`{1m%kv79MZxd~SJ6nTD#hKq~W2W35d3`&~`p)dZ<*2ey1-0 zi{2eA#)pd5?e%W?noTAm+R#_M%f80DtP{?3H&Q#?!`7j;PPOe)TNfC_!Ma{jNr)jP z&1Ozz^LUf>643*aI7Yqjp?F|2$Y_S>!a^=96(;h6B}nw~*=%lFmgcdHyK(K-nm$s6 zMM*5l8MVxoKB9N^;@9aF6N=Bne9R%{Q<=;Zq)AKAO9@KQUPB-Dyd1 z)AMLb!f?PrlduwKp__W|2bx+_T+fc7TYAElh6goL@NJ-A8Q?I+A5{6n+{E}JaHY44 zj=-nAoWI`NWJ`0tvy8tzN=)h+CT3-<0*a&|9-Om`av~EMQ$?QSCMNO}d>ypWr@+$3 zMZSqQwIAdn?6LX%A}mp&S4GAWaa1@67y3@Z?O+fbAuBxsqoGYkADx8vLOZK@S-a79 zQZ4I)&|%9_F3&Rhp_)}Dj z4b%N?mLGE{)5)khC%B2}OvA_hb~^o9vL5~rHkNh}rKkkq$oI+n5G=t|@IisAD?&+@^kQJGzXtWf{=>sql+*bV}y&b zzE+t>_dY(_kI^!gcFt1Zsj%#dYIdi%iDkD8m*O_M40qzZthmu_E1cg~#>cJGZQcO-%DVG^X0=d5EVTDf#{jTp&^=P!lBvby2BoPC|(ba5wdw z!e62DL-E^-r-xCGA(?5CID{D7-;M*cX^)cOjSh?Plf9mfFjUr~>I%iuV43SD`uy v9b?wPlG2x|(yvQOTJbj}8Ljvp_E>4O;%)5V3mJPKU{9;|ev3T~_A34hM%diO delta 3305 zcmaJ@eN0=|6~7lA*kEIl!Ui;k*AesOFKo(cySc@6N zvlv`K><_rQv0Zlsu>GBj#caFUvGuse%X~!LE)=xgQsDz|+o>0ByUlBzXeZ@kN+xke zi6qj>GucFH!BW~ugt63e22*tc=cwCMr2`Z*$>v+SO(Ziuu-)anqe`{dXPc`~P>E>t z6TB6LQ^{1?QsyVRgVAu<<#JtD`9} z21i4^`N6ngV$Q1>Y=)=iPl3;n~ho^+2-hPK)1I4uc5nh7+#P#-%@jTHr3T}@lKiFt65Xp^RP5oc7j@#g4&jIQIcl!a_uC@}WlK}u&GM;_ET!XG4Vb!#-qneJr$>sYavO^=_OO_uzIaA?TGvA)Kirc1GywmR zLTe$m*-Fuc1wEXa!c#d!bS!doDT^GHEaP}m_T~|e>UxRPg)?QFv=B>3>c$6lUOaTD zAcby+a?Y?4&ej2n)bnlJVT@4>uACDnT~@MVe&j4_yd_SB|bH}kX$V; z4#P&E0)E=j;_lBuIIPGi;idgVLxf!8d&L+b#mV@jl5}6*lKNq|w+2M-QBw>@YBm2M zuFn8$_^M2U-1GvPhTz9u2OWYxdJobazH*h_*&^0GoPY?V+h+U4tA

^oaDEaK2|pTMOLlD{jbeZQh4#>p+AIs69zjmJ48-mNZSv+{84k zz?-2Kx&prsG5pU%freF%-T82AFJiA^Zs$#BI1s~rR>S@lH!Vtxh1lzIQ|?a znUi9I8_)B|u7{J#lQ`%+{3(($eVa2d(sgZC-{B@k`Z7G**F;~2xB7OiNb@V4pl1(3 zd4!Z`vx+8?3R1iRb z9q_}x*c0>(aL4#uXJdBj6^;_wgOcB`_yLSxq6l>bK8&4#^+SHh4Aj#fz@-5$=I(&G z`6`Er?t#hAXdtW1Bgj>#J2YqdAqMA9u4`J-e#A{IY1iS_p=Np=K0U;hng?sbKgm%P zUc`_a_`u%0j@WKK(a=XOZsk5P_V*D(Ha>}8K-qLkJ3DW{%3z5841P6OPv3@*2V2Fr z5oRAEh!s(S%*F|2C3_?tUtGlZhov+MwxN334^9uY zDPgQV!_r>96%4hM#bA9{jOCc_YE19tm;~wl9E~9T9D6J^g7gdQ;VT(?A7D?=dcVY8 IA@&OX2YxOnz5oCK diff --git a/obj/Debug/Window1.g.cs b/obj/Debug/MainWindow.g.cs similarity index 88% rename from obj/Debug/Window1.g.cs rename to obj/Debug/MainWindow.g.cs index ed418b5..edbb3ab 100644 --- a/obj/Debug/Window1.g.cs +++ b/obj/Debug/MainWindow.g.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\Window1.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C43A55AAA5341875C3DAF561417F0687" +#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C1B3918A1C907E0D16763BA2AF37EBE8" //------------------------------------------------------------------------------ // // Ce code a été généré par un outil. @@ -41,12 +41,12 @@ namespace LogViewer { ///

- /// Window1 + /// MainWindow /// - public partial class Window1 : System.Windows.Window, System.Windows.Markup.IComponentConnector { + public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { - #line 31 "..\..\Window1.xaml" + #line 31 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid gridMenu; @@ -54,7 +54,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 35 "..\..\Window1.xaml" + #line 35 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Menu menu1; @@ -62,7 +62,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 39 "..\..\Window1.xaml" + #line 39 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal LogViewer.RecentFileList RecentFileList; @@ -70,7 +70,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 42 "..\..\Window1.xaml" + #line 42 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.MenuItem MenuMergeItem; @@ -78,7 +78,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 44 "..\..\Window1.xaml" + #line 44 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.MenuItem ResetSeparator; @@ -86,7 +86,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 51 "..\..\Window1.xaml" + #line 51 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid gridTopBar; @@ -94,7 +94,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 56 "..\..\Window1.xaml" + #line 56 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid spPath; @@ -102,7 +102,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 67 "..\..\Window1.xaml" + #line 67 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock textboxFileName; @@ -110,7 +110,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 73 "..\..\Window1.xaml" + #line 73 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spCountAndSearch; @@ -118,7 +118,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 74 "..\..\Window1.xaml" + #line 74 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spGlobalInfo; @@ -126,7 +126,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 75 "..\..\Window1.xaml" + #line 75 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal LogViewer.FilterActivity FilterIndicator; @@ -134,7 +134,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 76 "..\..\Window1.xaml" + #line 76 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock tbFiltered; @@ -142,7 +142,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 78 "..\..\Window1.xaml" + #line 78 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spCounters; @@ -150,7 +150,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 80 "..\..\Window1.xaml" + #line 80 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageError; @@ -158,7 +158,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 81 "..\..\Window1.xaml" + #line 81 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelErrorCount; @@ -166,7 +166,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 88 "..\..\Window1.xaml" + #line 88 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageWarn; @@ -174,7 +174,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 89 "..\..\Window1.xaml" + #line 89 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelWarnCount; @@ -182,7 +182,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 96 "..\..\Window1.xaml" + #line 96 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageDebug; @@ -190,7 +190,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 97 "..\..\Window1.xaml" + #line 97 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelDebugCount; @@ -198,7 +198,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 104 "..\..\Window1.xaml" + #line 104 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageInfo; @@ -206,7 +206,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 105 "..\..\Window1.xaml" + #line 105 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelInfoCount; @@ -214,7 +214,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 112 "..\..\Window1.xaml" + #line 112 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spFind; @@ -222,7 +222,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 113 "..\..\Window1.xaml" + #line 113 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image image2; @@ -230,7 +230,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 114 "..\..\Window1.xaml" + #line 114 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock label3; @@ -238,7 +238,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 119 "..\..\Window1.xaml" + #line 119 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxFind; @@ -246,7 +246,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 120 "..\..\Window1.xaml" + #line 120 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Button buttonFindNext; @@ -254,7 +254,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 164 "..\..\Window1.xaml" + #line 164 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Button buttonFindPrevious; @@ -262,7 +262,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 217 "..\..\Window1.xaml" + #line 217 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid MainGrid; @@ -270,7 +270,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 224 "..\..\Window1.xaml" + #line 224 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Border borderTop; @@ -278,7 +278,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 225 "..\..\Window1.xaml" + #line 225 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.ListView listView1; @@ -286,7 +286,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 258 "..\..\Window1.xaml" + #line 258 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.GridView GridView1; @@ -294,7 +294,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 282 "..\..\Window1.xaml" + #line 282 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.GridSplitter gridSplitter1; @@ -302,7 +302,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 290 "..\..\Window1.xaml" + #line 283 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid bottomGrid; @@ -310,7 +310,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 325 "..\..\Window1.xaml" + #line 318 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image image1; @@ -318,7 +318,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 326 "..\..\Window1.xaml" + #line 319 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLevel; @@ -326,7 +326,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 327 "..\..\Window1.xaml" + #line 320 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label1; @@ -334,7 +334,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 332 "..\..\Window1.xaml" + #line 325 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxTimeStamp; @@ -342,7 +342,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 333 "..\..\Window1.xaml" + #line 326 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label2; @@ -350,7 +350,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 338 "..\..\Window1.xaml" + #line 331 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMachineName; @@ -358,7 +358,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 339 "..\..\Window1.xaml" + #line 332 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelThread; @@ -366,7 +366,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 344 "..\..\Window1.xaml" + #line 337 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxThread; @@ -374,7 +374,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 346 "..\..\Window1.xaml" + #line 339 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelNDC; @@ -382,7 +382,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 351 "..\..\Window1.xaml" + #line 344 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxNDC; @@ -390,7 +390,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 352 "..\..\Window1.xaml" + #line 345 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label4; @@ -398,7 +398,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 357 "..\..\Window1.xaml" + #line 350 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxHostName; @@ -406,7 +406,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 358 "..\..\Window1.xaml" + #line 351 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label5; @@ -414,7 +414,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 363 "..\..\Window1.xaml" + #line 356 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxUserName; @@ -422,7 +422,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 364 "..\..\Window1.xaml" + #line 357 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label6; @@ -430,7 +430,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 369 "..\..\Window1.xaml" + #line 362 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxApp; @@ -438,7 +438,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 371 "..\..\Window1.xaml" + #line 364 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label7; @@ -446,7 +446,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 376 "..\..\Window1.xaml" + #line 369 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxClass; @@ -454,7 +454,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 377 "..\..\Window1.xaml" + #line 370 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label8; @@ -462,7 +462,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 382 "..\..\Window1.xaml" + #line 375 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMethod; @@ -470,7 +470,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 383 "..\..\Window1.xaml" + #line 376 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label10; @@ -478,7 +478,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 388 "..\..\Window1.xaml" + #line 381 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxIdentity; @@ -486,7 +486,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 391 "..\..\Window1.xaml" + #line 384 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label6b; @@ -494,7 +494,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 396 "..\..\Window1.xaml" + #line 389 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLog; @@ -502,7 +502,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 399 "..\..\Window1.xaml" + #line 392 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelFile; @@ -510,7 +510,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 404 "..\..\Window1.xaml" + #line 397 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxfile; @@ -518,7 +518,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 406 "..\..\Window1.xaml" + #line 399 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label9; @@ -526,7 +526,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 411 "..\..\Window1.xaml" + #line 404 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLine; @@ -534,7 +534,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 413 "..\..\Window1.xaml" + #line 406 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelLogger; @@ -542,7 +542,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 418 "..\..\Window1.xaml" + #line 411 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLogger; @@ -550,7 +550,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 420 "..\..\Window1.xaml" + #line 413 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelItem; @@ -558,7 +558,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 425 "..\..\Window1.xaml" + #line 418 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxItem; @@ -566,7 +566,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 429 "..\..\Window1.xaml" + #line 422 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TabControl tabControl1; @@ -574,7 +574,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 431 "..\..\Window1.xaml" + #line 424 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMessage; @@ -582,7 +582,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 434 "..\..\Window1.xaml" + #line 427 "..\..\MainWindow.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxThrowable; @@ -601,9 +601,9 @@ public void InitializeComponent() { return; } _contentLoaded = true; - System.Uri resourceLocater = new System.Uri("/LogViewer;component/window1.xaml", System.UriKind.Relative); + System.Uri resourceLocater = new System.Uri("/LogViewer;component/mainwindow.xaml", System.UriKind.Relative); - #line 1 "..\..\Window1.xaml" + #line 1 "..\..\MainWindow.xaml" System.Windows.Application.LoadComponent(this, resourceLocater); #line default @@ -628,21 +628,21 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object { case 1: - #line 13 "..\..\Window1.xaml" - ((LogViewer.Window1)(target)).Closed += new System.EventHandler(this.window_Closed); + #line 13 "..\..\MainWindow.xaml" + ((LogViewer.MainWindow)(target)).Closed += new System.EventHandler(this.window_Closed); #line default #line hidden return; case 2: - #line 18 "..\..\Window1.xaml" + #line 18 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.openCanExecute); #line default #line hidden - #line 18 "..\..\Window1.xaml" + #line 18 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.openExecuted); #line default @@ -650,13 +650,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 3: - #line 19 "..\..\Window1.xaml" + #line 19 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.exitCanExecute); #line default #line hidden - #line 19 "..\..\Window1.xaml" + #line 19 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.exitExecuted); #line default @@ -664,13 +664,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 4: - #line 20 "..\..\Window1.xaml" + #line 20 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.refreshCanExecute); #line default #line hidden - #line 20 "..\..\Window1.xaml" + #line 20 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.refreshExecuted); #line default @@ -678,13 +678,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 5: - #line 21 "..\..\Window1.xaml" + #line 21 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.filterCanExexute); #line default #line hidden - #line 21 "..\..\Window1.xaml" + #line 21 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.filterExecuted); #line default @@ -692,13 +692,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 6: - #line 22 "..\..\Window1.xaml" + #line 22 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.aboutCanExecute); #line default #line hidden - #line 22 "..\..\Window1.xaml" + #line 22 "..\..\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.aboutExecuted); #line default @@ -716,7 +716,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 10: this.MenuMergeItem = ((System.Windows.Controls.MenuItem)(target)); - #line 42 "..\..\Window1.xaml" + #line 42 "..\..\MainWindow.xaml" this.MenuMergeItem.Click += new System.Windows.RoutedEventHandler(this.mergeFile_Click); #line default @@ -725,7 +725,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 11: this.ResetSeparator = ((System.Windows.Controls.MenuItem)(target)); - #line 44 "..\..\Window1.xaml" + #line 44 "..\..\MainWindow.xaml" this.ResetSeparator.Click += new System.Windows.RoutedEventHandler(this.resetSeparator_Click); #line default @@ -752,7 +752,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 18: this.tbFiltered = ((System.Windows.Controls.TextBlock)(target)); - #line 76 "..\..\Window1.xaml" + #line 76 "..\..\MainWindow.xaml" this.tbFiltered.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.filterIndicator_MouseLeftButtonDown); #line default @@ -764,7 +764,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 20: this.imageError = ((System.Windows.Controls.Image)(target)); - #line 80 "..\..\Window1.xaml" + #line 80 "..\..\MainWindow.xaml" this.imageError.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageError_MouseLeftButtonDown); #line default @@ -776,7 +776,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 22: this.imageWarn = ((System.Windows.Controls.Image)(target)); - #line 88 "..\..\Window1.xaml" + #line 88 "..\..\MainWindow.xaml" this.imageWarn.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageWarn_MouseLeftButtonDown); #line default @@ -788,7 +788,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 24: this.imageDebug = ((System.Windows.Controls.Image)(target)); - #line 96 "..\..\Window1.xaml" + #line 96 "..\..\MainWindow.xaml" this.imageDebug.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageDebug_MouseLeftButtonDown); #line default @@ -800,7 +800,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 26: this.imageInfo = ((System.Windows.Controls.Image)(target)); - #line 104 "..\..\Window1.xaml" + #line 104 "..\..\MainWindow.xaml" this.imageInfo.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageInfo_MouseLeftButtonDown); #line default @@ -821,13 +821,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 31: this.textBoxFind = ((System.Windows.Controls.TextBox)(target)); - #line 119 "..\..\Window1.xaml" + #line 119 "..\..\MainWindow.xaml" this.textBoxFind.KeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_KeyDown); #line default #line hidden - #line 119 "..\..\Window1.xaml" + #line 119 "..\..\MainWindow.xaml" this.textBoxFind.PreviewKeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_PreviewKeyDown); #line default @@ -836,7 +836,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 32: this.buttonFindNext = ((System.Windows.Controls.Button)(target)); - #line 120 "..\..\Window1.xaml" + #line 120 "..\..\MainWindow.xaml" this.buttonFindNext.Click += new System.Windows.RoutedEventHandler(this.buttonFindNext_Click); #line default @@ -845,7 +845,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 33: this.buttonFindPrevious = ((System.Windows.Controls.Button)(target)); - #line 164 "..\..\Window1.xaml" + #line 164 "..\..\MainWindow.xaml" this.buttonFindPrevious.Click += new System.Windows.RoutedEventHandler(this.buttonFindPrevious_Click); #line default @@ -860,13 +860,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 36: this.listView1 = ((System.Windows.Controls.ListView)(target)); - #line 229 "..\..\Window1.xaml" + #line 229 "..\..\MainWindow.xaml" this.listView1.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.listView1_SelectionChanged); #line default #line hidden - #line 230 "..\..\Window1.xaml" + #line 230 "..\..\MainWindow.xaml" this.listView1.Drop += new System.Windows.DragEventHandler(this.listView1_Drop); #line default @@ -950,7 +950,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 62: this.label6b = ((System.Windows.Controls.Label)(target)); - #line 391 "..\..\Window1.xaml" + #line 384 "..\..\MainWindow.xaml" this.label6b.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.label6b_MouseDoubleClick); #line default diff --git a/obj/Debug/MainWindow.g.i.cs b/obj/Debug/MainWindow.g.i.cs new file mode 100644 index 0000000..edbb3ab --- /dev/null +++ b/obj/Debug/MainWindow.g.i.cs @@ -0,0 +1,1000 @@ +#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C1B3918A1C907E0D16763BA2AF37EBE8" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using LogViewer; +using Microsoft.Expression.Interactivity.Core; +using Microsoft.Expression.Interactivity.Input; +using Microsoft.Expression.Interactivity.Layout; +using Microsoft.Expression.Interactivity.Media; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interactivity; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// MainWindow + /// + public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 31 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridMenu; + + #line default + #line hidden + + + #line 35 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Menu menu1; + + #line default + #line hidden + + + #line 39 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.RecentFileList RecentFileList; + + #line default + #line hidden + + + #line 42 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem MenuMergeItem; + + #line default + #line hidden + + + #line 44 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem ResetSeparator; + + #line default + #line hidden + + + #line 51 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridTopBar; + + #line default + #line hidden + + + #line 56 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid spPath; + + #line default + #line hidden + + + #line 67 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textboxFileName; + + #line default + #line hidden + + + #line 73 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCountAndSearch; + + #line default + #line hidden + + + #line 74 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spGlobalInfo; + + #line default + #line hidden + + + #line 75 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.FilterActivity FilterIndicator; + + #line default + #line hidden + + + #line 76 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock tbFiltered; + + #line default + #line hidden + + + #line 78 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCounters; + + #line default + #line hidden + + + #line 80 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageError; + + #line default + #line hidden + + + #line 81 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelErrorCount; + + #line default + #line hidden + + + #line 88 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageWarn; + + #line default + #line hidden + + + #line 89 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelWarnCount; + + #line default + #line hidden + + + #line 96 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageDebug; + + #line default + #line hidden + + + #line 97 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelDebugCount; + + #line default + #line hidden + + + #line 104 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageInfo; + + #line default + #line hidden + + + #line 105 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelInfoCount; + + #line default + #line hidden + + + #line 112 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spFind; + + #line default + #line hidden + + + #line 113 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image2; + + #line default + #line hidden + + + #line 114 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock label3; + + #line default + #line hidden + + + #line 119 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxFind; + + #line default + #line hidden + + + #line 120 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindNext; + + #line default + #line hidden + + + #line 164 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindPrevious; + + #line default + #line hidden + + + #line 217 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid MainGrid; + + #line default + #line hidden + + + #line 224 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Border borderTop; + + #line default + #line hidden + + + #line 225 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ListView listView1; + + #line default + #line hidden + + + #line 258 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridView GridView1; + + #line default + #line hidden + + + #line 282 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridSplitter gridSplitter1; + + #line default + #line hidden + + + #line 283 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid bottomGrid; + + #line default + #line hidden + + + #line 318 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image1; + + #line default + #line hidden + + + #line 319 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLevel; + + #line default + #line hidden + + + #line 320 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label1; + + #line default + #line hidden + + + #line 325 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxTimeStamp; + + #line default + #line hidden + + + #line 326 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label2; + + #line default + #line hidden + + + #line 331 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMachineName; + + #line default + #line hidden + + + #line 332 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelThread; + + #line default + #line hidden + + + #line 337 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThread; + + #line default + #line hidden + + + #line 339 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelNDC; + + #line default + #line hidden + + + #line 344 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxNDC; + + #line default + #line hidden + + + #line 345 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label4; + + #line default + #line hidden + + + #line 350 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxHostName; + + #line default + #line hidden + + + #line 351 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label5; + + #line default + #line hidden + + + #line 356 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxUserName; + + #line default + #line hidden + + + #line 357 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6; + + #line default + #line hidden + + + #line 362 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxApp; + + #line default + #line hidden + + + #line 364 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label7; + + #line default + #line hidden + + + #line 369 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxClass; + + #line default + #line hidden + + + #line 370 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label8; + + #line default + #line hidden + + + #line 375 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMethod; + + #line default + #line hidden + + + #line 376 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label10; + + #line default + #line hidden + + + #line 381 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxIdentity; + + #line default + #line hidden + + + #line 384 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6b; + + #line default + #line hidden + + + #line 389 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLog; + + #line default + #line hidden + + + #line 392 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelFile; + + #line default + #line hidden + + + #line 397 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxfile; + + #line default + #line hidden + + + #line 399 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label9; + + #line default + #line hidden + + + #line 404 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLine; + + #line default + #line hidden + + + #line 406 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelLogger; + + #line default + #line hidden + + + #line 411 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLogger; + + #line default + #line hidden + + + #line 413 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelItem; + + #line default + #line hidden + + + #line 418 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxItem; + + #line default + #line hidden + + + #line 422 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TabControl tabControl1; + + #line default + #line hidden + + + #line 424 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMessage; + + #line default + #line hidden + + + #line 427 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThrowable; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/mainwindow.xaml", System.UriKind.Relative); + + #line 1 "..\..\MainWindow.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) { + return System.Delegate.CreateDelegate(delegateType, this, handler); + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 13 "..\..\MainWindow.xaml" + ((LogViewer.MainWindow)(target)).Closed += new System.EventHandler(this.window_Closed); + + #line default + #line hidden + return; + case 2: + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.openCanExecute); + + #line default + #line hidden + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.openExecuted); + + #line default + #line hidden + return; + case 3: + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.exitCanExecute); + + #line default + #line hidden + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.exitExecuted); + + #line default + #line hidden + return; + case 4: + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.refreshCanExecute); + + #line default + #line hidden + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.refreshExecuted); + + #line default + #line hidden + return; + case 5: + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.filterCanExexute); + + #line default + #line hidden + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.filterExecuted); + + #line default + #line hidden + return; + case 6: + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.aboutCanExecute); + + #line default + #line hidden + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.aboutExecuted); + + #line default + #line hidden + return; + case 7: + this.gridMenu = ((System.Windows.Controls.Grid)(target)); + return; + case 8: + this.menu1 = ((System.Windows.Controls.Menu)(target)); + return; + case 9: + this.RecentFileList = ((LogViewer.RecentFileList)(target)); + return; + case 10: + this.MenuMergeItem = ((System.Windows.Controls.MenuItem)(target)); + + #line 42 "..\..\MainWindow.xaml" + this.MenuMergeItem.Click += new System.Windows.RoutedEventHandler(this.mergeFile_Click); + + #line default + #line hidden + return; + case 11: + this.ResetSeparator = ((System.Windows.Controls.MenuItem)(target)); + + #line 44 "..\..\MainWindow.xaml" + this.ResetSeparator.Click += new System.Windows.RoutedEventHandler(this.resetSeparator_Click); + + #line default + #line hidden + return; + case 12: + this.gridTopBar = ((System.Windows.Controls.Grid)(target)); + return; + case 13: + this.spPath = ((System.Windows.Controls.Grid)(target)); + return; + case 14: + this.textboxFileName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 15: + this.spCountAndSearch = ((System.Windows.Controls.StackPanel)(target)); + return; + case 16: + this.spGlobalInfo = ((System.Windows.Controls.StackPanel)(target)); + return; + case 17: + this.FilterIndicator = ((LogViewer.FilterActivity)(target)); + return; + case 18: + this.tbFiltered = ((System.Windows.Controls.TextBlock)(target)); + + #line 76 "..\..\MainWindow.xaml" + this.tbFiltered.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.filterIndicator_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 19: + this.spCounters = ((System.Windows.Controls.StackPanel)(target)); + return; + case 20: + this.imageError = ((System.Windows.Controls.Image)(target)); + + #line 80 "..\..\MainWindow.xaml" + this.imageError.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageError_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 21: + this.labelErrorCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 22: + this.imageWarn = ((System.Windows.Controls.Image)(target)); + + #line 88 "..\..\MainWindow.xaml" + this.imageWarn.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageWarn_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 23: + this.labelWarnCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 24: + this.imageDebug = ((System.Windows.Controls.Image)(target)); + + #line 96 "..\..\MainWindow.xaml" + this.imageDebug.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageDebug_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 25: + this.labelDebugCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 26: + this.imageInfo = ((System.Windows.Controls.Image)(target)); + + #line 104 "..\..\MainWindow.xaml" + this.imageInfo.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageInfo_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 27: + this.labelInfoCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 28: + this.spFind = ((System.Windows.Controls.StackPanel)(target)); + return; + case 29: + this.image2 = ((System.Windows.Controls.Image)(target)); + return; + case 30: + this.label3 = ((System.Windows.Controls.TextBlock)(target)); + return; + case 31: + this.textBoxFind = ((System.Windows.Controls.TextBox)(target)); + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.KeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_KeyDown); + + #line default + #line hidden + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.PreviewKeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_PreviewKeyDown); + + #line default + #line hidden + return; + case 32: + this.buttonFindNext = ((System.Windows.Controls.Button)(target)); + + #line 120 "..\..\MainWindow.xaml" + this.buttonFindNext.Click += new System.Windows.RoutedEventHandler(this.buttonFindNext_Click); + + #line default + #line hidden + return; + case 33: + this.buttonFindPrevious = ((System.Windows.Controls.Button)(target)); + + #line 164 "..\..\MainWindow.xaml" + this.buttonFindPrevious.Click += new System.Windows.RoutedEventHandler(this.buttonFindPrevious_Click); + + #line default + #line hidden + return; + case 34: + this.MainGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 35: + this.borderTop = ((System.Windows.Controls.Border)(target)); + return; + case 36: + this.listView1 = ((System.Windows.Controls.ListView)(target)); + + #line 229 "..\..\MainWindow.xaml" + this.listView1.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.listView1_SelectionChanged); + + #line default + #line hidden + + #line 230 "..\..\MainWindow.xaml" + this.listView1.Drop += new System.Windows.DragEventHandler(this.listView1_Drop); + + #line default + #line hidden + return; + case 37: + this.GridView1 = ((System.Windows.Controls.GridView)(target)); + return; + case 38: + this.gridSplitter1 = ((System.Windows.Controls.GridSplitter)(target)); + return; + case 39: + this.bottomGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 40: + this.image1 = ((System.Windows.Controls.Image)(target)); + return; + case 41: + this.textBoxLevel = ((System.Windows.Controls.TextBox)(target)); + return; + case 42: + this.label1 = ((System.Windows.Controls.Label)(target)); + return; + case 43: + this.textBoxTimeStamp = ((System.Windows.Controls.TextBox)(target)); + return; + case 44: + this.label2 = ((System.Windows.Controls.Label)(target)); + return; + case 45: + this.textBoxMachineName = ((System.Windows.Controls.TextBox)(target)); + return; + case 46: + this.labelThread = ((System.Windows.Controls.Label)(target)); + return; + case 47: + this.textBoxThread = ((System.Windows.Controls.TextBox)(target)); + return; + case 48: + this.labelNDC = ((System.Windows.Controls.Label)(target)); + return; + case 49: + this.textBoxNDC = ((System.Windows.Controls.TextBox)(target)); + return; + case 50: + this.label4 = ((System.Windows.Controls.Label)(target)); + return; + case 51: + this.textBoxHostName = ((System.Windows.Controls.TextBox)(target)); + return; + case 52: + this.label5 = ((System.Windows.Controls.Label)(target)); + return; + case 53: + this.textBoxUserName = ((System.Windows.Controls.TextBox)(target)); + return; + case 54: + this.label6 = ((System.Windows.Controls.Label)(target)); + return; + case 55: + this.textBoxApp = ((System.Windows.Controls.TextBox)(target)); + return; + case 56: + this.label7 = ((System.Windows.Controls.Label)(target)); + return; + case 57: + this.textBoxClass = ((System.Windows.Controls.TextBox)(target)); + return; + case 58: + this.label8 = ((System.Windows.Controls.Label)(target)); + return; + case 59: + this.textBoxMethod = ((System.Windows.Controls.TextBox)(target)); + return; + case 60: + this.label10 = ((System.Windows.Controls.Label)(target)); + return; + case 61: + this.textBoxIdentity = ((System.Windows.Controls.TextBox)(target)); + return; + case 62: + this.label6b = ((System.Windows.Controls.Label)(target)); + + #line 384 "..\..\MainWindow.xaml" + this.label6b.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.label6b_MouseDoubleClick); + + #line default + #line hidden + return; + case 63: + this.textBoxLog = ((System.Windows.Controls.TextBox)(target)); + return; + case 64: + this.labelFile = ((System.Windows.Controls.Label)(target)); + return; + case 65: + this.textBoxfile = ((System.Windows.Controls.TextBox)(target)); + return; + case 66: + this.label9 = ((System.Windows.Controls.Label)(target)); + return; + case 67: + this.textBoxLine = ((System.Windows.Controls.TextBox)(target)); + return; + case 68: + this.labelLogger = ((System.Windows.Controls.Label)(target)); + return; + case 69: + this.textBoxLogger = ((System.Windows.Controls.TextBox)(target)); + return; + case 70: + this.labelItem = ((System.Windows.Controls.Label)(target)); + return; + case 71: + this.textBoxItem = ((System.Windows.Controls.TextBox)(target)); + return; + case 72: + this.tabControl1 = ((System.Windows.Controls.TabControl)(target)); + return; + case 73: + this.textBoxMessage = ((System.Windows.Controls.TextBox)(target)); + return; + case 74: + this.textBoxThrowable = ((System.Windows.Controls.TextBox)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Debug/Window1.g.i.cs b/obj/Debug/Window1.g.i.cs index ed418b5..017d14f 100644 --- a/obj/Debug/Window1.g.i.cs +++ b/obj/Debug/Window1.g.i.cs @@ -1,4 +1,4 @@ -#pragma checksum "..\..\Window1.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C43A55AAA5341875C3DAF561417F0687" +#pragma checksum "..\..\Window1.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "59FAC0422E8D4B91E0739110853535D8" //------------------------------------------------------------------------------ // // Ce code a été généré par un outil. @@ -43,10 +43,10 @@ namespace LogViewer { /// /// Window1 /// - public partial class Window1 : System.Windows.Window, System.Windows.Markup.IComponentConnector { + public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { - #line 31 "..\..\Window1.xaml" + #line 32 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid gridMenu; @@ -54,7 +54,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 35 "..\..\Window1.xaml" + #line 36 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Menu menu1; @@ -62,7 +62,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 39 "..\..\Window1.xaml" + #line 40 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal LogViewer.RecentFileList RecentFileList; @@ -70,7 +70,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 42 "..\..\Window1.xaml" + #line 43 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.MenuItem MenuMergeItem; @@ -78,7 +78,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 44 "..\..\Window1.xaml" + #line 45 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.MenuItem ResetSeparator; @@ -86,7 +86,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 51 "..\..\Window1.xaml" + #line 52 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid gridTopBar; @@ -94,7 +94,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 56 "..\..\Window1.xaml" + #line 57 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid spPath; @@ -102,7 +102,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 67 "..\..\Window1.xaml" + #line 68 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock textboxFileName; @@ -110,7 +110,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 73 "..\..\Window1.xaml" + #line 74 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spCountAndSearch; @@ -118,7 +118,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 74 "..\..\Window1.xaml" + #line 75 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spGlobalInfo; @@ -126,7 +126,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 75 "..\..\Window1.xaml" + #line 76 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal LogViewer.FilterActivity FilterIndicator; @@ -134,7 +134,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 76 "..\..\Window1.xaml" + #line 77 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock tbFiltered; @@ -142,7 +142,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 78 "..\..\Window1.xaml" + #line 79 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spCounters; @@ -150,7 +150,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 80 "..\..\Window1.xaml" + #line 81 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageError; @@ -158,7 +158,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 81 "..\..\Window1.xaml" + #line 82 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelErrorCount; @@ -166,7 +166,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 88 "..\..\Window1.xaml" + #line 89 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageWarn; @@ -174,7 +174,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 89 "..\..\Window1.xaml" + #line 90 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelWarnCount; @@ -182,7 +182,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 96 "..\..\Window1.xaml" + #line 97 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageDebug; @@ -190,7 +190,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 97 "..\..\Window1.xaml" + #line 98 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelDebugCount; @@ -198,7 +198,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 104 "..\..\Window1.xaml" + #line 105 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image imageInfo; @@ -206,7 +206,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 105 "..\..\Window1.xaml" + #line 106 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock labelInfoCount; @@ -214,7 +214,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 112 "..\..\Window1.xaml" + #line 113 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.StackPanel spFind; @@ -222,7 +222,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 113 "..\..\Window1.xaml" + #line 114 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image image2; @@ -230,7 +230,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 114 "..\..\Window1.xaml" + #line 115 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBlock label3; @@ -238,7 +238,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 119 "..\..\Window1.xaml" + #line 120 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxFind; @@ -246,7 +246,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 120 "..\..\Window1.xaml" + #line 121 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Button buttonFindNext; @@ -254,7 +254,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 164 "..\..\Window1.xaml" + #line 165 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Button buttonFindPrevious; @@ -262,7 +262,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 217 "..\..\Window1.xaml" + #line 218 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid MainGrid; @@ -270,7 +270,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 224 "..\..\Window1.xaml" + #line 225 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Border borderTop; @@ -278,7 +278,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 225 "..\..\Window1.xaml" + #line 226 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.ListView listView1; @@ -286,7 +286,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 258 "..\..\Window1.xaml" + #line 259 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.GridView GridView1; @@ -294,7 +294,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 282 "..\..\Window1.xaml" + #line 283 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.GridSplitter gridSplitter1; @@ -302,7 +302,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 290 "..\..\Window1.xaml" + #line 291 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Grid bottomGrid; @@ -310,7 +310,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 325 "..\..\Window1.xaml" + #line 326 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Image image1; @@ -318,7 +318,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 326 "..\..\Window1.xaml" + #line 327 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLevel; @@ -326,7 +326,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 327 "..\..\Window1.xaml" + #line 328 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label1; @@ -334,7 +334,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 332 "..\..\Window1.xaml" + #line 333 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxTimeStamp; @@ -342,7 +342,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 333 "..\..\Window1.xaml" + #line 334 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label2; @@ -350,7 +350,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 338 "..\..\Window1.xaml" + #line 339 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMachineName; @@ -358,7 +358,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 339 "..\..\Window1.xaml" + #line 340 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelThread; @@ -366,7 +366,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 344 "..\..\Window1.xaml" + #line 345 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxThread; @@ -374,7 +374,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 346 "..\..\Window1.xaml" + #line 347 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelNDC; @@ -382,7 +382,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 351 "..\..\Window1.xaml" + #line 352 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxNDC; @@ -390,7 +390,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 352 "..\..\Window1.xaml" + #line 353 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label4; @@ -398,7 +398,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 357 "..\..\Window1.xaml" + #line 358 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxHostName; @@ -406,7 +406,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 358 "..\..\Window1.xaml" + #line 359 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label5; @@ -414,7 +414,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 363 "..\..\Window1.xaml" + #line 364 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxUserName; @@ -422,7 +422,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 364 "..\..\Window1.xaml" + #line 365 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label6; @@ -430,7 +430,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 369 "..\..\Window1.xaml" + #line 370 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxApp; @@ -438,7 +438,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 371 "..\..\Window1.xaml" + #line 372 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label7; @@ -446,7 +446,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 376 "..\..\Window1.xaml" + #line 377 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxClass; @@ -454,7 +454,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 377 "..\..\Window1.xaml" + #line 378 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label8; @@ -462,7 +462,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 382 "..\..\Window1.xaml" + #line 383 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMethod; @@ -470,7 +470,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 383 "..\..\Window1.xaml" + #line 384 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label10; @@ -478,7 +478,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 388 "..\..\Window1.xaml" + #line 389 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxIdentity; @@ -486,7 +486,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 391 "..\..\Window1.xaml" + #line 392 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label6b; @@ -494,7 +494,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 396 "..\..\Window1.xaml" + #line 397 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLog; @@ -502,7 +502,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 399 "..\..\Window1.xaml" + #line 400 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelFile; @@ -510,7 +510,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 404 "..\..\Window1.xaml" + #line 405 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxfile; @@ -518,7 +518,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 406 "..\..\Window1.xaml" + #line 407 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label label9; @@ -526,7 +526,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 411 "..\..\Window1.xaml" + #line 412 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLine; @@ -534,7 +534,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 413 "..\..\Window1.xaml" + #line 414 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelLogger; @@ -542,7 +542,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 418 "..\..\Window1.xaml" + #line 419 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxLogger; @@ -550,7 +550,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 420 "..\..\Window1.xaml" + #line 421 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.Label labelItem; @@ -558,7 +558,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 425 "..\..\Window1.xaml" + #line 426 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxItem; @@ -566,7 +566,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 429 "..\..\Window1.xaml" + #line 430 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TabControl tabControl1; @@ -574,7 +574,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 431 "..\..\Window1.xaml" + #line 432 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxMessage; @@ -582,7 +582,7 @@ public partial class Window1 : System.Windows.Window, System.Windows.Markup.ICom #line hidden - #line 434 "..\..\Window1.xaml" + #line 435 "..\..\Window1.xaml" [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] internal System.Windows.Controls.TextBox textBoxThrowable; @@ -628,21 +628,21 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object { case 1: - #line 13 "..\..\Window1.xaml" - ((LogViewer.Window1)(target)).Closed += new System.EventHandler(this.window_Closed); + #line 14 "..\..\Window1.xaml" + ((LogViewer.MainWindow)(target)).Closed += new System.EventHandler(this.window_Closed); #line default #line hidden return; case 2: - #line 18 "..\..\Window1.xaml" + #line 19 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.openCanExecute); #line default #line hidden - #line 18 "..\..\Window1.xaml" + #line 19 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.openExecuted); #line default @@ -650,13 +650,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 3: - #line 19 "..\..\Window1.xaml" + #line 20 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.exitCanExecute); #line default #line hidden - #line 19 "..\..\Window1.xaml" + #line 20 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.exitExecuted); #line default @@ -664,13 +664,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 4: - #line 20 "..\..\Window1.xaml" + #line 21 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.refreshCanExecute); #line default #line hidden - #line 20 "..\..\Window1.xaml" + #line 21 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.refreshExecuted); #line default @@ -678,13 +678,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 5: - #line 21 "..\..\Window1.xaml" + #line 22 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.filterCanExexute); #line default #line hidden - #line 21 "..\..\Window1.xaml" + #line 22 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.filterExecuted); #line default @@ -692,13 +692,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object return; case 6: - #line 22 "..\..\Window1.xaml" + #line 23 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.aboutCanExecute); #line default #line hidden - #line 22 "..\..\Window1.xaml" + #line 23 "..\..\Window1.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.aboutExecuted); #line default @@ -716,7 +716,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 10: this.MenuMergeItem = ((System.Windows.Controls.MenuItem)(target)); - #line 42 "..\..\Window1.xaml" + #line 43 "..\..\Window1.xaml" this.MenuMergeItem.Click += new System.Windows.RoutedEventHandler(this.mergeFile_Click); #line default @@ -725,7 +725,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 11: this.ResetSeparator = ((System.Windows.Controls.MenuItem)(target)); - #line 44 "..\..\Window1.xaml" + #line 45 "..\..\Window1.xaml" this.ResetSeparator.Click += new System.Windows.RoutedEventHandler(this.resetSeparator_Click); #line default @@ -752,7 +752,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 18: this.tbFiltered = ((System.Windows.Controls.TextBlock)(target)); - #line 76 "..\..\Window1.xaml" + #line 77 "..\..\Window1.xaml" this.tbFiltered.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.filterIndicator_MouseLeftButtonDown); #line default @@ -764,7 +764,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 20: this.imageError = ((System.Windows.Controls.Image)(target)); - #line 80 "..\..\Window1.xaml" + #line 81 "..\..\Window1.xaml" this.imageError.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageError_MouseLeftButtonDown); #line default @@ -776,7 +776,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 22: this.imageWarn = ((System.Windows.Controls.Image)(target)); - #line 88 "..\..\Window1.xaml" + #line 89 "..\..\Window1.xaml" this.imageWarn.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageWarn_MouseLeftButtonDown); #line default @@ -788,7 +788,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 24: this.imageDebug = ((System.Windows.Controls.Image)(target)); - #line 96 "..\..\Window1.xaml" + #line 97 "..\..\Window1.xaml" this.imageDebug.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageDebug_MouseLeftButtonDown); #line default @@ -800,7 +800,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 26: this.imageInfo = ((System.Windows.Controls.Image)(target)); - #line 104 "..\..\Window1.xaml" + #line 105 "..\..\Window1.xaml" this.imageInfo.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageInfo_MouseLeftButtonDown); #line default @@ -821,13 +821,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 31: this.textBoxFind = ((System.Windows.Controls.TextBox)(target)); - #line 119 "..\..\Window1.xaml" + #line 120 "..\..\Window1.xaml" this.textBoxFind.KeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_KeyDown); #line default #line hidden - #line 119 "..\..\Window1.xaml" + #line 120 "..\..\Window1.xaml" this.textBoxFind.PreviewKeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_PreviewKeyDown); #line default @@ -836,7 +836,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 32: this.buttonFindNext = ((System.Windows.Controls.Button)(target)); - #line 120 "..\..\Window1.xaml" + #line 121 "..\..\Window1.xaml" this.buttonFindNext.Click += new System.Windows.RoutedEventHandler(this.buttonFindNext_Click); #line default @@ -845,7 +845,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 33: this.buttonFindPrevious = ((System.Windows.Controls.Button)(target)); - #line 164 "..\..\Window1.xaml" + #line 165 "..\..\Window1.xaml" this.buttonFindPrevious.Click += new System.Windows.RoutedEventHandler(this.buttonFindPrevious_Click); #line default @@ -860,13 +860,13 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 36: this.listView1 = ((System.Windows.Controls.ListView)(target)); - #line 229 "..\..\Window1.xaml" + #line 230 "..\..\Window1.xaml" this.listView1.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.listView1_SelectionChanged); #line default #line hidden - #line 230 "..\..\Window1.xaml" + #line 231 "..\..\Window1.xaml" this.listView1.Drop += new System.Windows.DragEventHandler(this.listView1_Drop); #line default @@ -950,7 +950,7 @@ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object case 62: this.label6b = ((System.Windows.Controls.Label)(target)); - #line 391 "..\..\Window1.xaml" + #line 392 "..\..\Window1.xaml" this.label6b.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.label6b_MouseDoubleClick); #line default diff --git a/obj/Release/About.baml b/obj/Release/About.baml new file mode 100644 index 0000000000000000000000000000000000000000..be71a16c45b4f021e67065ee2b964749fbf3e7c9 GIT binary patch literal 4615 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 +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using Microsoft.Expression.Media.Effects; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// About + /// + public partial class About : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 59 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel stackPanel; + + #line default + #line hidden + + + #line 64 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssemblyName; + + #line default + #line hidden + + + #line 70 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssemblyVersion; + + #line default + #line hidden + + + #line 77 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssembly; + + #line default + #line hidden + + + #line 79 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label; + + #line default + #line hidden + + + #line 82 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.RichTextBox RichTextBox1; + + #line default + #line hidden + + + #line 131 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button ButtonOk; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/about.xaml", System.UriKind.Relative); + + #line 1 "..\..\About.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 8 "..\..\About.xaml" + ((LogViewer.About)(target)).Loaded += new System.Windows.RoutedEventHandler(this.window_Loaded); + + #line default + #line hidden + return; + case 2: + this.stackPanel = ((System.Windows.Controls.StackPanel)(target)); + return; + case 3: + this.LabelAssemblyName = ((System.Windows.Controls.Label)(target)); + return; + case 4: + this.LabelAssemblyVersion = ((System.Windows.Controls.Label)(target)); + return; + case 5: + this.LabelAssembly = ((System.Windows.Controls.Label)(target)); + return; + case 6: + this.label = ((System.Windows.Controls.Label)(target)); + return; + case 7: + this.RichTextBox1 = ((System.Windows.Controls.RichTextBox)(target)); + return; + case 8: + this.ButtonOk = ((System.Windows.Controls.Button)(target)); + + #line 131 "..\..\About.xaml" + this.ButtonOk.Click += new System.Windows.RoutedEventHandler(this.buttonOK_Click); + + #line default + #line hidden + return; + case 9: + + #line 132 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + case 10: + + #line 133 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + case 11: + + #line 134 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/About.g.i.cs b/obj/Release/About.g.i.cs new file mode 100644 index 0000000..e43cbce --- /dev/null +++ b/obj/Release/About.g.i.cs @@ -0,0 +1,193 @@ +#pragma checksum "..\..\About.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "DC63D37AD819FC33C7090B1900A2CB02" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using Microsoft.Expression.Media.Effects; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// About + /// + public partial class About : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 59 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel stackPanel; + + #line default + #line hidden + + + #line 64 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssemblyName; + + #line default + #line hidden + + + #line 70 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssemblyVersion; + + #line default + #line hidden + + + #line 77 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label LabelAssembly; + + #line default + #line hidden + + + #line 79 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label; + + #line default + #line hidden + + + #line 82 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.RichTextBox RichTextBox1; + + #line default + #line hidden + + + #line 131 "..\..\About.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button ButtonOk; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/about.xaml", System.UriKind.Relative); + + #line 1 "..\..\About.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 8 "..\..\About.xaml" + ((LogViewer.About)(target)).Loaded += new System.Windows.RoutedEventHandler(this.window_Loaded); + + #line default + #line hidden + return; + case 2: + this.stackPanel = ((System.Windows.Controls.StackPanel)(target)); + return; + case 3: + this.LabelAssemblyName = ((System.Windows.Controls.Label)(target)); + return; + case 4: + this.LabelAssemblyVersion = ((System.Windows.Controls.Label)(target)); + return; + case 5: + this.LabelAssembly = ((System.Windows.Controls.Label)(target)); + return; + case 6: + this.label = ((System.Windows.Controls.Label)(target)); + return; + case 7: + this.RichTextBox1 = ((System.Windows.Controls.RichTextBox)(target)); + return; + case 8: + this.ButtonOk = ((System.Windows.Controls.Button)(target)); + + #line 131 "..\..\About.xaml" + this.ButtonOk.Click += new System.Windows.RoutedEventHandler(this.buttonOK_Click); + + #line default + #line hidden + return; + case 9: + + #line 132 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + case 10: + + #line 133 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + case 11: + + #line 134 "..\..\About.xaml" + ((System.Windows.Documents.Hyperlink)(target)).RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.hyperlink_RequestNavigate); + + #line default + #line hidden + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/App.g.cs b/obj/Release/App.g.cs new file mode 100644 index 0000000..f3dec87 --- /dev/null +++ b/obj/Release/App.g.cs @@ -0,0 +1,69 @@ +#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "EA2C0E376D8ECAA59354CBFAE19DD05F" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// App + /// + public partial class App : System.Windows.Application { + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + + #line 4 "..\..\App.xaml" + this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); + + #line default + #line hidden + } + + /// + /// Application Entry Point. + /// + [System.STAThreadAttribute()] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public static void Main() { + LogViewer.App app = new LogViewer.App(); + app.InitializeComponent(); + app.Run(); + } + } +} + diff --git a/obj/Release/App.g.i.cs b/obj/Release/App.g.i.cs new file mode 100644 index 0000000..f3dec87 --- /dev/null +++ b/obj/Release/App.g.i.cs @@ -0,0 +1,69 @@ +#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "EA2C0E376D8ECAA59354CBFAE19DD05F" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// App + /// + public partial class App : System.Windows.Application { + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + + #line 4 "..\..\App.xaml" + this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); + + #line default + #line hidden + } + + /// + /// Application Entry Point. + /// + [System.STAThreadAttribute()] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public static void Main() { + LogViewer.App app = new LogViewer.App(); + app.InitializeComponent(); + app.Run(); + } + } +} + diff --git a/obj/Release/CoreCompileInputs.cache b/obj/Release/CoreCompileInputs.cache new file mode 100644 index 0000000..279b5be --- /dev/null +++ b/obj/Release/CoreCompileInputs.cache @@ -0,0 +1 @@ +4db234451affa0a9bd37933818a6454860f67e70 diff --git a/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..9f557574f3ed1aa15bef8413384ef71abfab96af GIT binary patch literal 8116 zcmeHMS#ugk5C$D%wM`30%`#H4$H)nVE41Do;#OVJE-^w-nVGuz#hNG1}AfAOJTdd`d?ab9p+3MHD_ zT;nQWZcPUc7iLj-p72*oE7{B%NX3Q!IA1Vx^vPz5fvW=vk9`QVWNtQ72^uc9pFy`S zw!nYf$jvqj&4p$@?-X)umQ51m;wO-v2HbTBZ`IczMfrA#lN5g7CLxFyYOw=9T@`Z#FG#RR5)mIwj+n27#`2OcR_1N{g zUgpQMxcO22!BH6(=c)7&F-u&6t%c;E&bJ-SWDS_KH!DnUs`ITQ6{p)$G*Lq|s|ylZ zTxr?eACSU{X&@C|Lq-RcaRBAgk){{I=UX6eA75SKs_n8a0UjOLH?-@$ffXriP)f)r zC_UFWCp5YK5OAu2uek^PAxAm&w4|;C3aZcq2|ltaOW`5Y_sHp-9MpztF~*E>!$>5? zk&Y#kNdvz~6Jvi(*1AfAhvtdvYilw%^EdE8a@%~4%6gZ7`}Q+ka7U~$H-HM`^4(0- zwWcNaTiJ}KY$09V*xzGwU%bT@7FfY9%;%S8=ODMZw4VK(9ABxZap+-vxN7~%*(H-B z6OF@)qTLh+^RL{dhP;7B1{#MAjSO^HFV6KO`N64iB-5!0DozqXcOa2Eg#>@5h@^;2 z6FH4!+BkzWVVp%$+O76Ir{x+t(j6wjikw}`e7RDOe8}wfoH=jKWCt#2-`!l<*)z@| zr+R7GTJeh_kji>4T5B9SAj?8xdF~}>OElhFRd9hRuu7oN!K|YbR0Sp6?a1TZ_jpX3 z*_)91h6Fv2e$7ByJ{@*0?|n`n|rz@`R_jYh1+AG}h+K+1zY? zDfJ!xPfVvtk@Ph#5ivX5_Z;IgmM2Wdb&V@w33eb&x~6)A9Q=DH%pARZ(+=Hy;~I81 zPw3ue_7-b_8jQJ)V;-F_27N<}J2d*uRt>a94^5fq@P`HC1~RCez+eDsxwu?DXmbX2 zvuL4%XW_rO!b1uwqDE52P2{@!rCcMEGFNum5?y2TM$M-#_>NgCJu_cd%4X<3Mu53} zD?B)4rP)MRR)wo^3kCQy`F~3gMtZF8PLm$KM=@A&*}^4gVU(5$gSO1woyGZkXzzUo zKGWYcv_O$AtjJamZ#1iCuGYZC4riM|7#<5u1=j<743=c=7w%y@N>GaUzwNW+o9l4fgX5;VgfO zdzK+K?TnuhX(P^A638zI(uxzLBpJR3TA}XlBA6E^*lX@PqN7ZFZ+g8`?jAzMdCc~= z#sD}v-nO~!hI77;0>rv2-Z0M%ksctD9jA8R^ntPnv>7+hbMF5UPU|6}#bY$DR-Xh~ zc;U&7ub*v>>Aw)tM9BBCOzBI^zHH~dX0oMLH_M1DjP**L(M-9 zJE;+d5F42H_0;5s;vZmYW4m_|fi3?`MBd29dD&6Ym9AhunIDeB?uWhjLry`xU7wmt z=uu`;o36_*m`02ckXMt)1b?aRopy##yr+v+pQmeebe1D7O;Id8H`2bbauDO zIuyRq1<#(bgjEkt2rnDlkCGZ`%2iN4##lxY&%zjwko9^jYhGqHb1*zjhq(}hITbE6 XSphxce~-?sldg_O=T>y3w|@FRotT}3 literal 0 HcmV?d00001 diff --git a/obj/Release/Filter.baml b/obj/Release/Filter.baml new file mode 100644 index 0000000000000000000000000000000000000000..50105a5ad975d4ffad7cf6c2cdd5da03bfccd443 GIT binary patch literal 3908 zcmds)&u`mg7{{N)j_t%rnzY>jsU?*bCfGVRUD7tK)We##tXhAJw)-JAB;4d}Yb~*h z?W`>~E*!b%^V+d%citq>P9$m^+t2fTKYo7Y zZ5jYpU<2mh3Lcm7>|_5g1{7Z~lmSRC8#^~OvQNz6vv?nJ{<*TKHEm*YcyVYw2CKI; zyZEO(YIAhtdV8y>)vuAmP2(QXXUpST z+vV!Sq}nJ?R!Dhb=vEvyuA9Unx~`YvgymeSJdrePV|wo*4*WBZ!EeK2;pRGJ(+P+QHhy}$!<5Q8{y7)%~kHx4bE zw3ORu^dGpkrl!=1`o!e;bh$!G)#<^R*um((0ppQ{cW5rfFuw&EV7SZis~Dn{{GkI2d6ixu!20YJ)V!3uk!vvJ2Tw z)!ZTWb<@}*rhQn*C)m}LdzCQ{PqWaLdqM3LsI@5~!mm;~$6 zDU3o^fHevtt5dB-3Tcs@CT^0!7|EM+1;Q@Did zKrw$r<*hba>9rlvu0N%>38~f<0=^7h&mYf0Z_bwEruP_i3 zK>7c}S-S9MmOX18d#2segO8g9?hzK6^qj`0OYCvknfRQ>F5pR;Rm-DeyznE9m43ov zcUB*gd9t9LC&)q{3bcD#XN9-Qn-*y`9K%h zqNnlM0wMgR2DTB-0w4brv3Q#J#34lN3nOulFTmtEMKWCuGRYm9SSI&bGxg$m3P@r= z14lIDg|KHGqVXjoXhc^(5~YkNnGO|Kh-IleCpir;eAb0aY}ytFk7(A$&|?;T^AH3R z^CpV;1$Fb2^t2<_uXrx3y3!pgZ0?#w#deL3MatvwV&R#GIDFBFU`V|cB55XqG)WxF ztMj#&q2SN8J5fCp$2P>_%SCV`n06$@WDugiL(?m2eOJ@TNT}%o31WSQ8wUK*JE8*~ zP0z{o2~qj_5mXsD;1@|Z6{PFy(BxIavR{dYyNU1!U>*@%zH$UtO7ff{p{hZse22ufn*mcQ)jh=qJY5%c9E$Pyg-MM6ynp;)A_R*ii&&Z3Z5m-Ts(>UCMbA;jY= zBah!_@`?TnIMQPpA7=yIpM-4c)S9YgMX|7g$}yJU)ahCKAYsjj$gu4LE)WglPfxG! zSBSl9ytME0jE2o0zr1_qVH{sI0!I?uC8Bx!`N?=v9m?Y#J2Fo!HvNo-?S(uV*Er1L zD@L#gj(jwUKSaIXTl{Bm5jkm0bM WrV|{`HXIvYGJ-}DTptF5ulPUA6;cua literal 0 HcmV?d00001 diff --git a/obj/Release/Filter.g.cs b/obj/Release/Filter.g.cs new file mode 100644 index 0000000..19db410 --- /dev/null +++ b/obj/Release/Filter.g.cs @@ -0,0 +1,315 @@ +#pragma checksum "..\..\Filter.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "E1228C874C7BD1F5F433E24ECBAF3E7D" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// Filter + /// + public partial class Filter : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 1 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.Filter window; + + #line default + #line hidden + + + #line 20 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonClear; + + #line default + #line hidden + + + #line 21 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonCancel; + + #line default + #line hidden + + + #line 22 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonOK; + + #line default + #line hidden + + + #line 24 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid MainGrid; + + #line default + #line hidden + + + #line 51 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxUserName; + + #line default + #line hidden + + + #line 57 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxIdentity; + + #line default + #line hidden + + + #line 63 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxLevel; + + #line default + #line hidden + + + #line 69 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMessage; + + #line default + #line hidden + + + #line 75 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxThread; + + #line default + #line hidden + + + #line 81 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxNDC; + + #line default + #line hidden + + + #line 87 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxMachineName; + + #line default + #line hidden + + + #line 93 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxHostName; + + #line default + #line hidden + + + #line 99 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxApplication; + + #line default + #line hidden + + + #line 105 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThrowable; + + #line default + #line hidden + + + #line 111 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxClass; + + #line default + #line hidden + + + #line 117 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxMethod; + + #line default + #line hidden + + + #line 123 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxFile; + + #line default + #line hidden + + + #line 129 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboLogFile; + + #line default + #line hidden + + + #line 135 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboLogger; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/filter.xaml", System.UriKind.Relative); + + #line 1 "..\..\Filter.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.window = ((LogViewer.Filter)(target)); + return; + case 2: + this.buttonClear = ((System.Windows.Controls.Button)(target)); + + #line 20 "..\..\Filter.xaml" + this.buttonClear.Click += new System.Windows.RoutedEventHandler(this.buttonClear_Click); + + #line default + #line hidden + return; + case 3: + this.buttonCancel = ((System.Windows.Controls.Button)(target)); + + #line 21 "..\..\Filter.xaml" + this.buttonCancel.Click += new System.Windows.RoutedEventHandler(this.buttonCancel_Click); + + #line default + #line hidden + return; + case 4: + this.buttonOK = ((System.Windows.Controls.Button)(target)); + + #line 22 "..\..\Filter.xaml" + this.buttonOK.Click += new System.Windows.RoutedEventHandler(this.buttonOK_Click); + + #line default + #line hidden + return; + case 5: + this.MainGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 6: + this.comboBoxUserName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 7: + this.comboBoxIdentity = ((System.Windows.Controls.ComboBox)(target)); + return; + case 8: + this.comboBoxLevel = ((System.Windows.Controls.ComboBox)(target)); + return; + case 9: + this.textBoxMessage = ((System.Windows.Controls.TextBox)(target)); + return; + case 10: + this.comboBoxThread = ((System.Windows.Controls.ComboBox)(target)); + return; + case 11: + this.comboBoxNDC = ((System.Windows.Controls.ComboBox)(target)); + return; + case 12: + this.comboBoxMachineName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 13: + this.comboBoxHostName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 14: + this.comboBoxApplication = ((System.Windows.Controls.ComboBox)(target)); + return; + case 15: + this.textBoxThrowable = ((System.Windows.Controls.TextBox)(target)); + return; + case 16: + this.comboBoxClass = ((System.Windows.Controls.ComboBox)(target)); + return; + case 17: + this.comboBoxMethod = ((System.Windows.Controls.ComboBox)(target)); + return; + case 18: + this.comboBoxFile = ((System.Windows.Controls.ComboBox)(target)); + return; + case 19: + this.comboLogFile = ((System.Windows.Controls.ComboBox)(target)); + return; + case 20: + this.comboLogger = ((System.Windows.Controls.ComboBox)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/Filter.g.i.cs b/obj/Release/Filter.g.i.cs new file mode 100644 index 0000000..19db410 --- /dev/null +++ b/obj/Release/Filter.g.i.cs @@ -0,0 +1,315 @@ +#pragma checksum "..\..\Filter.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "E1228C874C7BD1F5F433E24ECBAF3E7D" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// Filter + /// + public partial class Filter : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 1 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.Filter window; + + #line default + #line hidden + + + #line 20 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonClear; + + #line default + #line hidden + + + #line 21 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonCancel; + + #line default + #line hidden + + + #line 22 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonOK; + + #line default + #line hidden + + + #line 24 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid MainGrid; + + #line default + #line hidden + + + #line 51 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxUserName; + + #line default + #line hidden + + + #line 57 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxIdentity; + + #line default + #line hidden + + + #line 63 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxLevel; + + #line default + #line hidden + + + #line 69 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMessage; + + #line default + #line hidden + + + #line 75 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxThread; + + #line default + #line hidden + + + #line 81 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxNDC; + + #line default + #line hidden + + + #line 87 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxMachineName; + + #line default + #line hidden + + + #line 93 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxHostName; + + #line default + #line hidden + + + #line 99 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxApplication; + + #line default + #line hidden + + + #line 105 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThrowable; + + #line default + #line hidden + + + #line 111 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxClass; + + #line default + #line hidden + + + #line 117 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxMethod; + + #line default + #line hidden + + + #line 123 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboBoxFile; + + #line default + #line hidden + + + #line 129 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboLogFile; + + #line default + #line hidden + + + #line 135 "..\..\Filter.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ComboBox comboLogger; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/filter.xaml", System.UriKind.Relative); + + #line 1 "..\..\Filter.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.window = ((LogViewer.Filter)(target)); + return; + case 2: + this.buttonClear = ((System.Windows.Controls.Button)(target)); + + #line 20 "..\..\Filter.xaml" + this.buttonClear.Click += new System.Windows.RoutedEventHandler(this.buttonClear_Click); + + #line default + #line hidden + return; + case 3: + this.buttonCancel = ((System.Windows.Controls.Button)(target)); + + #line 21 "..\..\Filter.xaml" + this.buttonCancel.Click += new System.Windows.RoutedEventHandler(this.buttonCancel_Click); + + #line default + #line hidden + return; + case 4: + this.buttonOK = ((System.Windows.Controls.Button)(target)); + + #line 22 "..\..\Filter.xaml" + this.buttonOK.Click += new System.Windows.RoutedEventHandler(this.buttonOK_Click); + + #line default + #line hidden + return; + case 5: + this.MainGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 6: + this.comboBoxUserName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 7: + this.comboBoxIdentity = ((System.Windows.Controls.ComboBox)(target)); + return; + case 8: + this.comboBoxLevel = ((System.Windows.Controls.ComboBox)(target)); + return; + case 9: + this.textBoxMessage = ((System.Windows.Controls.TextBox)(target)); + return; + case 10: + this.comboBoxThread = ((System.Windows.Controls.ComboBox)(target)); + return; + case 11: + this.comboBoxNDC = ((System.Windows.Controls.ComboBox)(target)); + return; + case 12: + this.comboBoxMachineName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 13: + this.comboBoxHostName = ((System.Windows.Controls.ComboBox)(target)); + return; + case 14: + this.comboBoxApplication = ((System.Windows.Controls.ComboBox)(target)); + return; + case 15: + this.textBoxThrowable = ((System.Windows.Controls.TextBox)(target)); + return; + case 16: + this.comboBoxClass = ((System.Windows.Controls.ComboBox)(target)); + return; + case 17: + this.comboBoxMethod = ((System.Windows.Controls.ComboBox)(target)); + return; + case 18: + this.comboBoxFile = ((System.Windows.Controls.ComboBox)(target)); + return; + case 19: + this.comboLogFile = ((System.Windows.Controls.ComboBox)(target)); + return; + case 20: + this.comboLogger = ((System.Windows.Controls.ComboBox)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/FilterActivity.baml b/obj/Release/FilterActivity.baml new file mode 100644 index 0000000000000000000000000000000000000000..36b911e81f29ddb52d2a098f85fc71a4a6e252e1 GIT binary patch literal 3428 zcmb_ee{2)?6@Pd4?(91|zaVRqj^K3My09e|J5HR0HC4#3ZY4m#A+!@xbFnXp7u#pf z=aQgminOimRHmV+En%Q7QnM;ZtgyDM(NrNOp%FHASYN zGZVKnmeH0pGPb41YpeS*L-AN-n=#REjv2|eU|?uC*wPfzqrp(45p3G9mxpklWu%Ry zt=ojE)3m-6-hBc*y_&bj(i6r3(;E8{f-diZ)=}F|ZKS$|KmY3%Hjqx*^B)4Ac1PNSgjraV zdBsy8tiB47ctY8eM$)iI*wL;G`64uGkq9pT7V_4DT@HGEMG`$oVuzvrskmRaMhv^p zBK2X}6Y4kJpw@&(^^`$}PJFXg6E@?qXr~!Btqv=b9@QA!T)yNhlPQ6cCt$Uq$bfyi zJ$iIe8*!>yL~@aayW-w%L}R+PH5nsSNN%rn>uFLdjFSu|HW>twq^nqgSqEHnSj9-y zxfJ01vr9g&hc1f)dOTyOB_5DB_4IT%hnoFeCmck2FSXVUj}>kZCKWnn+~W@F9TC%m zZ=bXV`TeIy^~xa8WIXF<>9`N_2a5c`==YGsRJvh(&7SXe$BhJ;@Y>Fl9w7}+lw6&K zeNI&?Ex_P?>DFbEpA=(RIEf19g`KN~^A?0FqRR#0Tt&bIc2U9Z9oHRq+~){{Uv=dP z)nyLCLK}c+2bCqB9j3j~1BhPjTaIv+3>vbP%&}rPdwb9jEVAA{y7<2*6xrCb1a&U9 zu>^XS3KL2xxn1O{_ktq@nzhzYvRUHt}@`LYw$zK7RSOKHA}x5vmofZkXlW~<72zy__k zX_q6F9&@hoJnaI%KhV(;kgkd+oPY8+&Y!ssmxI@p?D)Y&16LMT$QsFQIPx2-pw$1>kS#Jk8}dw*dLeiFK_J!Y~S;QoNYW^B~1V3 z=Th$QGiUk!n>R#!CHW$cU;HOnK;@r&AG36gf*b|crb~H@e$Palp~s&7(M5@&EJcTm z8OR;~;BEZe^J`*zhzMEwaX*ixpYsATE{Yfz1q+!v5vLD6E?`aIs)*jUUkP~W?1Yr9 z{nPISIPd~P*%2Gs^ za&xzy<3|5YY=E-qVi~81aZxb){&@+hI}XmAEW||- z4*j5C#JQUX-8l2|yNKgso7~yUKa_a)wvUutblqic{$b98cJnVeoLu^< zC!a!!vL`PNa(95-?5P&Eg7baF98Pa4_8_fiqy=5+mP(J`RrBnB2AMqN@DypJ!dz43 zauEDlh>RK5$8OTcs<&iiCaazcj@YUNnn+)&o@^esP)z!@MQdyfQd|aNqt?_w*H=1I zE&7Gy3TQ$4qK1`z`~%P0uU2;B)SpQYFyQ@^$H{j(MeNc~a5(o2QG}u_MHJ+wg`I9@ ztKnakaf(*bgT45ME<}0PCYmP literal 0 HcmV?d00001 diff --git a/obj/Release/FilterActivity.g.cs b/obj/Release/FilterActivity.g.cs new file mode 100644 index 0000000..9732d66 --- /dev/null +++ b/obj/Release/FilterActivity.g.cs @@ -0,0 +1,165 @@ +#pragma checksum "..\..\FilterActivity.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "327E93C949085E16BCE308E9134B6455" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// FilterActivity + /// + public partial class FilterActivity : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 8 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.FilterActivity UserControl; + + #line default + #line hidden + + + #line 12 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid LayoutRoot; + + #line default + #line hidden + + + #line 14 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualStateGroup FilterStateGroup; + + #line default + #line hidden + + + #line 18 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualState Filtered; + + #line default + #line hidden + + + #line 40 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualState NotFiltered; + + #line default + #line hidden + + + #line 43 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Group; + + #line default + #line hidden + + + #line 44 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Path Path; + + #line default + #line hidden + + + #line 45 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Path Path_0; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/filteractivity.xaml", System.UriKind.Relative); + + #line 1 "..\..\FilterActivity.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.UserControl = ((LogViewer.FilterActivity)(target)); + return; + case 2: + this.LayoutRoot = ((System.Windows.Controls.Grid)(target)); + return; + case 3: + this.FilterStateGroup = ((System.Windows.VisualStateGroup)(target)); + return; + case 4: + this.Filtered = ((System.Windows.VisualState)(target)); + return; + case 5: + this.NotFiltered = ((System.Windows.VisualState)(target)); + return; + case 6: + this.Group = ((System.Windows.Controls.Canvas)(target)); + return; + case 7: + this.Path = ((System.Windows.Shapes.Path)(target)); + return; + case 8: + this.Path_0 = ((System.Windows.Shapes.Path)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/FilterActivity.g.i.cs b/obj/Release/FilterActivity.g.i.cs new file mode 100644 index 0000000..9732d66 --- /dev/null +++ b/obj/Release/FilterActivity.g.i.cs @@ -0,0 +1,165 @@ +#pragma checksum "..\..\FilterActivity.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "327E93C949085E16BCE308E9134B6455" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// FilterActivity + /// + public partial class FilterActivity : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 8 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.FilterActivity UserControl; + + #line default + #line hidden + + + #line 12 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid LayoutRoot; + + #line default + #line hidden + + + #line 14 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualStateGroup FilterStateGroup; + + #line default + #line hidden + + + #line 18 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualState Filtered; + + #line default + #line hidden + + + #line 40 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.VisualState NotFiltered; + + #line default + #line hidden + + + #line 43 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Group; + + #line default + #line hidden + + + #line 44 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Path Path; + + #line default + #line hidden + + + #line 45 "..\..\FilterActivity.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Path Path_0; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/filteractivity.xaml", System.UriKind.Relative); + + #line 1 "..\..\FilterActivity.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.UserControl = ((LogViewer.FilterActivity)(target)); + return; + case 2: + this.LayoutRoot = ((System.Windows.Controls.Grid)(target)); + return; + case 3: + this.FilterStateGroup = ((System.Windows.VisualStateGroup)(target)); + return; + case 4: + this.Filtered = ((System.Windows.VisualState)(target)); + return; + case 5: + this.NotFiltered = ((System.Windows.VisualState)(target)); + return; + case 6: + this.Group = ((System.Windows.Controls.Canvas)(target)); + return; + case 7: + this.Path = ((System.Windows.Shapes.Path)(target)); + return; + case 8: + this.Path_0 = ((System.Windows.Shapes.Path)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/GeneratedInternalTypeHelper.g.cs b/obj/Release/GeneratedInternalTypeHelper.g.cs new file mode 100644 index 0000000..9712922 --- /dev/null +++ b/obj/Release/GeneratedInternalTypeHelper.g.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace XamlGeneratedNamespace { + + + /// + /// GeneratedInternalTypeHelper + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper { + + /// + /// CreateInstance + /// + protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) { + return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) + | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture); + } + + /// + /// GetPropertyValue + /// + protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) { + return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture); + } + + /// + /// SetPropertyValue + /// + protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) { + propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture); + } + + /// + /// CreateDelegate + /// + protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) { + return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod + | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] { + delegateType, + handler}, null))); + } + + /// + /// AddEventHandler + /// + protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) { + eventInfo.AddEventHandler(target, handler); + } + } +} + diff --git a/obj/Release/GeneratedInternalTypeHelper.g.i.cs b/obj/Release/GeneratedInternalTypeHelper.g.i.cs new file mode 100644 index 0000000..9712922 --- /dev/null +++ b/obj/Release/GeneratedInternalTypeHelper.g.i.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace XamlGeneratedNamespace { + + + /// + /// GeneratedInternalTypeHelper + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper { + + /// + /// CreateInstance + /// + protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) { + return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) + | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture); + } + + /// + /// GetPropertyValue + /// + protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) { + return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture); + } + + /// + /// SetPropertyValue + /// + protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) { + propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture); + } + + /// + /// CreateDelegate + /// + protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) { + return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod + | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] { + delegateType, + handler}, null))); + } + + /// + /// AddEventHandler + /// + protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) { + eventInfo.AddEventHandler(target, handler); + } + } +} + diff --git a/obj/Release/LogViewer.Properties.Resources.resources b/obj/Release/LogViewer.Properties.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..511d1cc9886e7d73277c493942304529a257d866 GIT binary patch literal 864 zcma)1v2GJV5Zwa_fkX`wplAaUCdOx#*33tAKPN@o!Iz#c4xzT z^tyBN{jF*7=3`iU`>nkckMCwvfWLx&aDA{Z@H&<}1AmHm0{0WlF4b7TG_$P5i1nDk znX+~EfGIXWHfL>?unhSS6=%gdivbxhiN>7OaaxotvI_SC;0BS)a=`gHE0(5m0 zw0gp<`+$x4ATX?tvjG7F-L5f!lmyu(Ah%Z#j;_)G%*P7yK%>)5BTMCO@=5cY40{0I z1LVSEJT;3jf5`ro_EEaDhK1#krUd{UnbZ0mWpAt&=z`^jdWO<<9%xQ#U~|3|(@+TE zU5=uNN71D3Pv$VbxHzxWe42`0ujidc(K|nqD)?mj#1joSTqTD1a?-D?kmYMix|sK3 zNvT(8{h^Fgt`p0LiP?;GADvve5z!$|c-I>P(*H5=$`Oyh?07oZfDGqb;(7UnchRv+ Pu-_<(XG#_)wh!;$$b90+ literal 0 HcmV?d00001 diff --git a/obj/Release/LogViewer.csproj.FileListAbsolute.txt b/obj/Release/LogViewer.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..40b76a0 --- /dev/null +++ b/obj/Release/LogViewer.csproj.FileListAbsolute.txt @@ -0,0 +1,46 @@ +D:\EnCours\LogViewerForLog4Net\bin\Release\LogViewer.exe.config +D:\EnCours\LogViewerForLog4Net\bin\Release\LogViewer.exe +D:\EnCours\LogViewerForLog4Net\bin\Release\LogViewer.pdb +D:\EnCours\LogViewerForLog4Net\bin\Release\log4net.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\Microsoft.Expression.Effects.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\Microsoft.Expression.Interactions.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\System.Windows.Interactivity.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\log4net.xml +D:\EnCours\LogViewerForLog4Net\bin\Release\Microsoft.Expression.Effects.xml +D:\EnCours\LogViewerForLog4Net\bin\Release\Microsoft.Expression.Interactions.xml +D:\EnCours\LogViewerForLog4Net\bin\Release\System.Windows.Interactivity.xml +D:\EnCours\LogViewerForLog4Net\bin\Release\de\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\en\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\es\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\fr\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\it\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\ja\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\ko\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\zh-Hans\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\zh-Hant\Microsoft.Expression.Interactions.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\de\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\en\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\es\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\fr\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\it\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\ja\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\ko\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\zh-Hans\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\bin\Release\zh-Hant\System.Windows.Interactivity.resources.dll +D:\EnCours\LogViewerForLog4Net\obj\Release\About.baml +D:\EnCours\LogViewerForLog4Net\obj\Release\Filter.baml +D:\EnCours\LogViewerForLog4Net\obj\Release\FilterActivity.baml +D:\EnCours\LogViewerForLog4Net\obj\Release\About.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\Filter.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\FilterActivity.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\MainWindow.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\App.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\GeneratedInternalTypeHelper.g.cs +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer_MarkupCompile.cache +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer_MarkupCompile.lref +D:\EnCours\LogViewerForLog4Net\obj\Release\MainWindow.baml +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer.g.resources +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer.Properties.Resources.resources +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer.csproj.GenerateResource.Cache +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer.exe +D:\EnCours\LogViewerForLog4Net\obj\Release\LogViewer.pdb diff --git a/obj/Release/LogViewer.csproj.GenerateResource.Cache b/obj/Release/LogViewer.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..3ce68a9a6ec5ca0f9e0de33118aefe36e0b7591d GIT binary patch literal 954 zcma)4!D`z;5S3!dv1A9FLkXoln9@VRM#uz{UQ8hlX+sl8;t+Z$Ei3JaE?#TR&Z@+{ z_R>G;5A`#8?7f{4NeGE3nZsx``)1$1+2{G5=l!MNFGp{K(x(%ZTZ5)>$$q7@OfCd2 zFqs((qroLuRHmGcC&@TTlXNtgRoYb+rX^I)3OyQ}R+(1$dsttX1(ee)-7O}?UNIia zNh)?l$YigYInDv!LU{lyC?%A+0t^ToS-=m6N&{}MjCCT@aI7*bEbZ@P0_m?@fMmph zvXDDt*Mqqe4!E>WfZ=BZtAtkHKwc{d0^fVle2csMJdj7iHW(YVIPtCHR>*(gJmkkPz9-ROC?DZQ~ zAIG%}zF^d$QvuDR;hrx7IT zQR;I)N1xB&2)R6Nw!uR)4yjZdkq6(^x30sTTg$B3a>IgBDVFf;UR?`xCq}A5fqZgr h53UqCY?G)hzkcE^B8gbupJMbq{rT&Mzs)6%?mxK94u=2$ literal 0 HcmV?d00001 diff --git a/obj/Release/LogViewer.exe b/obj/Release/LogViewer.exe new file mode 100644 index 0000000000000000000000000000000000000000..e844f8ab0b362901db2db90df49a853f911264b7 GIT binary patch literal 779776 zcmce9349er*6-=Q_x9bAkeih(kOW9*vXO)kA|i%WLBR!3P%#9E5Ct0U4Yah`hLd`;F*P-1)CT;C~G|AxVAbnp6#S#EASX#j?a**nHf5uKYD537>J3=A1{AD*w9fnpE0!0_+~aIPBgx zT;-)j>Qx!b#eE8IoB)x*f*1WMn;C$&Ls+!)_A;G85uq&kBN~UuMbp;*FjZ= zO4F-?RIY7!oqk|Nk?qpLL4XTg`V6N(9Cj{t>1gC^s zb_6NRXuzbUS#|?BoUjdMyrox|o_0n|MOXMmtIQWIgmSi4<~BEp#}U+2#B57Pf^yV$ zb~|Iy8mKBiL#Abqfqk@7*5otmw$GH+Rm>z&i z5Cn`&mmvrkSuR5mFtS~SAYk-$8G?X;-lU8Q0tWi0Vh92T`lw zGff+@Xcbp@OESuQHip7bafMZqP;MEP_M;%RVe*i+9|fr+)5bVxIc(b&-%TDn_me{E z&*WiuKMGQ-rj1D2kAl>-X(Jf-qaZC{+K6ZEl+>+hqYLaOg|v=oqZjQ*LE6l;tM{wG zErhy8ht_#Y)0#HIeLp4(RSHD=eiWo(O&g>6eiU?bQy$v;X|%NmvxZle5lRgLq%Q4R!3C8;YM3a%q zWADXO@&JW6etXOnTpS(?p{x47AfqwI9t9hwm!}wX0-k?wM0#Yx^Y76tv!?+%(*Z(h zWY54IQOJL_4Yfw8XaDlbhFSXvkLgOB(J)J!p@!pQ$8r`k0X+6BzzowK34hA{9q2>e zGG7P!hu1ld<<9Ydr5(}5s4)8k;GHasUK1xd1(y`725)HxMtw%iwh@3H=WSRuqgz4V{Gj<}Q81uZC6A`fB42Ow!gs|6SYax3MKuHIB zzt?F3THZ(S=o@a^Dl+18qsCs$?qFRt4)@qxHZc!CsT~D1`&$T{e*#>59U9r552*^c zE{WY7PjX&7$@lwB!V>$Wc#nwnFma`C0<;t3|7Ld-#0Ht|V7ELh0 zL(C}G|K*m@J_QQV11)r$MXZnV>e3woo+?Qjg3Q~o1QJvP`kJZ;$BCNRb&MVR;-n^UW;oT+od%YTJ~}l zuK=)51<0^ZWBPOeW%QyhbvW*|&tUQX)t~B8$NcHF+x~0yZ@bhnFnR4W_or^!U!w%F z4z%ocXrbRAgHTy&v^YRZwSX&2YRv9nLuWDQWZp^!X9K80RY;O^m>I8MC7A_@u5Jto zUguosIOhR`$_g!K6_Da$=X_>f0HAyK&%X&}Ijg~|c;|zVRc={o;4<5!H|@2Mj}^O+ z6J7*>kx7qdKN;l%%@9agn-=Q+shqjL%b8>0j1<_p7|G2xj3C`;j2PW$^yzLiTDcpI zzT1sPpX^4X!*!$4Kf2NA8r^6_S~nV@-Hk?Ub)ykw-DvchZZtYoHyUG40$utyRY6~O zRS;LRa|!B3N%DetSnFzB)04$BpRE1zu=cwpNaROf_EyYP`XivP+r5G9!@$hn}RN&D=qJp1lEN4wTtLM5adz>pE z!UKvjRU7VR%9D`r>@HCadtV2;D$xU75@hDha#A5mql6`|Jr0>P|1%2SLz$0 zYaojFoojJZ!uwod3^PI~c0E9GmU9Dc=|QFOqN`Cq*@I>bI+)Ny*$oFN;wBJLN$^>mLp_QH-Nsdm3#NGhY6(d2-iBqFNogAmef?5%$CW7jW zQDZpstQnF;F+hsWa;Tj=@)2 z`93fuCLF|#RsZLn{M(rSa8EvB$f`%8eeEEMta{8E`|?pnt8CdmncmLK6T0f)PNokR zr6=Q_Z30tRFT`2*xU9G1tovNn&N%AR?y(_%) zR|xkV?>=W+lcD)Rva=C48xDs`J|NX4OH#Ge(hvRCy-AbYLfz>D311jU^! zvAw)klcg6C?^({#@T> zYd(^S<4W@QKAt`Yn+cv`W6t%IC0(8-2gTD#uBX8sp0ddGlvhh#p0dRClqHFt_Kjd` zPTAVW(>h4htfcDnd8AD6)ade*C0(ATdn4Yg>N>M+0@zZk5pNG?S>`%BK8|y>vcz?k zC5g^n1(#f7`*{1nKHhFc(gbhKE^k?q;H@v>6K@XzTY2m2;VsKtZzsla_LeEvTh>bS zHZ2X_YGZM4&9(-psW6ogOz)G{$G)3`LQEhjg8hV& zd${E2rHFl&*cQjWA3#U#WwvB?aNBJbnUs>vUY;^9>|G@&cG`bgg zq+4q7;oJ`^>8WMI(^72=4WaZ%#1aLWGs{yzQ94H2D9fyf6^Ymna=wa2BJ|Qw#UDRN zNlV?Em5k?gcfHF_N34Clj#&T4ZjY(O_=&$F%m&$B^?C;x64vJi<~1^c>LtZE+*4Q) zfBd}m9E1UkysCaJ6h?O?gtT7Qtd29KVVysqOb&*3EG6zoZYt&T`zSpE`SK*}MPN8O z28Fd8EPO0^WHQ^16$a1u2@7?L*Hl(G&B)V_c=qR@@sc7M$)Kg{i~HJ-a>kD_z+xh_ zzBorqa_uiz)5hv0WIxGrwfyJhzQxnBn+>n`EeFdbm%$5uSzB63X{HKpm9$9&w{~gH z69$$-ZqjC9Z0uqz5C-~&tI;A1^ca`H%YTbQ%4IAT1|r5~oGJ{g;amnk0a(r*T?~F? zu$+6l7%^d>R@@|~2xDCrqfrh@;FUgCs|Ia?T@UP2KsFTO1qq=0j&Y~&P5_nB>6&|(L3Tqxp`-lCg~ z%d7cbDR!4IC=ZS!SN!(dZy#g?mm{bQ?sDaR^rItT=>1Z)_f=$Gdas#*63ISp9U>GV zujBg-w|HLXIV4#=8b;(@lGk~j=|ez={dl+JcQE>f>^}h{1wgAHAD5|XC*ZsQiL(tr zNmjZNyjmHGGL(C=$_%wTWR)LnIWI!9e6qSrk zWoO0xc_q%AgpJBypV}bK3(9*}XyjYd8 zJ#Jc(C91#1>ZtQP>>KjZHH13%I@^JCybj>J0dRm90%hq3*HWU+o6u=Jj+;a&6=&<> z*>6FTT^Y7`+b)#7*F@chb;Y|nR(YG^JQL?Qe}Q&V*@S=uZgR}R48xPY*^Vm2Jt!^F zjYe7_$kka@Y2|?xRd(9=Z_az=)yy z--rK6Ilkf#VU5-QYa@;OY1(uCU$qF{k#k1B+eHA%TM6G#jnmS2bGKPfZw4K zvkh)x*_aCFdaU{|A9pSKO7B#q^W?hWcn;Di-UyfHApY>q8STz-oZ^-BhHn2;T_v-v z26@^6Ebs7MVGOKTvDJXZrt>wDE0edn+QrJIgRl=JXQzA9JiPym38vDMT^0iMPf%HV zjrcCm4mTxUQF9(@Z(j1`*YDcpL-KSn^uyQ-a4BIyiqXo7eFw|Moh-32jg*Cz<4!S* z*xy4|k?zM9GA3d5G$iYFS1Gf*QfseD+1-_}BI(6aPIsjhy(;B(S30#s}g3e#AfN}RjHu6(pkMK6?IqY z>{V%4ccqoxmHg_-UB&V_h&9F7=NVS@KEEA8bd{$E5+1nr8VKn!!|j;dVU)7d2N}uh zZDo5SY^%6DvxEcnN5o~q5GdVS(o|^kWtLx_tkfHE8EjPgHclVc@^v80y=ud@4Kqh# z_7zzPo~HZKd@@Ru6{?Mi=qv1!^lPaERpy`Impt;w7;I7##t0Nej}6=7y;1ekIux?o z&?M%%xr~_T?jAEFLw-SdcRage66%c)4%tV-wtB~jBRhPOP5ZD1K6oyUU~2Aq!{(WQ zAxzG*pou6AS1zuyLfNJal?{|l$WU3HY)yvB(q+RkR2Gi%250PNIB|v^G*pSW9W5tI zO2>G@fHWk(XZCt*+6K*pvB}ppHnF7J*d)Ua`iCBy&PGnMr=-Rv9hIs^u&eZ+hFoG* z{yz+-%!Fu3#)!_1_uq}C6IC}@jM`JrE?NA(+A7ujZE=21H~zqWu6}kmetVqXSMhnh zz;S}Oz)OiK+-Cgb;_Ly)s&XF=b|9H&pU&+W`3%QS8wLt*_RLWI)k48JufvnO<@^FD zPgL@F{6gC;Mf(_v`82YG-%sf3xkq0HqdO zLsyHtB}6FXC>|He&9cLKk(mkKhWiVacvG*5hJqT;GB=bz>2K+W20m?#_ zf7pjeChJyAs5}NC4!hD}p|byUuY1%E^#+cjuo*oCrIgom$^s9EV#@TyFsOtaJS6dh z9LM|!&J%grkD!(?7x4y+UOKh26=sJp(EbS13GsVrs|@FCJ5=$>x4xgHE1H7eNX zx$3vUQI7zw+l3DL3SI<9@lPM{CbXG;|<1j7_OPP z&cwAE*WI`t$Mq*%Z{pg8E8j!ZfNMUkWw<(UJ%(#5t~YS)#Pt=fUvT*`>1W_7!c~du zKwO97nt^LBE(h0{xK`u38rKF~_u+a9*NeFRg6m^k-{RVfYXAy96xS$RlW-k_YaXtp zxY}`Di0c|$x8S-TSN&rE-qs*y4?JI-f+mecxN+0CYQ3$fG6Vc3=BG1110c?x%WTwU z$jR!aKCgH6`TJ3C?p^(){irYKU47wx)DdO9`F?VDb@yQKaMT8$62{XWdeh> zU6eYnpwhImt2;6H;>ybc=La{5s zcu62|uQj9h1QQYyOq2uy_gcsFo&aNHR}P0t0)cz2>AfeIq!UPi(A&FGW55?eJV(0- z0e6jdUQVgm74du=+r{=_$jJkUvyYFn^L3S>EJiy9QzR9**P6*Xb9vR^%80}~tAy9auotH#vRRQO~v10w%xdL%cgnKQN(~99pQpmx(7imva zlF^P<6FaCAqaF1ngk*>25kguTRWF3p#j%=zNuwPF>XN{7Aw+^&>XM*tx+K`(>5|M& zl$@9-X-t&NNt84tN>H0!)-ZN-l4XgKXrd&RC}~ZUEY}1=*=S#pC^Tw8jvZj%(cQakkp5nguqoibJ~2Pi3iE!b0= zS?K|-9dIh*+OPS0Dl;oRsFi~b_UX0hVD`-9VBpf0gS~jFGuztXrzJ0Nq)cYpSzttq z;E;p$W2p2DPwU@c%E4i7^*Yk723De<(d3(@L8wGio~2eIt@_4^v1o2_k994t*|E@) zKVHkC2I6bkQs7vH5QZbd^g$SF=@eX-;o6An8C>LfA*I4O4bTFgOt3SII=1luin8#ty3;E`4KU+LPyu&ZXo#C9PyeBxui(_6Y^5RaG*vZhfQyBCC(0i5_ zNXl2cr^K_Ao0276DLY>4u84;!D|Ucn!4exiq?`4N!L&NIcTa>TFxNUu609Qt5(|K5 zGuJvxdRRxz!TKBB6X8M4wa$_R>u+{f#1oinoh3c2BQ#n!PE{R%Lxjvd_-;c3UU&XNS{?{-(j z6On73B|WTP38vNYUiUL`J zMXZcn>n!PE{dZtm9Upd2gq5^woh1p@cXn6A6ysWFNe}B+gK2f_>YfOriEEuD3Dz!rLGVbZmF{MLg{9S=%v z7ePJon}Id^(3iyNkvyWcv7bs`(L6dO(mduQ(mYBe(%i2TY3_-MH20lEnxj3D=J-sc zIieD2j)6p)TP=}h|1pDMq_Z*PXfR!i#34RehwUo zPr2uUFxv#~wU9+`Po$WMp(Ajwg%;>d2eUGC1n#xa0{iHc^YqTsC})i4Dx;lSEKYC} z#|ds%CdRWG2YXz?EgL5|6ygN8bDZFYjuYI{Oo%n^Dsc(7dz|2gj}zSTae|vZPH@}v zhvnRur8OOB53lJQgvRI3@vdVgf2=JC7}vWDLBP1dWe5VsjV?nFFm7@gf`D8y={|gSP+Cg zfA{?c?)=x|yYF_ceN);hPui-TYhQh5-Olx{QLb@~a$RebYgwafyHKuK&E-1PDA%S& zxgIsjHKXxAS__qQ|6k_~d0Y!mT)~_iySBW?6RcAODH0 zuiXHZ9$)&2ET{Lc07aH-xA9KZ3VvKW6+nMbD6%{oV@&U|PVOPu@rJtxl(e=WHD(Mm zl4U>5OT>HD?wC?dMU0W~{=_%JA47|eV*>q!(N`G7lha4IcYUf`3j18H zPTc#VTq=i@5;q5X9I{>BfI%1suyU2Ofu)C{`J=7CV&kE4hH1Y5yVfuRrxX|~&sKM2 z_!l=r2aU-;zOfCAUZiMT{CtRMKPBSl0C{K9!t^REe5Wlu>@fA!u9?FV3J!f#t=xDJ%zp zi51r)ERCwXPV7p=?2exR~Xb9 zF8;Ppp(MHJuTtOZ_El;|J3D4(v~yNyV0FH@m4@7;zOCo8u3w={xe~{$ByUq0aSlUX za?~WAo9P_Rj;L}x(7hba6n3p_0S?w z#qO#nNv@lOlXI-Ax)@KbkE+iJ_^jVz@bkDX_+YSw?|Xxm2iun%Q=WoQ4Ni-^41O76 z_C?&oswRF$P58Us9{WstD}*+lo~$ILkz(U}r!Eb@I%MGu*weHx=~X_OZ_01Y=zdp= zB+|2$h5JC7T^3AvyIgK&l$vse!&7CN=x)GYc?`jk@D-$GHTR|I1v0eU65>I>W~Mv#uAjd85~1 z5K~#?&-Bz}S&(GqILE_O^m~|)k3&k$EDsKVb}^&y2nRaZvD}$B6f4+FPxVYI`YR`5 zdC2AShGG6tjHm&1lvgL@?0h-t-m)YdMQ2O1a%QD_St|=0j9qzQ3J8^I&-)JRqjK

6WsSJ!=*;{GMt%5(o?xG0yZBr|a@6u~p%Nw9*H?s>ia@LuIJK zNa*^gHAGil2w#QH#Fwq1h*k4(V*Nw{>0!|hche3-I~)lIYCh?zF%y%kX@7v0a>oUZ zzk0-eKg50vL204yy$N~PFXx40C!hhXtoEPLSBw1?-k$L&H5*JjoyVsWfysVkAK2iz z!?V1B=LtmHPFUe_Sk0IHxo>&wU0{aPF-LwDYU8Q0xWX(c^;j`%!dgxv8-y($pIUG) zV80N}Nablq>*CRZ$0)1q7fG2_V!wD!s*DLq4Ub*=b7zWB&rT^9iYKPiz5eR>t-+?~mfFdKuOA$#&^P z&6(qVxE$xiKh}uwU!@^W>0Gl7(*$A^lLR1EUS2uEk9>oO(N3(t5Iiau zzT=SsL8M-O@f{ByLgPU}?i=+Tk2^vm_~efDt=zFjl{+Fy?(6vev?;N!jv?i1Vj)Ve z(H5Zc%Oa&J?$6eb89ZC-pV9KP^AwI?Pq-F2UEy|`!NEsCWuybjSAHvKh*eGQG( z0h9MmAxpn^!Xp&Ue#v_$e05R35+r5?9Ld9AhZji}A~NBvQ#dFuojP~JpB}G*APhpi z^K%h~d!%Ge=NAyZ7V05mPUn}9xgT;I%-?}oT|ZvZ`7MMUoG*TChi~$_OBI|m1eb5} z^2wG;;GDqao4mlXr9wClaQWt(!i_AI!^Si0MW7*LLS8)CTwNb{@Nsu3jmbyN=s)ya z;>!a%2acodze5^ndqKeGIio@A>ws~;dyM`OT@>Fv+IWwJ?;rch^o6e-ZM>lYog00d zU15lTFQB9w%z>qF5Wp<*wFzon9wDet6;I3AX8(Ao7!=Qu!%DY zTmGC^V&>USjB__VUK>xsmbdS$a9NdKGEc(CMS>(-6`qVTKYU_$csYYrW)O>%R*?Se zSy+1wec38c#%DI{w8v(?_UkbCHL!QTj8c62RDomh-AkGjD9;FZvYq8HQXVq>UVh%U z%KjpsI(cheRdaJ=&+_V`$hS5gF`DJ9fDum^A1(=>$?ts@cd`V} zMpS0CktnIf43<<{BdMMF0j*;s=wOu;*I~ZWaZX45gv-+X&KW?Gtu}Tf=(KTDs8!D= ziK`y{&FQ67aJO3PT#s|?Ff1JeCx7{|--=-YZQ%if1)dn546vr-vSVnW5|mwaw@~bG zbmFj?YvWlbv?33;D~1OFl=3OoxZ8jo&kfcrR^n zIv|yAW0U>N!Y~O&*?ag2IZ2rKn{gRQ{#YlZN%iNV6$A1UF}%>ut}KlB3zBC|@PR!` zU!xQ7vSR~0)#A5oB7x|jGDH^k>p~S{K#g*#@?n<5f@f%{707Z{A|Dwr%JO zxbq+LlX3M04^O3WKDPxTfCh6MawCK?!j^pwa*dq}fDbFr!wswXRk-=3u+I5Fvywa# zF3Dw8K?#?1uU`r;Qh)Sl)B}3+1)R!R4JZSpx7x(_%PN*$NNftF<999;{fhw2z7h*~ zWb#S-qWvxg+v*tr7QTc=L%VH{2COhY7^ai4$gg7Hoy3n;rAjY>!S}mGCc5=0}BB#;`MBb@Db$X{kqcBr^7T)cA;J8u`x0 zY{L@Mi|3l`nes4%&M*XtN=GYwvuzK=dkr4weq}qnRuZJYDaFU<$l2{!kGd-?MR;sp zm)VyBljZr{*69PsE^_9wGX4zIsN**Rgprz{+w!n_%poh6?pPc z;iy1}#+Key)t|l_F*}e#R}S1z(4QKI^{wttHxHj3NTYBb+ZkKew>pKs3UV2(AsY%p zbpK$s{ONFpNkt3?6fk^D;2{ylpRHqf!ytxbHp6P+d?~4pEMv|oqJJPt(VsR|a&0%E z)FIjgn-*OR4^fkYM+FAZ=Yw+!ucU2=NQ+xLo(3bOY$Y%$&jjbZKc$p+$A}qll>cvo;J!p&R=$JPXjG-^$oReI>`wAp6?^ zX>|S&j+0;WxE?m3bwX5!Rzswvjl$Nz6Ols^fmR9UatL4wJ=ljW+>pf|izRJI8tWW}y0xgGZ1o6>ZY&ywGEOd<4cH{Ge+A?B-$!hQiZy5Y^svn> z^*Lf7jV>F&oJsXl^GfJo#AFGbC~(Lyj?X?)S3eGqBL3e&M5WOiux!zp=;;>aqFqvG zcKMNL&CPv|gg^F(97JYK=%Bn5T2{$@^GQUGMK2BEaxKW?cs^(d!vO;C6ZirkN`(H{ zpH`ryLbOCm^cLC$J+$Disua4WY9z+M&cp7gOA~QDov<7 ztYVk(IDJc=qExyIC2GbmWc(sC+D8S1QyfpxzY}DCWD4mP!d5fANS4u+?iGA%grzEZ zhXc?j_{Aii|N3VW{lWNz2I2qANTpXX#Wh1_8z!iaDv2(kVEnvj0OY}QP>sX{dU z7!8|oTBKg6pD^t=)Au+f(v{zjbfm$)d@jEHj4zv*x(1e-X%Eeibn6S5`WGE5GQ5%o z^>3P;V8t}%7}Yc)--kW0gMy);WgQww2_DngmLCDUu#Dk}1q@FvVYqP+!*N9s=zkN+ z40g!9Nmwi%16vCta*vEci)~W>HPW$e=|#;HN5MHN8Dz z9PqyZ8kCoEDBuI>o8mPv7Wzdrr(z2GHjt%Ng);yvOOIpC(h~tMuS)?8h329}PY&l& z-|SfcxVv@{;P-_~0oRr>oIaSP|ITN)K7Bdh>ijbR_Y^a{yo~GZ3H-+s9y+>;Ip^WG zkUVsCEpyfnV*E70SL8FkQ1Ew)89!g}wS73%Q(opA=i^ix`- zN-hPw$8#m%EuL!uFZbL8*eTK#9=5QzfYY{n)&pKu!uWGu#=l8t+zc{4G{|^*fN?v( z_%}YrpUGhSWQ*|=1b;>Fe~FzcKl9J3Vx1cWH&YoOMa)0Hp7CqMW>r4pPo^>dUulec zgg-r#@iT1Z-)J*#7BOB{#Q3?MjeyM&#{U7RVhsKlaQ(cR!J0V(7#=->;j#jTk9sx% z2K%qp`bBg<+Sfyq>h1?@9L%+MY5~Jxfv%c7EaMO0tf*)BO#wrdZ()$}`~buE(;40) znsoyhXRnZN731IaVfaZJ!+ zbB0-81I|kQE?7r@^8Xa%2Zn#e$CeArtk5x?FXS<7%V&6Ui4|haP$-N3OeuhOm<&(w zGPHdRpZ4_yoNf#P?4Us*i^}sh85aFMkcmEi#L%H)VHl*FXawN-Cc}~5F@Tnj@f&@N z*I11I&SLy$!RPxKf632$gBVYjw9k8l?`3|Ir2R?kER(cvO4<>Uc7voHFKMSrT0*`h zbnW1jU61g%v~t8$z-MZX2AouLOejJlF?L1hM}b8c{UY=X z@M@|Ya2%wj)ci3rDlU??cr&?CNqWU)pSkKQ=tr+u4G~}gH8}?P2WD{EQ@xNU81PK*3b(^ z2K`P`Z-p{p^GTupZg38n^rcX{46~*Z)D_suMec#qN-p+f)AgEKRk9_NO&c`zYC)sX zm+sQkj)GLYUwueZUj`bD9C}hyKLt=$dR|jgB8^5ay`rgEkyM=Vcw19XrZ*aS^ns>c zPEW;|hfg(CozaLN_WD{=qcc+R|KI$qsT1lO4LnH?QeL;zr{cLfsHuD5OMi-J>Jj+T zAFEBJc@=CH&;U)XgUtde)6^FwjYc62)6{qPb=g81rK#6Zh9VlTshuc85lzw5?5aj% z0L{?Uf~r*P*Pp1Vm-{pt1L-79{iRPT4J7^#ow%+ir!^Xb=u}NjOG`y@IyE&Sv(YG~ z3pCY`nM%d9MpGV?p@go}R3DU~1T&|yIp1zH2GgCIa&UBeFg>U!i5{DtQxr81Hn7Tk z65GWbb&*1*Hu1&<_NUfnz7VqM0-GrnXG7>_p;iT22EK-O%C`x%GH~j^w?W;jWXR#K zcs;OLsOKod{=q1xg+scmRL})NtqM#2t<$`LU z8#VRopkR0`J*26>f*MaRYwC$UKAK2ZO;T1Kf}e-bCQaP{Y7#xCscVa~!-vu5ntBG* z6!J{wbgKf_L|!nCpnReJ9{gjlAbbQ(*VNmfj-=H}6C01I_&RH|P%CL$|6urN@*Jje zACp@Wo=!=c8WpY#9}|}y3E4~01uni4*h{;a7-K%GY4Xe!q~C44%i&0t?v(kf7AP_3rE0@X&xXsVc|gwLeY zG&KUgwA1yP+U=PV?w}_%^));@i$2iQdGMtZKck>>$V2Wc<7J4#%GoqPWNKDBhpM#Z za`eV?;;lIZwR;||JXTqmoINdkKCKl>)%9w6O(<2ntLf{RtjRWy4_`#({9Xj*Yb#zD zzJxBHt*BPmyp(Di6~#GR9?$P+P*>2QB2zhBMW+d+a=40WnmFCnlwA=EUrh%KwJNZ^ zu*JBB4$;)Rg+985j?@&-f7jAXP4WD9Ej4NCfJj^TI%?6>xX4OSQBCpOcs-q=DV`gz zr*kyLbK?zkk*0WVyn(LL6wi$}(v6zpx$#E2RZ~1S-b8n6is#0g=wVIq+;}rRttp-x zZ>B$Kis#1P)2o`|x$*b(j;45STuVDO#dG6Y+N~*`8`sgdn&P=}9sQyyo*UPbIhX5m zReo>rdA={?bN2JE0FGXI#*L){sdv(oijvvsF1m3Z*MyoW@1mypOsx#$l&uNh zMJ<{dTy{06s8Fl$zb_eBv7Z&EQbAp!sqZmc+)dZVsZ>z6$EhaIJ@l}m0*fnJjC<*6 zO`TogqkHL3n!3GTi*X;ls;S5O`RG1+M^n!azcGA2?G$Qd;Pv6_LG9MEIjG$S=vz&l ziQ0XDe$mu+wC00kHgow_1-?LQK1g9ry))#F@I#cYsqco|11eurKlOho{0Ew@DPO@u z;fLvBMM(`lLf;Ful0F=6&?D4&lB&Ut70-kpp(}-2MN83|kI+UdP?sq=A6`2||0so&Mi0CldW-hyl!U9G7PA=^fGC`#((MY>-o)vI2l zKXs#24XXL*MS4SI=TOl2SNKJGFG2GqUDrzUCHhorzJrPpujen-0ntH)!CcR1{GoWI*rttKVb*&b($uWD$(ov zXf|riKTss;by}dQ%gspA8}S^*dD}d168|S&>}MZeB{ef!=WRMw%MP?6Nq>pU zZnoMy@6cIVX80pXJL0m%{x;9MbiS6o3E6vbS(w^9@6%;k)(^h?H7Tam%q_QE&BknkK(d1@a1E=SIh2(FQ3F^Q{l_s=@BiP z312>q%R;D^&$v?Xx7Bw~MRw9|MSyxYttjd9IJFeimqK}D<#DOJ&*jr)Ta5=JgOhLs z5PwYF6RAkT2|!KV5;-90M|wtbUlmB}*J%7iUn>gH+K}`Ur7mUNRe`55%j}`PLahwE zl%I-y=^`bAW-9jCtAx5b;71?(7mW~VO(2p!G3j4)u$Jx0_-FW6ny6*pW=u@_m8NRh zhMIqd|4lQr?EadGN!Z=ivPDR@m*#8PnMk*n7HOF=;Gf~&D5hn}112W@MrSHYMk)MM z9v}R`%#}0(=Xs0_P34bB#ZFeCP^upp#-cctinkqYLam|l5r-w2#>GPY-Qafc7(Z)@ z+revGF7M+1Zg4wT#%Drd&6jp$Qoxwjs&cPH?S_owHFaRWR0Oj=$5X~DA%%2kgm`eCDf|G3e-!HF+<+Bos z|FWb~nkl86_Mn8ciZdvW`Tel(fZx{>TtT*D(7ORQFM|~4e;VdQIA4{^y~8;7Q_Glh z_wX)$qPGii_`{%u>8YtET_R}{rT-}&E@W%}X{z(Ev-Y2-O03DJvDfmSTli1?{J+sx zv7}-qF)C`RxsC8&AHo0TG=_;$^gn_BcS@1y;kXL+@BxW`#{YZuoM?f2pBs~jt@i&D zFCW1^e4NklMTye?Gco&bG4bAGU;JZ<`Ba|TN!6aJ)h^sah5dOPW=(?*!8m5n z?+3f}?8eeN(waT%ttUsdz8^M?Ui@J@uAj;W<#VDPZeKTYlr%9_PyEGNjt8a5W3q{N zLCoRV#H;y3z;XTg4f?JR)#c1rIVxOvQY-z4`6j8fDv~*t4053l&+I{*un6KF!WG7q zOVjaoV>;eA%));l#qWnAfIhq_VY~Q1E$gr&*aomw2N-fJsj}< z+~a8*eUW(zZKsO{FGXo~*qyXRZ0;d`qxCIPU5fSXI|Hx6v)9zh8)%PbW6@fy2rsJM zND<@3fp-JHu%fD9d83xPR%l9B|8^7CRdS z&49mQKb-x4*=X@{9U8{TB`+JxfE%<<>g_rsHE+AI&L}U~VO(eA=It`>H+dCx2W)<3 zY%%y9$Q?$@uwQ{2d8WDDn2zV=?ZzBD{jP+aBy*cFyC}_EE2K47%U= zI;-5Q6%R)V+#&wo?>!)EtZ5iW;SJvwSh$pCc~1@=YVPsWRv%%`@}7t%@LAqd@I2jQ zgsP4+w|lo2&M|Y~?F@4V_zTQk-jv|!<__3QrCr`}S!bEMz0+#XGq)Ijwl6gIc)k6u zG=sitGp`q$YXx6xCPDvFiul^fZZmUyd1;%>BHwNG_nAX{PZT|D=9sOi&zce6Sp#kZ zd@he+`=Hxkp)hq9ReKH^@uFGnxj5rBbBxaz@HY6jR=;oVFe2F1++q09ren+xhyKkR zPg~2rH4mqZTCZoBxe#@=%;XZ?VIDsG1!KDSFp5^@r+SLalZU6`GzGuMsukGe+mYJf z86{CMijD{#0{rcvQ#`f8Io%AFPxGtLGl=nIpqKULg-6APye-Q{hu zRQ;S%=c8@DS#>R_xAeM~jV9llWuJPNS?zUSd1rZjbvW-~yj1mqvBNke|9kHaV{&P> zZ-voGi=%*{ma;P?!BBJgCEmq(9TULHMm0N&@z@tl_%Fdwu2hI8Yy zyeq)pP5;h%*tbRMbBFOu=o#O3!M9mv?pEIpjTeMp@fl`)|3l4P!r5XxKj=;0ZjE1D z{GM-%u?cXumvz2XseE?_|K{7Hb^chg+h_Ry*8feEcj~Z4quMh^`gnQ0->UX}Q4z7W zQ(=9!RZZNxcl!>kec4z^#(+j+7Hz1(cW06zrj|H z|EbyvtH>{7j=wIu*1}j?&m-HV!(Ybi@J`(X3v-Ul9kn%cts4a&`hk0cTFE2osKHF&737YVwN{p`-(LLd0{WZTp2plG)xDu$@(() zWn+_Aen`fpC#63=C*w(rRg#zPe@^=8%fdG#VypeP4MwC{&(>DrH?X+RaxWX~5BhGa z#m7&+*1-q+5Adt_@#K#Me;GJ?JRj8@;@@t*+;1vyPyRGm=C#3_lKXSi8j1On=)uU@ z{_RvX;%5J2@cb6QJ$ak_k0I(ddLOgiE!;?3q(qNdvG9ZbA($^xDd;mYIp0r;$eSZG z$We3<>VGB1w5@&~f7(1_{HK+E;9u?eq3$EV&j5MG@zH9}?YSGh%>N$z`*SxU&Swqv z23C76%S{rR{jMl_g!2ODOKGD3&fI(w2w;`*IbdJ<8Ze)}2P~vLfP-i+{-5e?{ADG6tKSAZhlT-OM6*-I(Ur($9Nj>70pCEcrhFv%HWEPNB&b3Qe}qAb5kuIhS#w zGe_V&ft>E zt`oRH;AVka1U@Tpr@&nT$tyVu^av~zSR`Y(7PK|TB z7p8Ek27z+~b_!f8aI?Uj0;vyc77A<-I7eWoz_kK53*0G?Qbk{2gTS4s?A6Xx_KG5m zQ$*qH$!6hf7S2w=cWPYxOk-;e0_Oiio*yg=oFlMP z;LcL!6P{o{N8h{BxYyWZd~GZ-^E^K9MDJ?vv)S#MbXwhH}2{j>ZX{?+~`{jd2y_y6k84Gat%9yliu#BM<{_7M0B*&hJ=;=3Oo zcouj8O2^JY2EKF5hE4^(8X1mnJ{v%d$1FAhI|dW6n{XKBqr+Ict7iE17XhyyVTwcxa27!$Nr{*)~vQ&lz z=?sSn+)>K-Z#6#yuI~45!0T!lek3rfAA9(o_<4Zn|B%7@f2d*DDR{{M#tTQV=E0)> zVxf^tI8kgQ2k<2}e=l<)po!M^AU09~1N0hsfo%sg5holo8Gt5E@#4!Pe5UFLo{jjy zNp(OI(Gmup3uq!@l7Z(-w**D&DM zptl(K5^6Z`>u|Euz*(#jz;D35nn5=LnmC7XAn=<3O`MK82>4n+6DOYdORM#OCe~qN zfZqaW;$+e|;I{#qIBhfm`0aou_SOyoekY(wchMx^n*dGh_8kWN9zYXka;5;k574Ch z=?LHt0Gc>Ea}@B008RP>O#^(GW&l1y$AbSTpov|(S->9$H1So|@xY%3G;!K|Ht^>q zMz&HTaGbgT{{?CSz75dCms<0HzXWLFNu(M0D}W}xHCO=rRX`KZ7cGFF;1~8y{8H~? z@IM7K@qLy9xSN&%eoisKFK9X7mvk!NSJ-zn@#ee@@M~%Z{D#f~{1!WrCjApDTZ6s> zH0gUf5BLv&CjCg~1OExo#J6Cp0ZWaGz$pVnv>2BFuLMN27?%OB0z|YJYk=1PB3iK4 zMYI6oi+baC!0P}_d@ptl@B;u5Eyi`g#{!x(4l87X#six88tf+EGXZ^w=b`8s9{`3Z z)fkGN(I2oDHIQT+X*^{NGY>RBGyi18c~?2{Z#Lfdc@r300_*Wu(Vh2V;J|`?d0PS_@P1-ny={1B%KOdg zOLNBG2+YJDc6YrkfkB1)@?H#NNZRhc^?!Y0JPJeq9GruCi~#(GbqvC}gT_)<#qHR1mO`vN?_d981;x!%)6 zCs@nO0Q3V!qj9F?H=nX*(`Qx_E%w9YsL=;BHr6y&SJ9}Y&eG+Jnp&I3N1dhPol}>L zp6g2HJ5!pMET7o2sI@sN+&WIMsA+EVB2K7G)a=&;OGeLYY#iSbTe_&}^l^)tVzHX4 zMxAn)V9S=b%sZtk2gR(M*Xl@ywbib64I{mKs_j(|W0gft(|nj~W_J~5Uk`@Yx;6zl zV#%0!tt~51{`s6HF03BTYV(|>r%yO--lFC6@#_gDTw z^I~U3Ggt1U*5<`A$yfyY8Xhj(Q(KnIcTTNtJRF5nZYpIoA&ha6k8YmVyrh*29vkOG zrSy<2XcpGerq+d=1?#rNT90XIhAnPw#XJ&Xmg$J7-d{aeL()sZn5`pWze({jXjIRZ zjwjr2I<0|*1h!Apg43HfG^)4Sat-y?qBM2+BEM{i<_e^bwqT2bF_JW zHztRRvxIfWIg1uGyVQggXn;eTmdsz&98EBUKn8UY$O5cHD82$e-Vd3F7Mv#2Kw zx{WiYPlSrfYrnb>^paP-$}656zv{EU;y^N5E}pOVs|Gvt$MNb_+ zj^;Uw=Q2k)0GQG@cN`E+zMK0)9HnZ7W}D5uw`WTkP|7`Hqc#R#rBZXIY+SA(V+ zPvUuYx^p-tUg8c&W9F-Dj&7b$-KQUX12JFE+gjpMjqtP;IkFWbi;wY*)0*|HGHzkh zk_8a4iC&pUVh(SPww~@Ps%1svzU)a;oz|9f2nz9dd4yK%Dlw3gO5(KOdt-bGD2eaXCqQD;fZ8L&Cm zL1$XbGdxXcYFQ%4C`9(?QyLq`HqAQ)tIdfm&5P#KC>3)(`BR!(7drEM@+a{cqbGYx zb1c@Y0QQ|zxea@!LGAUzo!-*g8+-Edm@GD@HZATY(Uhin3tN^n_bxo#S{%qj9G+oyJKHZ(g#Xw}gi`uV`M>)1K-LJ^3-|B|Z84jM0;OOmj4bg=|m3 z_?D;|KzoX&w=8a+*4ngqX;0CZrM)oGvJ3F&*rVJS@7;Rk)vR7N_teAa7Q@=NHxsD3 zsmmA7ZH^vs64!jJXJUEY?8$aBRt-A6dC8HBmiLw#Pkzz=#ooKX*Hx8y!#l}Ia+0(m zNvX8jl7mDo*rqAH(5h(fv;(E3ErKKdXxg5(8FC{@p~YL$>Wg^8JNoLp;AKSojl(#v zh%@slUSEW7MyQO#F!L$sHwu1!uPDw8&IQi*|F5;4eb(7o``mI*)@o1oZLMcL>silj zJ!|c?yN(_k8V!N<5z6Q%1L>ncci`k@>64=$?mP@_-!(M)39ZzA=uNFfNesN3upQP@ z%&$7XYM|>f-aEoS+5qnBJC1W|W33I8eKV&Zu`y}phL|*SX-t~A>QUMx0Nw}tI`L}W z&Or`}b`M;AtZOK}ufOw98n1%(bSopvp)w_CP~F}F%{-Le**iGY*^69<(?>dwcMpZv zL=I>U;1SicIaNx^oHNH2eS5W%-QBwjrMvpO)7I17=!dS}&TeySbJtK$XTSAajiJr8 zvH=`Zo9nELz@d~?XiI1Bkg0TAPyf(KDX(!=UEFs#9rW-|T15bGOe{WC0neG6k zUri6_^N_^)5>CQi8uUPEp@B5w3d+F44h zMySC~MppU;slCO^(Yjor5o&f}qwEdVvvY7C9H!3huA5c){e4^ejtd|ykip*LVA!7Y z{*(P_bLZ0Z5U;im^!1oK1Vw78D%FV$Nid8>n^ZIgju-an)`>Xc=nBEsTwu2@wr zm}%d!z5zH&I;Zm7R2f=gb&?H#z)ykEP?jikWL1{yy8DhEA)cmJ)Hz`*d!`9S%cclP zCuJ*W(|1%qWj^iB>T8Ix$w@&_MOcZtAP0sQfDoQvs-rPs3EN_-`g3j&&4Ya>!qUp= z49i;fR28+aLqX5lTxqnOjco!+L!9NDmMW}gJG4M}A?8@s7+y$q;SEFJ@R}7__F9#; zuR)iv3NhU(Q+Od&gf~nT;q~PVNp2b(O!pk@R@PlhQr6llcw4M%RI2S<-+(SKNEU-J zK60`G-2Y)w!Y>tiJ+Be<6U`OZOgDrv@o?&WyQ+CiEOs*|=vw@gTv% zL&aZ0xdIA^A{SiK(;c3puaxRh4-R9zaFp0G7mI97AL{PpcCYHrrCMZzAwDKM?K{>v zkPfas1{XRzkiz*Mc)74poeXa=h^U4(S;e$6_jvzdkSVxMo2;#dY=N>khdKv`!aE?DbP!>N_c?aho4($?Vz!;-19eZ`U}l4T`!{KC zf71|l>&19mn+kN;lA6}6@J~YtT zz1Q^3;N`GR$1zBV7N>p4-itIV`vAO))^+7%7MWCPGn;j*_7Y4_zMesZ>_Z~D4}tge zVe>ruC#eljP}jjOM3+xypQ>?irwnAZ;AStC>}D^`5E!nB8Qcamz1Ahiz1F1~ z`C8XU)aYB^I6=PNd=h`C1XSM#l(3<+KIh#XorC%UM9?Q-h42nYrNSQJliV9OlAVHm zoi{>9@sIXB0_aS-fa!tu^a)+}UTAKx8V2NnxI)nTP=eYmO2d~poIbJp2o&MbHNEMf zcFhu^G_|Zk6Uhyui`ugfK>HrJ^PAzaGvBt}Lw)KbXId#*T*b@UsoyQwrZd|OyYdMM zb#>=JFV8uIz_5^~N|%KFY;ID~sHY&PIYW$PP~T%`>(LPPs-UxVpc4U-qrpxPPW%U+ z(l?^uX#YrIq5M_eH}}}=KDmJJc9Xf^#n^;WNdfBH2LA*Doh=x|3~lO#uy+pNhK^Ml z&pgVnh?FAnRe%`n&1U55=y`ivzpVFZ!k zo!#9B5q=8b@aPkX`XWk(IG_rQ=`-crlS1Z+&Il1dl z4`hYq>XVxq5Qn^QNN()vJ3g3Go)4~oQ8qVC#Q3^h$d}e5m@KC5o4`tEF)>J*dVK?< z&+uG16O4C4H>9r*c8HnJag#!GqgZ4UBNbhP*9Y4X-0n7}K2W}?j;@;+x+apyS$2dv z*uMMVA0hODhFh;@!R#s7L<_0c1MO0%Da=4ei_?eIU>u5)^P2P) z8RC{pq6zJTP_AJ^bxI~OcWG73={}fusw!sQh0)`{NpnFUgIOTvly_OR0<2C{Wh#`e zkph(7<4RMh$BJ>(8Skr;9y#H3Ep3ImYlx-Jb=V~!v4SlKc=q++yt8+Z%O}*y5kv`t zJkngUx+?kb&M{PrBD=J5qq^Q^kT6zv+-i@CSWez2Q7Ch=07N zH_+az9RyLM@tueIdKDLj{tgubA#-qbH9`z37;StZmDAV~MKU?h8A-{_8+E8K98g=% zI4qBDS$2k&!zH>q!a!mcjTYh))mw0r7*gdm6>sOzAq+`C1}FooGBSvibQ+!L?o&1_htPV$mWBaU zMd|EScOMqqNU&9{5m0c#JBP!woO%_MJ$-`;3Df0=(#jK6`Z-I?t9lV&!h(du2sN1u z=sIQQG__qB299C{MDNh<<3qcTsCZRQVHt#3H%)=;9o6QndkpiPLmh?kl^jH=ZdN{s za#Eo?!3)|V=}CUNH!8ad0Bwbo?djwaiC%`LRAZHjzdU_pNEhS!C0$gx8QLtk9uso> zQ@Zf+Pqz&Wz*@O#KBD|wxQ!gD#^j04O{-=g@TyQZ%7#YnI=M$rU75o4O>)c57I~z6 zEaI=m`s&1tu+{lszm}aahgNCo5^5IlbahHnGvcA$LUl_ma8YM47`=$_q6*Eu(9P;f z+;DZ#Z=7^>L5|p*PWP+6BwTnPJ^hN2vsb23*&BQM`Y}<)B{=(WmYta7(k0F5JfVtH zcg&=)s2eq5iRY{vT(2tQ(Nx3JNQqq-P#*8Mhv=6M^x+0-0MDtBy1ua+MoM{50s%3f z8`K&eAiBA8KTiIZO*iz%--G)cPaY_B{m=LqTd_r>rWp-lv8`b!EOvtIUqu{>cCM8t~RS4 zP-GNc4=V;oe!!-b+=7oSrzAWsnUM`Kr^@b{bLEwo^Go5o>ddBt%oXFd1VLz7&4w)y z=_z42+=XX|tm|mBI#rA+*U@?NoQJ}&X8t_qnatwuh1rAxwN`fp*@3O&VI)43QxHR{ zqq#RiyEj@B=VVmMMyt4-`%nlu*Q63CDJ~6rUMRsnh|m5=YhMqBy9`}` zzVQAw9qt=Igh_KV6}sFYSWe6jz}+w*C?$EAuVMIcN4gsp9YNHq5GWmh)1+d4bR5aB zYOJcxh^e_EL@jb0vzs%rfjPAn5@MXf@rHT8#serlDRakO_(E?LPxr`_BCq$F`MT^) z!T_Rr)=}|o_G+irhR_88WCLr_ve%rzm-TzuNCQ1EL#N9-Pofwsx?*HyLA0IHryAeT zaL}u=Mn=JPgEB}8S17`~5Int0dQ7+?>e`V(5EnsY2^!)N+MV^IaBY^n;!G{I#b2(t zh384<2q#$DXht0<#^p4)2d=-db5M8$Bl@Ggm}l=gG)VE=)zuCCoQ4m2Sh8S3jTh`q zdZ22yP@c7muV$1qT(%p#4y8vu77iTsTtb#vTDKo<7bknrx@$zdD?QjQ+H26tsNWN)fS96v>$-vLQeX8PtfO4~ka%JM5$Ep*;$RXzR0(53=&@`x-MSkwhv<3^ z;s)FIV7LQk^F{zOk*w|Aokvlh3B)TjHVvpdxl5OnZcBQU|hRtNHUO0iLkFBFsOGiBGNL-8}} zO%uQx5g*10`xiaM1z179Il>>tZHbhtEIZO%KBFo&r!1(Wq4tgbek&(5ll3f|?$Deh zlOG5~n8i7mhq!KM52psZG+xRGtK9mGRhro*YC<(-uzNu6?A*ktCkz7!W4fplj)u8G z)1@QV=7tHWfsM_L0bSB~H}K>!?TU3J!BsoAbz>$7XR67{cRDP$l$*1yH@psmh&dUQ z!jU^^18rOHja^tms2~d%5eOalSH;3xTw5BNaxfCKIKw9C>^oLLbNWGL!_^P1;+cw_V)D+ zA&hzwp13+yZA5F}L=FX7F;ev*N(B*N>`vQpb(S@q>JpRreBP}x8L!U-;Wlx#W>hS8 z_V(kZVgx;9iRhXc-AN!CO5(;eBhpfquB;+~I$>FL0?vkf%0toQVIGoOkrjo_)Qemm z)-y43c@(}Ti>o@QJk^$lZIABm@RA&$ zo2;IaZ0dvz!zHU)MVd9V0VjC^Ogbo>LbC>SbVAD_82Au|QE+f^hYbOQ^Z)~w`W8kQ zm3~l?C3@$?)-}UR@C-4=Yd^N>xW=$HgCp zqpO!>F*eq&tpdgygYA02p>Pd@E~a(a>rI1)E=~7gE#JUN&SP2^;Gpmc9M)~bEdass zS4g4Sy&G%#FilLgsyrEUzOxsr9-uk!gnXu^`PF=~WrpA-_F)-=Zlut41dRNiEI`*CXmH7#)ntP!(Q7zYcFA58!Ry&Hy`e1zYj!#_y=P z4zApUr$_O|ZV&GEBF`Y+tVHw($3fgVjH@BM;mg0raGk=Fe*Ejk+rWnuj4nLw#T(fv zyyM$}H++NYd#*t1hOij~+fPWEib3V})%$VXk5VZ>IF1$! z;f#I7ULf=?U`d9$8OMV-!xtXrvp3k+WS3z0!&_CwuTVv!g)~>DfY@;qX6N<+%paj3 zQ6e{zXhgmnh@@20hZJzKitzPe`iY!-cCik%=d zOZNcY5dN`|(eelJOeBm%O$D0)2|;`0J?SVPtc|aaOxdGqWc&7^MlJC@L2&(5s`Z*# zrLF7&$q~g%OS^8p#y?A=(Uhkk;`J54>kNVmcHyc66z{S}Fjs*4_68OBHdc6kT|DolA@bUCXjLrwo*XYSbUE-O z&q=>%+S1w#fZ9+`ua34=aNP^oQ~}H@>QJC*oP+b<02pkA^!^pdpRJ3s7wnG5KVMDc z0&N$MMM~tU#Rhur0@hil0!;LC}-Wks|QpF zF4>~$p|o}x38QhKR+pZlKBYN~auKBSm7`0G!PZWL@DTF8g#6M8`H_0GIb$1xD@Vi8 zJV>mtY))ar{^~X`w2h%g&{X1m+dT*_(+0Q;?LQgTxJ~hO7G}TV9GXh%D(Z4gZPJPE zj&^8*vvSJ?Z={qA;%Dn6p_WKXwm;aHv=_uVYh*n|*{2bl-HE@St1qz9&4i-?QlVb-JR657Od_oz(JwguV>yngK z7*KrhQkRCYZrBF*U@tbN+Kc_)cET~+j`IMY7~KZ5auqhX3hJ)Lh-)vN1P$A9wjaOC zp>S#Uq$Vk5l=vTv2O=xFQZIxJK3uo1(Ug`jA@+pSWQzWYx+nP z+c6r=3ls{Cs~Vf;8IfceZ!2mY1ox09ve8Y9GA`j0?WpzOS=OzSUdh6sIVT@vc`&$| z44pOe^w%|`vz4RkqjO3Zg}yyw3PO$SNJ(=?uxc-!GB2Tsub&lPF~BJm&SMZTSWSw$ zxjx&1i1^(U<@qSDlhQKs%gPtAVl<1+N){(dmX=y=wDjmjQ-kfa#C~P8UfXHMekI7; z56IHW;EmDz(l?g@gOf0OR9aY^gfhg7{XqjvJ|q9hh*q0!>KJW8$weH`vL_fd5WHEM zwGSX4jdB(v4xb1yi`h=YJ5i&|HgF`bqfD%U^kd|qQ%RWSaaSE7?3Zm*`AIi18e3I) z;>0sjDY&4RT$JYEO6pj*;ShRehX~@pu&p|Ns+GMRxeaQyyAmuGCs^a@)CbIVI>Rr3O-kGhW1o=SR?D_HQnMd8oW%b{&wV&2^#hZ zhkOiJC~mL9#;dOwt%qG@gOzsNpY>^LnA@_f?h3Y)*FtiR$WQP_+ITGyLeDD;)@%<0 zatDR%op8|khH_wMo&52JoOR*zKrV|OwtJoj_F8g^4&&(X1Fy8xtgRa*n3^E#O+a5> zupjq0({L0|vi>W%U56;h|MXykRfTdg;KbhHbR_vRXy$+ouV^XAgdgDLIjz;T*P&%Y zOBOX0d4(+$Kb5+MA-wKj9gf=85;Akpz8}Y3t?v%uDEu6(+6Ii-PU$Dtn*0cJQXg#bG3!=lhdR#*a6Ng}s zey!#k!9lb(y%B-S8hK61kYemj)?lCW9#+|8bvGn-ab&3!a-)$ zMx1flmqsY5sY$Lmr0~+~KX!r>X?UZ!=cndMv^R@WmVX%Aj`F(wl$6tPZ;=hbN(^)q zkE|JU_eHd}72pCY6mfh@lP{b5a^v*Gmv?fd?zKV1>xx$$2`fdv*b5JCu;qidGjS)~=U=1m|3hb5ftZXWf5^ zwscZj_nOgF&DuL+N$rLP3-p~Gz)hUSpkW`{K)(tDkp;ww19r~)Q5Mjbt=Foyh};Wb zNGLa`?!bIg@QVDo#Cr+OAzh-d(B}(X_p=MqLC%M~pL&I+oRv~)F( z{I+G}UzaXv>1j+=FIkekJS$aGVP7XwK}#2IE@{+xmat3>ATDV+UV|E2hTlo}OBSh% zk$*@2rH%M*SYzW-R1YMUR0G1uE+V#sM||4qRCQxxQ*EN9ZDGss2La)uN&Gah_c8bI z|4HEEr;WgP_|uh*m5ZAyDuMj*igSbTfCuLWl~wf>jdeN~AiTJ#(&Vei&3A4^O?_n} zax^zp;1TK!AywC_`UMdXY(bC&b%A@(a%v&YlEl2R`P5>K;PtpfN;cH0ux zfk!;n*EgTK1a$$-8C~U10lRtlm-^!8ial6>4e^1k|7(sOM^ z%g6>*>;|$`OHZPv<Vxxws+N(v7vZes z)F*V+e@uWQpHQ`antw;WrOGO%IrS&Wg)OJeo&FVv1R0vmXS>@BimX!=Hq5#WpZKj$WF+GuKZrM10O9*Ra7nr=BE;9 zz{uY=pZd$@Q(spZ4E;}ii^LxJ5fDSGKqdSMD&`XifRbW3p!sBLU8MPAuR0pQ zZp4?IONh;xnqqs~Uj%8ylNzYgMLX z%g9wN9cU~B9i8`65PV4jWbILxzvSPMt5AK*$VU}dk9@Qy0N5o<8p)Rb-ZHYZW#moG zBb_Syy=0e>H);C+R?{EPvUGO zNvkE~g67kTuTC$lPgS;@UfO*6Jn%~`O7%d0;pvJxU^3FPv@zMJZr{M$EvHwhzZ;19 z=}VGHMTCuVFB=MDT3`y~1EG~3jC`pSmds+Qq@)&G-0Wy^8?o7YrPb#BmvUc*17 zP5za{TGDd*4FFEH010CGk@rDYphVXa&3>ml6%9{Q*w8@eR32{72d!F9pVU`xeNk;a zdJlrKbV+ha%i@+zEh}1H*0Qt?9EqDsfGU&uDUT4|VlaC%jLcIZ~l|`I3fOb`6xwwJp~gT&`78bS(|naop#T&!J7V z95buvwQJE^v~d)VmTPO!Q`a;$)&>dk`I570=RqkYtBgiYR@PJ@dn5JR(#EAcPlDqr z8NnwIB%oY83-S76j;5P!oN;AUGS0d&1zQ^0!=DsfFwlN@UPA z$l2J~(nHBP{U-cZyskP@ci*?5^JpMOzGv!fgkl}}9&p3o#=6>S9Fk~;>eTNwR@S0z zyo2k?#^%$1qKquM9!*6`QdblG1r+XKg&Me9+0jO5OEf?o*6PE9(AKpS6qINgIYU+X zmZjAO5$L=|D3f~7r=q?#Rh3*?orE>4s^D>9Eo1}*9tWM!EodSNYH|5e9gV{9nU>RE zBL6m@{xVtc)WSwI7%G`sHhJI8*S>!7nkR2fuDXBy>%X+_inYlj|6~3W4PXA^g~>mE z-F0to{!#s_5&=@8f`2Ochaa^|@MZ!+8B_!y)9^@D&C&LamB=XL`140VFMZEY|{&^l(Yj84B!9Ugf zQ^!B^`KOtG7V^(x{#nXD=kd?W_~!!tS;0Ra1d!!C`E&#Oz{m@4+>Iyu@w9K4facZ%>#JtgoRo z;`U!CI&wr8l7;hkvYZ{#bL*PjN$8eXwRrhb}v^${epW z$Fw=Vm6p7DtGOB>AatL(e5X0ys*l6(!;z?I8HN^usS0cO<9WamO@+egXjv2rJ)VPw zNA7NJqP9}1j+bakC2Vm8oVcK6Kat>HWKazx&*0)3b^jUzi+YcyOo?1gstPs_CK4(l z8MgLX;16l6pzRs?aW&wh`-1>pN6_*bJVVz*`ssYYwBZsxj4B#iI-r#`Txv7)mC|XA z4Jjy>zf1z+*OzF>f62#5dNCL^z?D$hsRHSq0;dXiO3e^GMTbTjNA^6bYK zNt%3()k%^dfxkV-*T|FCpy+(&9X^w+z!zwl&aHqx*kAdgs|Py!vCne251QI;f3O1i zs6m3@WfegR?_RFCB0ZGitF-BX6khO5nY{*5`>@GM8mmb0;abUc&92K?!sN!Qhtx;- zGG|b`ZN(LxC;BjmYpe+BkVV4_g4g2XpYpkc6gHbpr!GtPrna=Fup4MLmAi&2(gB8byhWZCzwQ}WAY#Dg`U_0K~T-kS+k5`8E0BwV! z!iGpG%oJ*?+dKFVUvtLtv~=%^tM(ySg)irBxoGvpTUT%2uwvcC+t#jFvvvK}6&pI% zu3NEb!$oV>Z(p}=?b`L5u{a&y$w@Y*l; zmpPlIQsI-7%6&eFY2IO1y8)_=ul9EiUO!m7M$kn6Xyi9mV5VO0fP~lk)pq5B?fbD= z<6t{>)avU!+I^Bc8exML{m|^9m4)<%ir}*BNAqN-@8gHN`r7rT*#Km=Ou^f^T}SZ- zba-PQ-X-oI80$^ImZ#*~TFZqGE-}{(|?zPNMk zp|$H)ZCJe~-LZbd`J*e-AB~VY(PFZ{7L_2_vuP{;-}=Kl-~Y(A|N7jwuX_32pLp;8 z`LCOA`s2($?|pYmR@AOAoS!nU$YY+ z-~K>#a8Y3(Bnv}bQtWFVst(Sp1;OTlp1Ux2wmH~@BUZTw2f|-PkUF;Yp{Vz7CLqiTb}lG4z~A%pW39l#a81-POQABqvPV0C$RbM z%KicD24+6YPz7aGiBAhJ*_#NiFtW!Tddt8oD#~ZSs^Y}*yolY@)vFO(rx1hn4iXxh zL)F1`S=G1g1X1Rm`|aC~9Kp^HgJqyMs;`gL1lVUxzDa7;p*9igR38W(kBZKIU1d7G zCNCkYye#`!yAZFDkY;zLwB?n0>w86y9FhbLiEP(%9{w_e4+k z5w&0LV0+)d(Um=FugVo_8wuImpJ3K$Fe|7pTOqtlpAV|l#~0cf;6Er?{KWHZb!ReF z7k8}t+zV}W4`iy=tm*jN3$0BR!MT~BPW1NRe7Gx=Z2jqm-mae3g_Xgb&j*eAOAFWl zNbSMU+FZrE_4+O?@zM=sQ8A@P;PqD^+cyD@vc&D%ItO9$^p4%IE=s^!;Slc51hup_ z*dVEOUNtYP)uuhI3o(v^zoX0Xv#{JEV`)bv>blSfLR?)}9>;E-U58LKz4YQL6j)WD zKyD>eR;|sokh-8=KjCh1t&PdxjE!s^FEz4N|MGn0%eKHqy}XXvkf{npYX5JUs;e?V z+nUOteOb6ikdcuK+Lxu%uiD#%t=ZCAYTCCC@M9y`(dmM-UubKp3hD>LEx$kUeEYST zDiEY?ej=#tcvZ)%R<*DF!V7J+@Yp-9%+w;pgzDSo*TPo>`q<6)l1w6*NR(9nF6{Bw zHFW%NdYtQDTp28|+HW=;VI?h9!94pL$Ju7qLfdp?8<bX{ZmXUX=-2TN(l!8mvv2 z+Lkt8YY+JbirGD?U4LQp7tgo9F;n$SCOH3v%p1WQiNw72XERkl$OJV_|CxEZva;^{ z?c3LF;=i`q|HxFVzv21T1@i(tp9iZ7Uv+Qi;jZI@ZME})iuE7N)c#kd>c77bw4OCT zz#)nKtoC5D@}ahd`DjD?+U2WW{z7YWBcIi){hG|vM*XzoG}rR8Zbe$xf@&D-(61;p#3)%V9(N7RLDm2Be9)HsOr~Hw9=)tXguRsWexV)ce~ z7s_?rXP`7UgqM7L(T4W5cs#HDm6@u$o)1=ltU+r-OK{ioRSBxXwx*U`p>1thfQLZ? z#%N;E+Zr*ifI$uvRA=`knYQ`g&(v}UUu=hd3EF#h@CVNaHCiFmo*gV*3ziR7I_;qT zaEP(E?Y1VV!sxxVX(6n2P!|eyTkS$cz1F4|sRyC9X{*B=->MF%kwnt8tgUH5P`?BF z``paEn}8t7wBC&Qx_QU(MG17OYdN2)QWut*}nZ zqNplVa4-7a3vJCmjxc#!?JqJFYryQyi-TbpV{WI|KQxF>HPqBBhJLANed&w&;3dLm zdb6+1odemeoZ1>+93(NI=GUGMgY(*6!V*ifo$f6261z-e$IoMWv9s~kU zQZMC`#XASN|0UQI8{~B!MRezw`L=OQ%}a@5`~FPTdtV6JUz4eN7Y-XTReylPg&F*> z`WckVtIy4><({M|Y{H*n6H-HcDf)6L26nm;*g1kd+6Gh0dblrRN^i`FmRvv{Ot@j5 zcW&k-*tj^g>GJ(61f<$)R>R6uQektjdxhGkFZBux&{EtY?iEDpu#Teur{1G0)tB%T zxKuA>cQ6mkmFH$I&^zoYSSjujm+I4VsUzwuJNa7Gc5dceyN+HZO<3LZ=@(#n*;lL2 z&8#pntrYgB!zU+n1A6e4kJQ05ItL%jNp%jgFv9&M&1J@*0Br<0sZ!1 zCRo96M{C3R!Go}I$`CZ3A0+jjvb(Q`@KZyqfg~r-WGXLO4L>~jK&JBIwK$pg{Y=ef z^>t|2f`&&j)qANiaGrcNQ@Q&xR(lHg62NKznD?%@t+2)mp23LZ$5mn@;wmJv0Eysu_nV&R=$(aZR$!ucT3&EmN3 z+)PIpCcP2f76dW{G;<=Q?WxcJr*^%5PXWYpx-@w^SY;jTUHwNgiOrA<+CXvv6i-|I z!;W9RR9qRvA!^W$ z!+ke>;`vrgUu1(4xTw)gL5~RHyqcz2#V6LRr;%P#$=nO|$X*R3j`zz4hT57dg9feq z)E5Zgv|x~&8^oy6L5$tKdJwd#bz#C8#Hb#}AVy7Y5TiC5#7JSfre67zYPh4q1enCJ z!UQj`Ly(kGlM^sloQN4PW4K@Shp=JEFd9&!qX8Z5t2rjdyqFpvC93YpR5Ul#o`3QB z^;@@Z$LNZ~%4F`a5=%tXu(EFSu(GbyVda}J7NgI;X8D@s>zBhdH3Ny(mikcxpr-oV zu|?aw$1NLZTQ~xtdF42(t@)u$gWke>3qP>}2FkUjv~{%)!%U*`XERN;)he5|&s0He zEe~bp835`t5~Co{9vcX)XEnf>2g#j-TU6efng-Haby|}YiID) zyw*jHY-_Xj5J4&P0j|M@#-Qr+V6^1#FpBSBb9q(!yG#W~>1tGt@mX8#cQO?n@RjH@ z@u=7YUPD{svza8E=>a`Nt$i|6^^NCMKmrFHkU0OW;OmTXClghlLr18Q-isc}G|5i3 z+0v>O4El0wfos>=+!UZ}{mwy70&;X!Q`5vwZbc9R4-$+d)gm78|7C&;o9aV^Udc+M z=(BQd?zaOi040>sWp2?yKor6Serg?+u09g8qNO0VfGv(2uw6e z?fWyjf9eFbv;NSfCwI+zHdCWN1?$3t>_m@M;UTn;>^XRZKpn(Lni`zgtd#~38-_Qo z*t#VS6*`zoqY5f2Zw?+II0qipgzZFPosC4xvzdA38}z9hp^I=WXC2!XKa^P@*jOK~ zhd!l1i>QV09azn8u*x~HyV%B#F(-afJ}+vR63G=P`3QXkuMn~Wull4Eaw4_fMv8%> zP1(=2#Pwfelwvt$awrypcVJdsg>p`$HrPm!Qfhe%)tL(=N*P8Bno>r}tO7asgph$x zC}#~>_@mHCev6}R8y{*N^)V3_E|jz;;$mwZlRHEt7p8+UbRRkg2i?eo+Ee6Sf5bix zn`UA|{S&fx8lUHcRnJ8ygz7*iS);3P;}hyn;#2=@Cc#Kg95$Hc*S?Toqci8?5<+y~ zQlr4TF$t9@F`>Q1U{J-1;;>negAH=KunD0$u&Jv>Au1O)LZLR5u0n21s>GplHqoJ{ zsfZ(ab7>QTbYPRL(PfB?8b}|80-<^^9jb$w; z$S%(~`wzyrs2~d}9NfQF2KP{A4RnL~RS$eY1VfWWY9&E4Zpuen@Fh6JbZcrV==ZkO zKaxrCo2+)kl2ef!>gX9XOzKPEw5gIKX8HEZC!SyW3M_#O&WlXo%VIlxTFHEVvUL%c z$^^~U6ZP@VLCpUyeHoX~w8q0wIXQu@=C>A~-K1j_h(8Ra)w4{dwS`Mxf(G@WXM9%& zpVz`{^wO7A#X`>Jtb)L{;=Lpsn!~RqZauC)eB3s_Ivm1p#VDqAehn+CQI!w2*91#b z36y+sJocRJTfuSY;(1Apc=|99#tH`9#B40S*Ltw8bKr10mNeX{S0(%@rb-qj9g&f? z3zL}aR-cli(&@%3g?)Y9UHGaHrfb!A^7u8ez5z^jw>H;Bf+%hEbwPq(@WE93(ah5I zSZW+x6v10hT1MA}D44P=qzY4Ut&R1;7qY7@+G^|7^m*&N2Hw`IF4{0g=VbA=i`QM; zv6V57DzvL@c`|spX#v-9UZ2j>hFpwUvD6d;ym<1o&8rJ)NQ~<`6gi3jUJ~Y|f#))m z#mShcl1+tcGfOv+0n1s>Q-$$zYvVjS9Hy2JVBJIOy!qL%SX=FU6Q@$kQ{wT;X(QIZ z0KNds!a%oE062fU_^gI2`uGua%#Tn8xaI*Nq;Hs^d@BM7-w;KE^J*pAaKoG$3I(@g z!bDHho)v7D8Si>5V9-q7Ht&H<&8myrH>_I&Z)e^aT&!>JSa%VE01Zv3DNt&!4d>Mt zwRfz#829U&d7ra3Z5VG?Fl%E=@WbZ=Sp(2k-xAQj!kl~SIScrtNptb8E;QjXVrIS{@=>qeD~g82mi48*Y#(<`^f8q-+%t~ z^^fkkcU`dOUF+%-|LxD01&KTV@A~@0l9~&kBDVjm?hMa(^5~AMF9?R8{d`>_b^Dee z@tYgE>k@ze7dHfnjaR+4?#!A$Us`qNmp)YU=m*~LjmrJM{Y`b^BfYm&CjRTW)#mK% zpZ-ze4Da#eQJy?~XH#Y3@E`Ui5}#wWfBudKYt-2pp1n8yx!}=H{osEl{-xnh@a#qC z$fh6duS_)kOJ!9;!Qz>M#gpG3Us0X7^XAu7C6=xFS#@IGC3jRM9{I+}nlsBE`m3to z-p|&YdGf3WgAcs(qjit|`R;py{!ji{U84KvpA8brp8DIm#P47AIn!94sm88<@8^O? z`hQ!O_{dAY5G20;>)+QU{@1=g3liTP$kd(rulu%DysPT=`bYoQ=F2LE-}kBd#DS0P zt4N%<^G>{@bnKu$JHs>Hdh~10-dJ($-|+0chdx%3`1t?)Xno=>KfI>`u-<}Bxbky} zj<4KOd*y5De~_r&{?*?-|98QGjr;!L%bnHL4_tQft((4iU}Iw0uNrF-$9h&JHI;a# zsKk>;hc9^|`Q&vS$;6^1x78=U_VMAG#G)5{pk7mnXNpREs3^$nhN`4E39VqU6CQo~ zpU$sSy|L_nH#8(v52-Unah@qyJo&=kezzvU?1=-P`%{A#&lD`4JlfG&SEHW2_ig*D z6JPu7&B?^)-g93fapL;(lV|?nbWLUQvcIc;^l-~RRDA!OiiX6{#s8xsG5o?y8Z-%c zcIHnXJW!Ey^5_@tS+DLSzQ3ojB5~*WjSUI%bAk-LI9b#5sR++2KLeUat(~bg%gfs8 z&JL-b#zxEe6Bdjw#Q+V;=_mhoP31+Xp{R3y+yzbD(jT+wmM8_ z3{v*_W7%@;Im-zg9*fZ>&pr2?Ds$Uyw`D~B(H6@81Nc#2?ZJ;eiBFyabA8+wsg^=MU1yHemU)`Y=_N zt{mIne*5hi%C{>$_Sj?UIprQZeX=gvdyexv@bk%2V5U(Z1%%1Jk8%8Z?AWo)J@?$> zwAZxL^s_1dw3#R~D}Iz?%0BhgefQnxY&-8$H!NGWjBS1bKl(Y;i#~Y@OjinU{CNz& zhiTt9PIcLA+BDj8$^i1tsb5D&hmvcTy(e9$6O7E$zaPdgg`ZEJ0@Hy49BbZ1*{0p5 zeYO+Fue9ZSW@6KGO1428XM5?paIDWU$}`VAW0Nc+GH>Wb-~Ir8N&I~B6qrm3q)-{- z$WPJVW_-*}lx^N4ADeNglh;w+-#0YinB67w^zBJU(CQid7{l{pc@V*;38laeK);W6 zhCXI=&dJO6_~c{`TRxkJYIj9>pS`r*KY_Ou5+7b!rVdYE(DQQJ))ld+`9oZ|v6 zbHWdxZ_hcz=y;wso_-YQ@C1IG%V@&SCr^QLD8TU`dFUzH7kk`IJ3}9na*yZ!HwiSL z9j86F$MV#%)B_kB{RaKOSiN7110wiT6a_;0CJ))ZIeCo!y0_g^r`s6s;9Q2?FZAho z56_-M4>NA!?R!zIJ|{E9$~Sq6@p2zin>zUhM~?EF7@xD}E-iVdeILfp%R7kRQ%Hep zaQ0Nxep9}A56}E>8qTb@Fh)(B`Ivx4x%df}Jr`bb+6V&6jkIwmUzE^=J`rjO&0d+ao zJV>H1Z~FfZ@PLoY&um#|ob56CZ?e9EM?VIiySk139OJB#IDV_Gt$iAN;^TBPQ`VIY z=Nd^#wCCPOpSv;+HdekHeR;~aB(AG7aXP*yVRvuU4}LcHsrm*%g~wsYSPNgTJEnEZ(u!}W6q zQTkf9Q$Neti*Z%1RrP#d8sE=VdfD?Z^aIWMn)^WyAEN^ira_{g{s3iK=1%B~nfH{v zoO?gLXda;7XUB7B=fPV~;Kz8bPg6&M^^BF;emdvF{dyN~!@-h8%Xc&{-+dFC!TDF? z#~+wFHlNcqA82iD{k_Cd*e}M{D!YH9{q3*Imz9}LJB|TmJr$2uJbq3K-6S{u7QTBT z@pR6M_%$zcS0*P)r*IBd_OhWJG3zewLw$bCKCuGNc-vj1xA;|@6Zi3SFXIy>>x65^ z<2mn+d)%LnaUq|^p90jO57_G)Oq|5~>0=m+f~KB+MbLn8UP*i(rmn8;Nzl&6=RkyU zOexaU-hFn3GO)h_f`6gAK zrgMFa1IZc<9vKS;zJ6`|*fdlJb*9ABNmn0l^D;NpdVujcnDO_w9rW7*?LFY6@<`+8f( z=^y!bNxh6u7uk;D;bpxf*_O;|JkE75Oq6jyH|}LTDqGX-nzAl)L6#5i$Lk{1xyNPp zc-+glm+$E&&xP=jeaR^6t5&W0cjWhR_*@xR^W*XjGmgu>9rtoxNUo;abK8fv=G->s zvih98;ySm-B%VR~_?VlQaqz^9oU^B_OB|lOym;~A-=Zzc=B#wZ@Yuc0|W-$dpV{FvPHem>rx zOV2n~m$~KP;bF@9Or2Lx(I=7hK=f7SQa}2(dYx8?2e^ht63>x;2YxdxVfx^H)eN(~ z*UR}Fi!Xy=eV-SgfqajE^URE6fo3zwe?KO%2Kpv`-zU%SUgq6AV86%8_clSN+wq$T zX%W}^h`;XV(A@otj`X(9(?IcnJ=bR5*<3#Z1pPjVCHi%(UY5N+D~<;ki(}&aGi>}B z&}};V?+4^vQ?7~edqx!3$6gjZo#?;I8WR(L9|m7c$CP9oLFNj$e*}>9KTiYC14Z%x zeRd|=$O|sG;P;T9>9_|CLWj2~Jh>jm%edEZo(D?j0ogOw%u(F~8cwIAVsEm3-GAq> z^!`O>dfn)0pys9`a+@T^Q`BAGI>B^a>g&_zH-wcb=czyAA9q5 z8BFPAd<-;TOitolW>2+a(?HOnb{Be`!rZ52Xyp%D#V9+ z$oKKs``FXa(~vwM-!3sWy&w0cDuuS(@7d~k6HMs!{5aBp>*SbdL-FmwUxL0v8>6~jb`@~M>+L_RnGY04T z*z>sOfr;aRh)ti&{U}0PZoV<$WxWht&X`8AKQBjaIePiaUtTl~ckS9WBl%Qp`XtBR zFS1!+#!k4bP%dIz#Hm*8&FD`$+`{M~KUp;&lS68w3*$;*4 zh(6B;JDPXAujw~45eLAYjMzKe2)*`gvggam6}t%S*UNKb(eeX!g*j| zK+)#jd+*IW`Q($~w+n@i|M{Q)sc8G)gAZmt^O?_N-uAY)g>)f(`O7X)8P*ZSq1bDI%_IGV zuYdjP&N|Ay$v&aoBK&+f2_91==k~gHBY(?)?|7$UY$p@P=KwybKcVs4-~M)mL%u(s z{p@GQ4L7ORRbL@Fm$E#5&Sk1JM2gl2f3DZPNkgleNZOuvpNCqw}kJWaxP8UJy}Pg zZ(RJ%HBK9^xd5r##TUiMIc4?Nzy7tWxVra)AN)Y^VLn>(}{;!zvEZ6o7+ zcBzN5WtVlG3ynVc$xli#=dsk-iLKv1^q~(qVaiR$5=6FLIPxCxEEFH%SS8LzNIR!e z&e;xmzs0OW9nW~&?Xrif*`uyt-^bCqoclswm+#A1u1n9C%2RQ8N!`Lv_AyS*r3{ZQ z+yq9cV^+eW-HuDew%NunpU=*E=!fU?Wo?}i$Nz#a>ndg(AblZtvdqta{&NA7bEJMN zB_>RK36J_UF2%tUeB#Hu53PBMW*6xaItNcHo53VdlpUf$K&u4SUeWe8H5`r zLoWCNJKy{Yb-$}@zI%jAS&#Fx$Y(CyCiqOXoZIm@^UcEXSo403d|SonkCN${kLHD* z32ixUawU%Wn8(Fq^dk$wFZ5jMchwyyt5SyXKvyDv74k9T@FMJdJW6{XSC;ohR}hZN z*Km#3^U+b->e3nXFQR%bj%HDu1uluRg?mrJ(^PE#%CYzM#H!eqv$ zCvb19=`I-$O!i*QHcz_ZZ(U`fbor0&p;`lh4*v_a-Q0}Rxq(N9%yii*Nc3eE7*jPlNdP;dNI86sRC*F*SGx2>BT#scgJ@nc6?bA|dG9Gz_ zt{l_35@nn9NWQ3jVwth>gTQvxpHI%?;=^ObXDoEJ{UevpF6--D@lNW6Xx%~^#v!6f zd;^!hD`xyBu;bRmlrqkb;$7~w;51$2T;#%he{mS?DmR5b`((d=Dm3NM6@Mcip;0+< z9_QN^<0lHN=uz;9@-eUT$+^pqWf{s+w2sNTmbUQd(utHwK6A;fYYnWxbLj5P60UQd%6C@cV%C&tTRzwar%#{OOc427 zjGt)3vd^V&BOujfJ~@xGL&VXBKbhy!7MIUXc_J>7Cn{gAHL#L5>gSU<^w;INOXub5 z6Wi~I#_19oOaf?i=}C6{gAd+3kLgi&;m<-NI8*+d=$! z&o#a*hED`8;Y3qDIgjH7fj1Gyd~LL8>hjrn&*o)U9_n17nT@~8HxPZseC(@edg!5t zLRbP*jyCLQIbM^tcAoJ*C#?h*`zZCq^{t(Evd+bKH|tu;c`yAIiQUJ=A1A6ULQfuD z@i&(~Cyz6KT-+wA7mCGQaEar$C>+TjwTCQk&ksnxi8w}a;{Yby3SA2ivEFE6e@DwpewUm_%TL6$%fGgH)MZR8loac)>M(HB$w|Q|g&t-j!S?|6Pbr+is&{t==h7-A@b~! zE8Fh4{6V&*kgVq8DaPYm_QQpX+!J`LJDT#zd7RFV!Wi%Cd^ov$cGmBbHMZL&XLcOj zWusksSZL^q%jX+|vD{Q8I~Eb;g}A;gmA3@$Sda3qs#zOX%J)^D;F?ON$^8DQ@B@#o zxOpk_t}g$S?TPdG<7h27v1~NulPTADG+KTlt~sA)x5d_-E}FRfe3qAX(?75i+bqvq z^JOkODDYfpCK@O{lj}O38lFMn6m% z?$Wn$cE=@GXv`@52q$iA7oB%^mACH+PA-0O;UoFu{1M`1!!Pw*;B)^8SBj1+B|ncY zpFNsi@R4%ScF^~hXRfh%T>DtY<>#{vF5N42MD+~w$LS`)y_loG|KbM5SG)7fSd+a=d57*VXQqI6JKy}=Z4u!x6&m9U93BNPT{8D?J~@xGT`r!s>&tg;^QUX9OYEX! zZNcB=vy-Oz>XWijKY(p;$-h1C7KJN);)?CjK1by?Uw*c8EVfhH#iNVYT(L~HN6NW$ z6><9f=Rcp9o>7{N=e4}QX6DiF2kb&AoHsY`!AuJ7LPN@+E7^0hXh1=n2rpmEKFU{d zFa<9cPWj}VHB zPh4`FFMp}yFKLslE8~2wI9)9Ch?8^r22#&tA32XM3Exou4eHOA_#Udt&bfD%Mdk_r z3H^9<`PxK?erGAT2uzo(5uR&I=z=eBSSFhC$qCE3Y!_irMvB!lf|KBp4{nq{rHsq= z3LXMK?noG}xVnqiDZ_Dacwg{wjq6=EhBkHvVzt=o`=v z$wz~Ud?w#!;u<;B(}7=H>WJ9?Nx@nAGmal=1A%bKKf-mzc-faOzH-$exUoz$vA@b4f4dL zaF2GDL8b}++4OgfAxXQaohlYD>6a*v5+?6a4hz8&7%US_`Q)5%S=PnVgv0Nqalc{a zaq+iJ7r}vhzCQl=<54u!b#!bjWq5S??8V5Xw1F`4@iq}CwvPyl`o)!8KAW_|Mc>55O#~m}XVWe2T=1fviKe(149l<`ak9y8C)wXdlsckE@)+0U z#K9>vz7}}-8tGAf@ z(*8I;%I8NF3qNj7iEXv@t_z;v7v)LmPgfcH9?Me(<9Lg3_)R~4$CLZJ+5AC!Prdt3 z|MX9;>ce}k_?O@v=d%|pmuw4R#o1sYK|N!)Ip4Y9<(dm&Y|-W02o7<+kr0A=}NkyKD>PIlJAYmd@<=2*Uo62rCf6_ zW+ukgQ0^)G;?h&Hu4Xd!Zx*`oDEdVqYW-o~0@<>EQb$~TuaK`G!L(?a%K@Fond zYsn|;Av(?u-1I{hnRx;+jMsFmFCs$YXCpfzBD}}!ahkk|Y+c7TK#oS|?Tx}Pe<9zn$Sl$K0z9;bF_WUSS7YjU>?k$8H z%Z{h4(~cJ-`bwND`TgkduN_(tFzP2snd%v`&Zhfru-?%Oevxbd?Y zXNNXt&?>ITs8Recb;XSh^7&ArkBCn+l`7|g8}VVC z9G91p$k&wJV)%n~xa=kCD^)Iux6mQlSH;HdrR{PgesOvuUw=q>;={2o=~1e@lkWM( z2U3UYNW5LLOgxAa;{o6O?sxNcD`lMayqJD;;gIj1tba9g7q0I&9E;=`B`^8lm->wK z;*WjmO4RG)Nr!xO6%&suwSC3pCr*sdkVk0aqw#d|FTWvh@4fe`Z>f$aJ&M6^rsSb) z@%sv-6X_L=w{aXw`jXC*@qIw{>$~3dF7*u!(Lt2$C!c&$;ZTmAEw(SjR-1Y8+fgo> z!u{YTdJkvPL4I*Iw$L~Y$d{ytq(15oS9*KQ9yO)biGOE1~$*^GHzb8F#V z?GrtxCNdWnbEO=XGVfCiuSlJ7v4FV!4vK;8^NcUAdU}>mPl=_Qcgi0FEu-mvv8@xi zw}g!ID0gx3+j7^rqCt6WJnM{`OD`0UD+Jp=&rf?#pUI<-_^Y7#bNEFQRKOD|%S6td zi(TcBvgJyJ=DL7*UU`mtE_KJnr(E$LDHAGv z{b47PJ|Zu1@i)pnyqsLa$veKS$yg-6%B6|CGfJ_dplBIjIN5jU4^$KwQVMV!bVZ_mfSZziI@=Ne3z zQ*wM;anj^maEOSEx-4aX#*dDXhN2?11}-lCHc{*PS+DCy`Hj;#c05kT8(z-cbac_y-pYOk7cp#6Q;}x}I-fxc?%NIji zpU2DKbm4(Ka_-0HUdDY)W|r`Pmve7(ri;z-cuX8GdO4ps+IqhAw4E+IkWbFJ7M5u; z_J*4-^ze9i*_@3$kVnoZd_CN3q^EC_*Avr`2fUnnzMPJH>2VrgzLa;gxaJeI9mY@6 z#*U5-<+o49-tDN=$96ppJP%9|4@BNqJ0?PoBVIpGDLFU$$N4^(pg!J-1L3oY2f4md4DgTOc#3Q`Ded<%02OoS;eG7%}^x8?jDf8`be_MUynfnC^oax-wnT*?0Pd%l&fO|fo9Vz_m z^qAOt#^mt8|2z#s9uV1-Bfn2p=)3H;yxZsePWe0D@eU>Lp3lZ#&PZ!({B6rP&+q3q znV8J}abX|(z8L?$m`OAh+2--)n{UqWJEP-~2#4Q7^ket&<1dM)b8lzx*faP=(;c$E z3i}fe{m;`N^s&hkTz|pug^y<?k;%e$$!-+sHNyO(jr z17gd$Z{~Q*xabSQrJvwseeALxk>PtBa(+P8xEo#I=|0D0U1XfcFMs*VB9^0$jJ18` zD_>FHCT3htf7N`)*s80dGX1Ok93QKys&)926fs(cI8eDm1;wwe)f zb$CqH#&SP*Proev<{~XbCiy*zX!_+Ze_1wv5H7!o>q=k!>Q~E#I~V)NZu7Eb%M?jz ztIhrBH<58$rF-O^wsLeeAP9VaoF%lNOma;9^wUpg{`#-~TCHgt85zl3c;SU*_p#`Y zAO7%%qePwG`2s;k)N0QT{f<<%++wBRMj&wlo^CChgd=b!xKCz(^HPAPdS zmG=b?ITB7O@2pWbab29qdmO#<(WF$I=SqHw!SS6_wD}4A3Z*a>XUdeU^HIT!DkFRw z$9GX#8PDrDo)(;Vq>s*ZXXBM9Z=d|+Crgrb8y}v>eLKDw9BJbjGm4{k98G2#Uri>y zVw=r8S-u#Y$p1!pw~ap7Wa2tibqNp0@m(>zTW%f~Pup=p%J>g{@Pl%}=Pk#vJKJ7} z?ooVP^XYjjay+E2`HR2!3&)d;lK(sv$mQ#UYXO*#JE?|$c$CAmpG6OD&Q`>_;!1nyXljKfE9 z@YnJ3#qqeTgEO)7xOH$KV@`Tl*2A-p@nly2gpcFw`DCu$u;W~D_)vxzU+11K`TB

F@sT@6;TCytBr(@SO7kd{%6te#+M_|14J?<(+f0 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 YooD(qwwHwiG5`MfOtBhdH6nrk51*aNfdBvi literal 0 HcmV?d00001 diff --git a/obj/Release/LogViewer.g.resources b/obj/Release/LogViewer.g.resources new file mode 100644 index 0000000000000000000000000000000000000000..9720aac4be3f26da2bbfdd0566ca1178f2edfc39 GIT binary patch literal 366496 zcmeFa4V)cCwJ+L}+4Gfz%p@e)2_eiFMjQ|(lVk`38Zv|r!(k$EKogHS&&(u4GBC+Z zdL|O^BO~g?PdHb(f*0R|gI+*?M>%>0e0r5pxfkJi`Si*`pOVA72tMBvh4T~MQRuh+ z)wOz8*RJl}`)g+JnX06xdv{f>T5Hu>t5&V5?tb)*BXBYmR-gf@sk%`0Z(58b! zhbP>Dk<;6@A08YT-gC*&HJ6WGHFR*(;8|x4oVn-BjqA?d&^^@EbN0#EjU7HXF??W% zTfb~*VjdyYNC(pP^De;uPd$124Ub>=*RTHg-KTu*OP~FJ|9b7!|Eu>u`#-&8(SN({ zt*IY=W_%?TeLo%lK*#^2<5Unw=_7P>({VY$Tsq(kI-|~EXTs^Es{!YLGlDYC@++KS zx}0!^99PL&xWsWzQL_e|JydAe`2Zag&NWKWcfZMTP8cEJ`$XoDbG3vuOjSmmA9gy< zNe8IKVdo%a;qP9$eYFB%)2=$_T$gH%3lv?dhwHUe7!~))Uju}pE2_SqFdlNQ5X6iT zzn8wl6}B03$v?eBiR&UsSE36bDMLSv&A`& z&VBT2cW~4=9wq0*;~b}{Z*<>#hKH^ma#t^-e5X11-Fe>N=;4W4x_4rKjq}bO!w2_{ zUOm2LV0@?m>D#bw@QMvRXKozWyJ2JZ(1tTl+%eC&Y`Z%&K6G$mV1fks{86_gaCg-@ zJ5{(BxdR7=t{!!-Dgn|Y3dEU@acPt}@0s^U<)^)8N@~NEX)H(Ie(zn;_U7xi2;KkueUcn;nkkiwehQOv^PEE)pmDxef5pjmKx_I&uL=2J$_t` z(+15Jwa+^^e4usNJm>b;okf=qxci1Cw!4ItJ8@0x;#%CD@85kVsmbcIA)*_ka7u;m z+%~j#c%Tz-gras{I50kZaNh-^G`tMa=pq!Xby3Q>)N>jz+RzZvy08vE>)taka(Jk9 zSv`rHv&gS^(cy!lzgKt7qqa`V(bl^T54aPa%L8!nzz4!i~UKwJvTTt#ju4 zIon3}4z(_7be>R=ZNg6<+1h`7ecqeTr!nf3CRjtHT4GY?zw>I}?K$n;^PJ9(cVB$r z$j|{YTvA6)?d%vDI;VelY;0u6*P70Y+@V8)4PEDSowKg<%)8%cZ>V!>y58kA)H}7*eEV??P6Nok^zg(cFV&bz z<<Ogz9%vkp>Pm&nj#DZFP`N~IRHHqVD@HeT)y z@7qTX+k*K{?Kz&)x@3Vvrv?2qz7FlZ@B<`D?W-3!>0qp4`RW@bw{P!nU+;XMSNoFZ zocxCOK9Y@8YGLQgUhSivQ{VCz@5OoZnohpxqK)U_Uwgy9c{M$UUT-~qp+or#X;eKp zqX-muWA>G}6w!(YAH|M-T}+I*Ztr^X8p?%h5*Oc*RUj%esS^YnG6ywSRN z5%T6=HbLqqa~Ju!U8lU!`Jh*uA}SU(J9Mf$e{^KjZC}vr)NL6dA^)0}LT-C=vje== zZ@|B=d9BB_pmhDES6neZG|}GB;?#&fZ|r=(S38f&FMiBhu&(QL{!cV4TkKHAqW;mV zFBrOFnB*D5#Dc|6?f><<)82T8H}C8X4mHNVy4Ufq`FD7!4QFpWjej@YK}PfJ;3u-z zpWS&TWiRY}t5&_X(R;P8r66dbhYf~_V?JY~fO53{Rc*=AZTBb&VT<9_NjTsA>sv}gY&qIaqDH?KSOzCmbM>a0GKMBZ6z90z?9D@WW;)sobv z2(Ol9G+H}Nfl{|OEEC*oZCNfd0&COWwA`s(*F|O|)hH=zZ#mwXzjf3dzIK#6EkYCb z?|j2K1CCwmg0yqz8K$-l)WQictkN51qrSrAZG2k^(Io#R5_1GrEB{@-A0P_iB+i3e;} z+8ci4)vWukZ>Tgce%V{Fb$H+Y5jrNu&%qe{m{;3%`UX(*ClZ|o!N?WPpICI3tk6xN zfV=*`zR|w;*P4*GH~iMC=_X-cywaJZ!T7vAdxpj)#xEZjtgl~5_NAtE%?Zd@#d3BT z`I{pnTLxTVtAzK^zUTy}@q*#;0Ww{CN%GoPp~mV=ryJ|6QtN24yZA(bOvXCa*Pkem zS-lz=%QG3O*{rW$Eef@q1j%nYZ)Aitmz<6I`jcQOTUWHA^5XLjPmJyub@yI2G(rw0 z>2!U4EAs2>KkN~~oo!z2TCy%JZ4RB9wh!zZ+A+L$Vt;#6n^U{73l7iXHz8|&-|)eq ztwZRR_J%i+LQqcI8sx0Jc>K~an#vB0Y#(q3_PGON`!75wxKm%h1}Ju3?$v(w4X5+% zUhOC8bhcOfH*`A9qyM$fk#Tw3N#28+^I8o!k1_Mn?CwT`@c| zG~U*6fF|9;ZR1SIsgS{x8RnZ#@>acje5mcbzRS;GkOzjyA@gCy)D+kZj+}8mP3Ny_ zdkam_+AgBz-vXre4v&wG3|vDv9o)BeeE+CBA;7gAB;6g4fw}f1@6`UGJ!HxRthT=4 z@rkzKgKgxj`T#nHju2*}BNTRsqpJNR?<5)k4j(w!b{REJj$vEJ9)ah65waMMt9-^u z-do;v7(@|0G!x*eg!(vjd)vs+2Zl!4hWCsf^r57bZu*BeXy`>>Z8*t0gILo2&Y_96 z^G6R}G3<9v+kwMG(clnu&cxxdwt;aFLjnm6PSuLq|N9#>jC_WSSXT!b1nRekJ?9LB zJ6ac<>^w|koEQieo$NGjIXp2jdhpV#NcmwQx=E88pYZ0b-#~tN<3rxOv(BW8g+KM` zw~SK312h&ac-*V&hiKAuOD{pQ*Acz|uz>(9eB7%)pZGuIQjw;gdbO92j?vYU z$GnB>x@Z)p|8ydoDVkcxF8{i2x~hGNj29f#`uW$hac*7Q?$B+;oo`>*?$p13aAe>h z5I^%iZ>^l2Tz&P`G+o_0H0F+8Nh&C&u9s|CyJvhYiS`FXFraf_eC){P*E?7E3IXAz zk#FDd!GV!BRBao)rtK2ahx0qz`i2hrf)+^~hW766(>H859e+U*CNJwZ_DD+Rhbal; z{igf8RSMoiXB-?jGCD4B9wc-#IBq=2>$>pZ{(*yghW567zz>fB%}Ymyi6*!0f&t3w zYzqe9wr%g(o&)hvmp0x^qOy_3yZJYHsV$@#7y}^%WO&-=Kjx)2_K5Bhw5=yQC3=Y_ zZ`?~?``XuN2vz%J!+qWvplzHY3j2m9_8%S;bdBx>s%uHA{m9HkqppClsHqX*mGF+8#L@Sq@!WP0A4E@&%tl(C_z8!eW8FyMC!Z&L$ioaboXG8K5-sOFY}`aVj^*P ztZ#IWh#|Bup64v^jo+nL(*%W_7Mdi7gBZ1b5aZH={v>E!>#~$Fh*4LV({6!Pwzgx z=X7#SR z{Azf`tHCT?%*ttg*52?FucnK9CHPD@3o#+Dp?%TIUL!fvu0KU>IOf&<@O2T8ppzev zIJw#R0ixWEsoJknM~Io;@<+TDin|VuQh+K`TeL!xzHlq#+O;ljaj5S6i^nhAJ3N8; zLw$VJ_mEFHoo0BOLc!G~`| z1s?HnFMAE!eAnNE!$)bZ4WGAt=_B5v2|vsj6b~T*U~EwuZt(p6X=2#M_5+t5(zWnq zum1A=E=^!ectD)su?jqx7hF7qM*!5oj7Hgl5t}oa0APdg#yc-KKMEB%n8KnmDxz!% zj{uwjk2=6MBC%0LV#&+i!fgY4_S2NREu?gs)MC}KedQzG@r;eEfNa2Pej`^hBGscJg}~8yv?f5&K}0#C`friW zu~3~5#{%#M%<5{Xo)M|DRiwZvlGV|xVa`k_LCa{y;B!i9nNlHyPXL+l3G{4127VSg zjX%O{Tg3-f=lqd@af(%#&0q^~QLT>rKP`^CTp z_9qZ;Sv-tR0M&p_W4+&m8K1y@0-yOWdnrVEqIg5A{Jt;5*!YFRxC9UlxYP^qW=sMj z3QREG(qvG?ilVSNK7zFBuS+xBNC$oJ2L86$Hwk%FBuLc@+5k01f_jLOrV|)JuB{+E9?$ zp0V_AiriF?0ToQ{&*jNI8M6g&gDGk{L5m7BHCZ8c5-g^heFN9f;v_9l9^6YY-TL|( z_`U7(ANNvyLsuZE8AL3x6p5*hzk)`K`W!fInTHv(4`y`YORukfOARf=ze!ubr)7-8 z10xh4m>AkNaFC+DZtDtcm2nm;Iqz^s508!0`tRyDV+&1dGz?J^3+Q5fYvs}wKSm+o zi#*S3U4pGI&VtL`frI06Q87i3Ya=0NO4gFXwyvP5JK^_^A&OiO+IufJOeY%Q+mEXY zrtlZgET;9idNfoo8XxbhcUHHhsOAaL*kiTt49r7UE^PD>AKFU@(+&o@NvpA=?lps> z1Mc2V+R|{lzboM%X{lscqaiZVep(|fc3-xCU~C9RXM}bsTsAr~yjR38wz!AK_jig* zTI_CJ+@u9j+UGYpsqF(3`)L_}pSQZFjtE(=;cea*B4F~ikXl-bYh5(oxjVDlqP=0h zSUzuExB$2PT^H>%N5^9Eg=cL%tLp;9IBJQm_R|}kQzQknu1dQYV`vCtjE1?T2;j-t z)4s6DsRuLO-zC_Q0C--Q=La6!P*yfZM3q!7?DAHh4FN1qms=MtRKsCn`vC3Z zXkB<*CM?$8aGZ=&iR~%Tc!g-B{VxQc0cK!Ow?hH2e!H@H!8=DMGCF`g4-`WBp`6OM zE?DIJkPQu8*9qOGfQ`{YQN@dB!NgyvZFVl=74P}9fx#E@_Jt35_3O^+JbPm|c{>ZA zpdUS*T^rX^5MV(Iwd4r1*G|`U>pQ#FokjQOFUEbW+O*Sry9PxUEpeWF-Qhg|?emv7 z@ULjiy)}J2a$0;T-Zo5&K7GRnh9}zRAMd2rcb;|TyS)0ATX`!-SJ%2NTh`S-SNApV z|DN~92k-rZ^UoXpF#m}MAAgVY+MVy2|J3$-H#*xtxp98#-~CgEle+!?oIgKxV*ROP zA})Ha=?Prn;;F4WPIV?W_y;no_^`_8}+L`|fj_p6LFk)wQ>O_ism2sjs5hfBN{t z_2TLYTzz)vtIktje)K=5{&m5BqP*qQkuCq@@_DJ2f1OvG60mS3VBzAm!)Mf`Zol^J zwW*GE&()7Eh(S5JH{&Qz{?`8k|t%16_ zhb}qmQ|C?X?oD<4eo=jD|ABRlK9_JMxP*(RCO19XcQ!AGL z{d}KGxDs4Krr;ooORj?BV6=dRPI&6YU!B|}dZXjNEm)8eJtVFK$8jZK;o|Q9{$PCy z#Z$Y#`i~MXTnSjXc&cllsb1uL_9K_qrM~;8Ya3Hv{mlKT)RC)BZhYdOKUP1l@sgj< ze`@cNf3Epyx@JLY;;jFzCN=rSss%m^arMMMKD@gobn(>P_wUkOsoRUY(MTldJXG3Hy}|VMIV1OPpIGN zO^vBr{twatak23Ed8x_ooL`r^VBl*tsqem*dIVQb;0hN{-ClcXqsZ%+_nD^DEhz6_ z5r`*nC1ByA`w(dzil<&X;q(R{7On&=Ts(z_L>`(>iSptKApST}+wbG`<^R#2N*#Wv zE_KVTBXz0QhW@4Ahjrvl&(#Z9xOnQ=NvAZ5ys7!UO@8_Bew(fU>j_*5ypZ|R#znO$ z6tBDa@0+jPxTm+*hj;nmSA05gaTyxR6c9Lwia<*MjqcsR(w%*wZ|Ri&6%(y%#Rx#_ zOU}Rjn?tT(o3rtcwY0(Bk-rxDN69S^XugAM(1u4k$J1?oEEx| z`uk~E`TEKHyV2QCL(GznI;R6L>G;ztEVUy*6A0Q_=+#RtEiFR#cJJOT zboaK~Zu1^^-~sR1XP?DG%F~iwc;N-n=3RH)C2)W(fgNaTYlAI#RpNRhonec5>9EOi zz;eLn0DR(JIwt9WPQQwA8Tx$v_16o%f_~*ntb@>f9H?99c#e7u2j?WVfbH?A*CCdpSNGq4 zzmay_hi&NS=m5>n(g8mQcF`uwflB27=AZlNcnsqk=BcJJ8)F*AbLaq-ol{3wSC`Oh z(|8ZQz$QqYhkrjwM;jeBSq@YJ2Qb&X3%ZSQ8{@N@Fn`5ZjyxHgo>RI_yfM-X-vx7h z%u!x?=_QqA9_zg17kvBObTraoljXp4a-fYGLmc@9_}hq&sR_D`dyr!}4>ig<)wlO0 z4=`sp={$UU@R4}+5*>))*||J1!KSiuU@JktAL9&sOnuGC>UL@D7VEqk%g5RwVtmrC ze~kKJcUgPd0-uWP8Z};L5 z6KqPvfk3|@L#l5M8H2xW$L^W4ZHRYZEko@W`1H6(d9P9rBW_~H_e7#TCksXDH)IO& zavM{dIsGPy%<`KMpHtT^6@AC}K1qkwcVdD~0S9){)eHLg4gJPF%CkoW^8j=87=0fL zdf8sgRSt9!;SXTXiYg~ozpK-(A&#Qb6A&g-*?uVHP>&c8FdLShi;O|@Rb zX2W)K!kTD0oqmnzL97n(7@KAv2RewP2QZgY`yOjGHhy0HI!%3Rv`etvSR-MZjx%gJ zm4`3iLx)YXhXY4o$5kI4>*08=f=IN-9N+te2>8exL#Tbq~lAJJ}TOWPy>Ntt9@ZI3cL%%s; zU!9E8;W-&QZ?6u0$KJ;W5Od`*9P@FxAKLopbHGPuea>};Zma8XcHUkc3QkyxSh_k7 z!+1WM-qVsxc5Qxs{tCu+y!V3>=It^jf23-pe(oR&U+ZSrXP$c@u8O^?R_^nY`?<<5 zbsYwNpxj^c0P(}d=!gjwkl?331fAx!6Zm5CIc2No)=y6?1MvIQcn-#SlC5XyKs?u` znd3kYVx_8|j`eW6-^GsMB$A2sTQ7@e-+0Wx`m6Ngch8)d&*_$Tx3;#v#&Hz%i}bY$ z?q9vX?eD^MrP_IiIUw(+!dZ#O&uOKbX5z2MvnL!+$GV8!^D=jJvRpO=Yq0z-8;m1z z-^KmZo}IIoSK$$Fy9@kgzY1&OHlA*Eyj;2txN1Be>+W<9@25jt$fnYB05NvZ2Qixc%ZTf0}+ar@mOtK&1R-CzZ{E)k15BW-E&r3 z3nP3hY^3TRSsk}J&N@~pXY9vP=aW{~^HTO6Rmb5U*=I?uj#r9q>v&jQ&r7$tu$Yfy z-wP6S+^&sV9oKcM(tbnNc`Zos;q82#wK{z6Q0L=T$E|)>nm*^khu=#EU0=6u-Tz1B zZ5%$V<6?cBzhQ=XxgE!?p6Al5O3PP$cxBD4H!SLN_80cKJ6o+H?Guju>JQ*qQY1VVWOckc<(vAkD)q7)c*7Uv^>v)(9@)9P zAO0@9lM4yYrO0Rhth`vAsd^cJu46n$!n~dA37&nyxHi|)^>|*K6W-fM46ujg!K{%1 zyweCVIVAba6`pCGOKCTrALnOF@%|1X-X4|*vrYz7IhW5~-8e@SUF?J5cXiljORasI z?KU3oOF&ZQrn_gkuD2j2!SP7M*k^kmTl%aWgADMyDlopu_sz}bXV-(+I${)djoj+M zT(X0_KLlqPgU6ckY)jXx{)>I@vej`C@HyqrsWJFj8kg(EvpgJkv+re{Tk<{E^f``R zRS)DE(~(&+ps&C?*7?~K8+Wrh9;XL$A&>o9thvc|RLq9C`aS#|1?&yNzQDQAmzG9r z&*Ef&pKn7X%E*$v->*A(oW+{%8O?9Zh<%++~qd2(_Rx?Zj8>TU2zcs~$) zmATZ9mR4)ia>)Sp&~U;vmETH7wIy0UctDUL_xD;opJVZ55?I^kIe5U|BfvT{;#kD9 zYVzOrbF2ZriGA;rm3OQ2W*JbQW5siu#HX9-sD`ux`+eA7w`*wT{-utzW1Z!JkO6hA zO+K^PQw55CKgSa7zE-Qt)}AGk0mR~vu>MSA{1e2tO7`D(^RuSd6Jy^Qk*trcE?7Rn zf9E|WGX6eEa#4w?5pe`wE5Q3B2uXWb9#|PjCkuXM{dg`gKk^WTTJ7_3$c)h?A z`(dn(TN`I(Ab%O)cgD&!s(Xlsm6Sy6jrXtH?;Pgeztox5Hd-EtwJA-HdMilL$^6_S z#&T(gtjt=OwK7nk3~)?N`o(y!TqUF~bzWg(Z+2WJp|m<)1P>6C<2aXmr`rAsP;@do zkBPAy^K;wBR>rLi6fXn(TnO~N0`|!fI{tGizz257_HprjYd%B!t$^myie8Cx?VFl)gRqJL2z5?47Y=c?tW}>WH-wCK=%PwtPR!B$b)& z6pZEenNusHBz$%(F9Q#FOvhTAd{69j?wtw7a>U?lA6pr>GEhDl(8l!Xd>=(HmdkHU zSY0o`mLsN-^sstl)}vESIVCX2m2%2s`ZUMhX}R3rhdUE7_Bg#Lhb~05SE$V7 zBbTPO3vD-wH>NglFRFap{Zhh;YX^BzZ6&>re#q5^o*xHWFI(#0@SBl<1Hqn-*gLrq z{@%CgUN47?$MG6@)1?QDM?U?@b<{KVKHYuy-QMGmKkmKw;)|j$)jz-g{qMzdOyB(G zH@#1P`qKgZg~+LnYc89U4=;1|jox;lzfCy1t}A$R@4feW$BrEfzFo+C{L5edB6$1o z!w-9R+;NBZk&k>N;A1{`sQqTT&IeY$WqJJ?@13E#cyDAmQybpph=jPnbiXHtd5eC1 z`Q?|n8$;($ed<$r+i7B0WF2lZ)QJ2sH8mAkPlaic&0B7{#ry4Ve`^98d+*PG{n3!POo(KmOAHHVVa5nKXA6_yn^bPb%O~3oy?@D5SxeY#p2jBV5cRcVU-vr)& z;R|07JWOiOxLx$SDKTHmb>`<*q4U(nb~?(HD7=58AaN$%!_It$jzp#JeeZh(%RMnI zt1h=`YA=bN>pFhjb=P^n`OR-k;PSc$+5X}ezgU#6Gi{&y+~x7~&;8Ovvsa^FRw>?vOj`oq{yPzK;+{%$?yIUg-Z`9V8D8A3sjXakuIo7TQXlI~aPzr$-+lKbl2N^{RNMf=l%9O@ z$;5nQK7H$3-!g&n(1wmf(%%dlXZQ<0_`wg1Z4`PFeS&cd@Z)e|JZ4JI)qU?$|2hcY zQm6f(6AANk0zRz=^Z4k|qXLJxKVSLES4xH(w`*!Im!5N7oNv16CKHH~+=JYsjePn< z#m(fiGh)!ITyRxbzy9^FxoYT)Hj?_sYI~|ZLOW497HX`3AJBF55!zGRSFf4QC>+$X z<+|o~JV<}K9BXXBTAG|6MDnB5G^#Nk%uRD8jQ54elnHO{TT`2Hdd~H5hR+(8AY(uJ z(T_wdiG2~s8?Ha`iBBY&gWi7o?Xfbd)5iEk`Rt4@^7XpzMZrcJ zQN98<_R1@-h?wR_Kl)Mcw9`%#c%$A2KlnlKh8u1Wu}&^)I-?(s(m0~yz`vQ!nbdPU z4~m5Mtd`;Vmf+b_tfevC({*P4M#bMu^R!Z}1#sIYxk#et(A7Wu;SZ+j;@+c=J}Tre zj+fAR#GDX&h)TI+RE4jOkx@Q7w*%c$>zb~aN4MU3D_1j~^NpRT_Wkpp|GW_<-$X2d zb=!m^?g7tS@e#~bqQ(fOb0+m1bnx>navy3b<8e3hJ6z>E>T>pd6t4@p&-^v{zKG?T z?0mj56@?eK&GMw4qx78X;B3N;VdOh!1w4$~Q7I|SDt>W3JKBLC9_P!dHX};@8DF%O zWFEkM!FZz1^UpueU_xiuw|rv4z!&gfU!zhKJjN%APR6_3XI^8I@woe`y;7t``WDn{ z9DkdswKVV;bm<9tWb%vA|Lg-36AHFV+_!qW_?=77(LV4nrKq}bxUx<~jloH2W|~ZV z!+54A_~TJ{F)W;O*$lvq(jgOkh8?%Q0^4t@8+Q+Iq3cn87Uaxi+Zdmj)^jx;C%;)( ziaqZ;`P(Yee&o&9IG*RqW8PxkWJ;Lxp^Qn!;78_ypDUl+H?qil1r@i^{V?o0J-l7B8A6?=wlDs(I_g{&}srtug2 zM80k_fwL(##jtQT`TK}_L)Y~LKRg#L3_B_wku(;OtDSuE8K+9nbKs4bI1-*Wq2I-< zr3XGczI~bxPfAgi`HDH6DM7c<4wuu%C)6oc9vHT%{Wv|3iVqiyPceK|{Uejl&im_3 z@lMzUy=~?V;t+ab-@s(=lFa`YcGRAjeCGK&-i7{VoGL}nSuf=G7bl6XLQ~+gPxteu z%u}3A@i)j35f#$&DBnJbpUANEGvlGlF@DGCxyg@39q5wY#&rE=T5vYmMCc^)OnPhD z1IzGCc7gZqpo~6$NfIw)*!mm-JVcrapNMg)6g^j;8zmVk^x2kRpX*FMvl11vhEA*c zfj;=y$3Er@f%Z3vpQyr8ueonEkm6^Yo=1&Cz)^)io!3l@$!CW?0T(W#>z8Q{ESJ^& zd@u+8I_H~gURFJS29tmJEOg^iy^?LXX-l}CveGOhQF6x=viRxRm>~vkT?=JVX6!Kj9^&Gp8 zia(Z%7Un0;rudu5oiPheE5}*K3BT2LOnS+& z4lZjN^VPL#hG+7jOmiwzo2uPVagKuxK61Q}%a!Y_;>3JGTa~2eJQmCMw-vHy<}vmO zX6o5AldPeiqn=YiA4K{2JYMO2m+Lpn5Zcuf`dhEhz$iH^nM-I+$jij~J5yi+v}Q zga553)i+=pV_NrwO)~k&41Xr|JTC62^M&bGWpO&Md4G%C@7_yoCr!KIt0UcZ+igaj zB0y!i&oUM@F2~L5fD`KToQ3(%=eXEU6g`X&!%)wI6BtE86NDW9w)U8b^ic7Fzq{IK0*d&DpkvP&b$Jjq^{=ktm@f4t6qk>igQ4C`B{deI%R*G&<||tax7ag3t19=#<@0^jXR)UeX*$1u z%JP7-DQ=$6x~s`Q1wBzde-y77C)CwboKBhMqk8>v{Kk5oN{ebcO*}FA`KZry!#_|H zXy!cAdYNe)WOyb&E6VnA8>aZ3ich(&vCm26Bhvu9qVycTj$UWFerx*LLha^CZT!Ay zX&De3b{ zE|0UxXV=R!K3q?y1HL!sndatE^r4Q)&j$@A+skd}b_V66Y!l<2NAm4Z#!^#o_x?$3D z;DP$)ZH@SS2?F61GeDxZ2A-j4)9pvfrZFN0Og@bFx!=xi7 zTf^l|ei7O&#z$6toS*#UCpvlJw~l`<8c<2+y$MFS?r}UVk3FzAVm^-qUY83m9WM7P zY`!i(zyK;Pf3wZd$0EQ%$~DJlI5;z2e$DXTI6aRVyG$~zwikD;%BN|r3+(i{ zHsf#d*}>De_PDO@2Y?2X{;TV5I$Z7(Q*008v#z&sYow5AXc~Z*X{QR0+M}L4|=Sso4xqJ?0T5x9`LI+JrU6UmOa^eJdaWQ*cuA*Qv zUM8I4^c?j}`|_bP$ct((?mpv!vuWO{`?G3!tibP!1NqiuJH`;qWZ+7 zw{hk3oqsV+s;!LjxuR?_^CL>n;Tv!}(|yJ|Iw$&u@*k=FxP<3WMRBaXqb?OL`@#If z+2m^jA^4s7;KDFXx(0ZrIiU$Y!$BQA#pwy^nZ_=_fQ}@!GmI1C5eHY7Pp)Gcdl?Ug zA9V%{Q(WC7>(JpSIJnRFnCA5+z2)+zwh)ue_xW>G#{t^}7kn|<92NhldhiY4hs5!q zoO%3hChU=;cDm?@N?qFcKP@^1nfL)3 zqQ+f}pU79+h`Q#snI};;7~@P746Ylc=iqTv42kY8L4aPZwUyl)s~O!BSr zg>k?;U!QsA866GrTb~J_0P*7gI9%Y)psA2LKGLBcdNs zPS+vUEr!8ow4>W8#wRXL%Jt)T0bTI<8(i}!nA`o zCVd3n`Zz_%=hRP>Vc1djBg*!w@EHd1&{GmUNBt<>#QUiE8(-W`)EQ$MY=bF*Z@Lf5 zaH4#qql!zm3Rk=x4|n_T@yu$u+-b zcyW3Tnvl=7hwJe9GoSfPVqY?fhf(+WnHKpTkGN-A?&tZe^zjq*T~xbC?lb*SaunxB zC50cgrUY75yK92S_~|mq{b{PB-a~!pV3ceD4!-G!?|9<yocTW)vtbKYCgDU zihnWQQ9gT8y#y_Q6*UF}3D_Bx=D2Id%d{4P*rLg|VH~1-BW48Nm51*!u%Cpsz)$R7 z0Uz)khp2?PkZvn=IvDp{dX6@pd+s^m!}Iqp@!Tk{7lU6>bn0#9^BeDCMnY_j>b*cm zRC=b%mP1@7c63u7&LZ%ErMeRUY#Vx@Jn?f09^H96s!Kn#K>bnJXU0IGXUw zN4^0Eeue4VF(%ka?tvx~?TmAj&#uqqO)%7Z3@_@PANks1hG(+9xo|_>QtCR!@gzD9 zelXr9JqJ$t;8m{o1mc}ANYWqgCA{?%d|OGbwHsxKDwX8E8Y79CKg)SW(e0ssU@uJL zX;hq->Eyl@%+vnlqvwDJSnw(NJJuSw#6K}l$2^a5)X$7_l-!y8d>w}V8!)5nM!vQ< z4!}NmA>8q=JV7#OB9Qmd^Q^!IUlkWRcamaPed)(yv9CuTBJ#EFa zX-Lzt-<5fWvuV!<@F+wciKs03=eDBe25~+V+autkr+oFCaRWYR6Z7(X666}Xn?yd) zhH1P+d->`m@Mb>feU&tB&$ROy_(j=`xc=b!zz1_*@FQP+2jAo72i%6~47^Rc3_O4n z;sFmn_+V_eLdP+lC+SBM4srK*|EpZPFnzyazg8woU*h2Bn+Ja3K%bft?0PBr5Z6|c zcwD~pB`FV_5TAjJV2sz}>5yN1L*U+f?-k!tEhRsa;8!hWpj-I90{8@e>G3wqL&0D0 zc{;uih<^R#CqF5^p}{r?x_#`}F@ZxNb~b5W@K`O^#c!s1dJ5hLSMGN>gAaT}jj_4r zX@q=Uc8J@9{V=7Y5$~wUw;fwPzkad&DlNbGUC(mPYg$_i-ql|2H8s|`sF*ACFrRgw zB(lP7M#Tc6-gl4$wk=ayS+)EuoSz&^m(P?xO}y0813b2t^W73W&x77Y#cvDU=Sl>{ zj`3(SYAroiJT4b(n;*}6%b)4v5Bsac^H=H66PbW#MUir@o%6VgGjz+8a;PK_d}BSvGik&F{r#^m@%v%R$sg92sQ4T79&y-m z;J|C?QGSG+(}db)e520gz|+FCdR>eR@Vc$^%i9Q6kofu4a_*5)b%pl;>f<@aT0*L9 z2XKg5OGivpkA*VMI-dAl=(<`t>9erQCp*=`Tiz=pzs00JpSnVOXJlFQjCCeT&!9U| zd%Q};W5$7F5ol9QdOVKHt7Z7w>bcdaQpsg0;qbfSwr}4KJ?^E0Q->ChFS(v4iN8UA z^zoDsEIBUF-Kcqk9*?tnUV8qQqfaf&Oh56SIQdS<-NYMCG{pCcVX9o;Ok{n*+4O7$ z8aK_43Bj`HIrdgWt);8+IL2ErNBd*P^V0WCIr@99!Q?e1!?zWuP0twzO=ZN-eBRGk zOy9BYMy;i*&lqr76TVi@t)3SnhvljZ{YH{{K1uCx+OF-FEBP2o4T(K)QSrBO?dwOo zrUUvLWpmVc9M3nbo}2k-;;p?mv%HGYb8_W(3sIKeXfo=C?Z27rKg)m1|0FVC_1wxy z5;?JDs#{L1o>zDOS^cy9mqZ3)^qd}1+i(5$h`D?c-r6!&2P;JeV)We3&#jKzn9MAZ z0juYB%&C+y$Kp{wS+sgyKHgfnwY;qq8Hm$!?1e>|j(5XV3O_6!RySv(48-Vp+4sZE zMt)kFtevPt8L)b8<+2jx(&AKFx#VZGu;-I_J4pwp-mb1L;kQr6yW6Qz8{4%!urg34 z8PJ|r+s{f)XL|g+P3XCNf1K@uGWCJAan{C{TL$jG|9+v%@_nxA_mS}(CXpwUmBX;P-IxGktMqJP%ZE`L^(V8_MsK!8;|0C%ts2$>VRZ(M{VYmIp=|;OF<^bUIg_ zm9O&Z7rzG*K05KbLsfFRenHDO_OtDy^7c_B^Vg)m_=eAyzx-wI;fEg<-$KDNy=vlb z%KZ4pKNjD3#`}U8P9@V?&A7er!V97c@Xkk~qm2$VJ z`YyYw@9H(aQ~vRfe_ZIhm9x_88F;PCzf~Q_^#k}O6Ow#?T+qk1FG}AR)x=ZQZJe*Y z_F50$87)Nu9DEDW&fQBVUmQ=zyPZkKUZO)!xAFT`(4UlP56gqV$A(N`{{_AmUdjY` zfNSNgH2TKxc|^>ec>0*G2x5K%vJr}0)?2}6$=|+Q|2YceAZy)rR<#}N|uXet%p2vMxJqkVj z?svZ{SUvz3-^4Yg`|i81V7PO!k5rmFIywYPF;>g_`Ztm3wn+EzGi`;~YJ$ME~^@}gQ=zahD-xqt@KKjv*dZ(RsTETtH_T$MXpUhHqe3Q${QDJ(d#nGSkRoeJ> zlE2Gh-z!rXuct#slkPD`yn8zE$+r#G^RIvX>sfk^8+PAJVY0`ucKLn4yNnv{-`vj6 zq0gn~Q+1zM{FBwsZ3k0 zwvy&EynN2=UvQnMIQ}O-@rhY4b4mG}PdR=LO~%lpV(kP{q*pmMKUem-=aM_Nd*wLi ziZ3&6eE#4EKj`6Gl=^dFxp4dKZ-483;R|07`p)`By`8r{nQYESKJpP^Pq6QTpKWG* zU~lj&8}?XY{haB*IZDrS@uU#EXL}vQ*O3r!m(QuK5ZWC5=K+qz&6Rz}EPGLM$1+=v zbDT^wUVQ$_SH6O%hKI6e>z{%&CHP|NXi(`F{;&&WR^2K?s zl;;>6o;f9&pQR&L3Sx1xPTn@38mOu|EVof|r|U{7e@DqQAH#!uA{ykp9DvY@rW5k@jHqq)h1Wdi7$`Ma-A$L2FLo}%g?sK2b)e@XR0lh;V8LF zBD;l_G0C(V7le*K`skyDf{(3-xjSgj#djSa(|USrLxxP)ns0ym+lCxZ=zlJpY<_qw z<#$KOxwdJ)E3qt;u(s}LbNZaJfI8KBRGOYMJ~-#nDfr=-`+oSt9}f5r+klug^!Sxm zUNPzt--Mmf`8XdN_#qE#LwH%;23US(!{~%6Y2+tXI)N^83lh@&Lov7!}VRQ1`(*l@rz5(d9dY)X*IcBb` zn0M^fu9OO$U> zh(5B<0(%ve3V~Y;U#ht-zb8sQkMaW1l5ZNr_Z*OB`}<{Bo-0Mq@4WL)qY6OZs1pl5 zm`>AkVrcMFpZZh)o6F*i_=KJ?mSdbR1Ruae{2^+-Z}mKRAMDUpPj0TH0ynLmN~2EnRl}>PjcAnkM=ec>Ry*tMA-4&_6 ziBBQlUGBLlsBa6EiE`ItnX`Is^}O7&Rtorttz%yd4jE_PNpMS%p5?t8nEMmJS#?-F z_g!<7-)_hA%9C}-E0WYj`0P>dZ_ZcukHBsqDK=!*=z1mSIcz8JC}$jw_oAVlT>8sA z!80y;D#aQf!#Ck!{q}gsYv$k~ z@%=G6N}aY6z~DVITeog4xSs*1k`9);O40Lj?|Y4UhD6=>%6ry6|M}0G)LcBzUT7cY z;kC5c^F%_k+L~ud)NNN$N2kQO~icdYA;BT83fc zY?^bUPu1sGP#0yR_N*1Uzg@)x&%&CL)pN5P^Sd5zyX`i}IpS}aPnRQ&srztd%Qsb7 z_GWrKrw$Xk#cLb74#3_3SCq@=P~&e$=^as~gnel`Oy-N}`L;ryS5xtbdZrz?Sv}A0 zU+5jb8(-?(ZPZ`oN{HXT#CB!2tg*2?SBjnkpQ!gt;JK1~=IN?#0dCZs0Pm2az6~Ah zyGK3WhQ06lGwV7G{;lH?^{krJ^Kc(9|Il|x%6r`KJZU-8jfQzbNIt0Xs`_0?dd~U~ z^==1@yLcZ<5?yDy_#9=&AU_!AP5p+tQDZN^PbQbHGfj*~R2&d^AldOetUnmb@vUPd z`QGMI?0?H;BSLFzv*BGcEPqjYFkSO=)-&LftmpjvseGR+?D6(oN?M})yZF1Rvti#1%VDMHIrJSk zMLqis-Q@Q=GwxAm*o(OLIwyILBVfn9(=913aqpZ3O`NQrXY?FnIq!>+V|h8&(xS`) z<_03>j=rh(F`ad!lJuO%<*0ostP}j52D}57>40wM^PL9tWv&CTqxi$P;9G0>RwLfo z&bZ(j?T zQl)2}dBzwQw0iFAxnW*Dontxc`K%e!D^<^-@2uLmmlYGwL73TBBCVWc~a{-gT zV)fkDbMP8z2FG&N_0X7Jt?!DgWIbmc1dg}da*LRk7o%g)FMQ9K;TCcRE?5tUitFXV z5A#jvIN(@4&-mzSUsT9gPAG{a#&qn@L8{h0a@C;c#BDLQ;UQ*cAsOP2TfrVFEnJR{# z{QS4#ANLZxN=TFHd;)qyNL9^Y^}Kres+#1g5M22iNXovH>Dc?0)P`W+`wRShI`-(n z_b7zUnW$s+-0JyE$epQ8_`^u@-OA;BCXJdeDD9+L9)DxCnx1j7dT#X`vOCiUe-jbo zB>ZE-XOfOeOpjr04L%2w+^09={3Axi;$ZbWoCLmm*HXRTkwBF+ zVV&(&j>#!@DOS&@&Wz?;J)c?r&vgG+Li_mM0+Qkf>+bUQKm2s`RDp|oLZtyjp=DqK*QI-B(Hmm1W&x_U7LhD1X`8_f68|E(% zta7~%ia?h%^$;`>GlZUFzlMw}ROGmB_1x+?zq!hcue?|3gprOE_!z0#gbtyErFyb9B6 zm2a5KYVq}#D8G%4YD^;j&g+7hhhY7H2(gFd!JL%=___R!7$r`l1N?la61TdI+M5mO0n9(1efC*|<-~i0h$yR1mIrfA2H3ZS&o1BB z@GR*<%WP0`qM?nBm()3lTtk?1{Y-qYG|y2UsPeDGs(MK#W>doc9*_3~z@An5x;pT+ zhvh*jWB~pwzk^+QZz|@rvoVReI)Bdve!N^yu=-?e%B+*_5nEkRsP*$Xsl`rUu3zi$fujlz?v?`vzb=BCYtf6jg? z{B|h^*DG>A7cVEl2j0_fb$xE?24rA19IB2h&u-23*gADxqJ-z_#rJig=h}Q`R`fsU zv&Zb_0rt1?IIg^t`623e#GY;P`EWlm!s@!U2UTeg5mUyx84}iy_W?(F%KAE$8=l4Xwzf{)8q2q0I*i<+Nf;c?(3nMOv1Yb$chvuxz z5lb!Y)5rsUo*MFpaYynWapM(*i?^+*Z~(e~8y(`^6znr0zG>epX>}cPQO*N?Iltc! z+8&uLR>IUwFs0o~^JW#Szj_PsRam2>LCvg%PK!^a*s{ssZY7e&^vhZEzE zP37SLo_%>0K0Cjw0yY-&Cc1AA%Y%~10M>HZcf`1&_>MQ0N3<l>El2LHH8?6c&?T0E_^KczTBew8nEp# zw|Ic}6|$cQC0EvQF|PE|Vbk<;0P`d9tQ&Nj=j`y~?Vg&srJp1RMcZU`T^!>E-W4I? zVmxW1!={<#z!)_zd@J4;4_l12H~T)>;^iN_oy`a4di?AZO8m5QabiLRChS)b`{!VfF`jcmj83u9 zRv+@z2jc6j;u*$pHP!}Q$DVab=hJlVqQj=j<^a~&VUNW;onv%3+j;x!(pU6xz6a*r zJceT&fW9m1G&d4F#C>e44h|q554$YJadm9B^Y;981AMIZ18ZYy{06$N?0b2E=-Wz% zP1VN%*yZc#5HgCfoX2*=?rOVa};@7OOdx*iRK00FQ%Ki#FhF7^_N1z|f+u^VAx9u=T!~Pn@hnp2L zK3jCP5IUgC>Rb))cGBKSWXJFbC7C6+F>il>We3k5@%L(>@7Uw0#9ghvSJ}9ZJ?QEj z9KO2dqr=?`<2E`1eTP5K>oJfe#BS|go0-#h*jm_J zPVl|7@tgI#OYK;DZ8>1zKpWi)^c`z)cs`Ne#}64p><%_SS)&oQf$G_FiFpA33b8bm z|FFH_zcT*@-yfg@Yp6C^4&=juHY$7@9hl<@{l!?WuE#;=@f-K;o}1FzIIM-JYh&Ow z{3+~rQ1-Z>U*Mnj(qWV3KrtM^{C$!R?5hy^j&U6EAJwPFHGD{IomQ0RdiES|3$XVb zd{x&v**DkrH^BBHrqV`-O_l?t36!8YPqVbvc3 zuP_IXh<$4HQ6_@?mhwXtee`uOm9 zFlIx4bsNb1z`g~;K13e7F>kWTa-dQ;&_Rey(h<^m#Dt^9FUUD;0rVbal>Hr5tMi~2 zHVnF}$1FiF66QIug9iTwF_4?-=%vFZ%YjPgfKlfOY4N-az5|POV0G`EuK~WFk38r; z){`(6YU@W8VFTcc05|9>bQ(D8emK(veaCnnvDe7zcBM9EOiV6JfhdVhotjB&5hk)`{5kH=T&6%N+rsCjUlEy$IJm>I)|&yDurcLRq6 z@k7|KNjj`v6BBH*958SI@#S7Rp!>Jc0iB7|eN!IWgM820KC>ikK1S`|MaLu^(CIch zY_c4%94MRv@OOLZfIdyq0Y4Zv00;CfiC*SY=4l1~jdVRp$96h;>3}V=$#TGQU}ibc zOU)N@*nMU*+i$jY%K^&)%YlM8kRui|70&;w(-6K9&i^B!P#Y=`%Kxjtuvsk-%AfQp zII0v-^I!9`Lnx^EQ!?K%*MEbv9R&lWK9KiQO$LCHKgrpSlff{P?-S>j$uyA3&wy8X zl*ymUfG78xQzl={c3QLY)#jZHi-P)U^Ntfx803eV&ma)whnjbs%@P654>#`wEarUf zI|jp2!uiKIL!KEy&Y#lqxeGX7&t?Q=ex~oapzI=bIpN&2f;O8Gx+T}~X2mJggzNwxS{3g}= ze0>xJ{Q7(=blx1~o5*u~85i|+;qt+V9u)Z|@+AXAzKMLv0Fi$zgctu13=sKKd@Fno z@ShCd=U+#ufT+(mwDV?}ZzkVo0P35`_az`MAEp}lX7>0DLcWk7BQ2aBMy? znDUQh(aksf{3-sKeHQg|H&cFe_n`yh z^BX8Xy8F<9x$~pD7acqm)BS$_F=mG0TtoGX$#&Sk>5HMCtf6AMd!zf9|_=8dGi~l;>4E(xXk&rQ*q)?0zSj}HB-kj z!eqFr_Izh*%0QKJ%jPT0FkJRd8Ez`KY`($_!)3Ajne*~_%)nITR@K|D${rtT%RD~j z9)HX0A2jFiZ*t`q?;jQCzvc4pD1TDXmaNO8x$~#8Dk(Rper&#%JO7vhPQOgz-^VEs z>c{0LnSaDNkV)o0aRQuc{)PNF2R+yP5BYHdhWTaA{7Jo6GQW?aey;qfOnLpvL;Yj= z-OTSC`TqPqx`QbON$_*!M|ZFvzliQYim(yFY`?*<}VNk`i&|i$dmO=1hy*en+V*j<{Jn&s^%XHsNxGBec8T&Kp%b1 z&+Z}7d(0n$2)BynxqdbQo5T581o+uOeO<&P`a!p`#rn~6mMm~o0#xam+QLT#KeSm_0?C4 zr!}v=_FC_QAN-*Ap$~n?`|yW9?0w`TAMuVJJu05W_~=JJ>Ror;b>7E5_A&3{AOE=b ziBEh&JQ@ATPkz$-)Tch>efra%_CE8O&v>8v+~>R-Zn!}_S^fFXf8P7T7rx-#bkj}V z7r*#L@f6uDx7_00dh4y;m%sdF@x<2cx8LsFamO9rSHAKU@6J2#6i=DnefQno*T4RC z?;GFvhWE{Hep9?X>RaFXmiO&%f7|=ccfRA@d+)v8efQlbp5px8_rB+S|NGzfe(-}I zh^I%Url!0f{pd&DkAM7Q?Q}$=e*NoTd%yY3Z^WByjvYJZJ@?#m z-t*5t@BQ|-zZFlyzWCyc-tT_*JMZ_u|GoEzKm0*FMgH>3FMF@N@{0H8KmS=gE%%qd z{6)wQbuElTF>athp|l zm9@=FNibyL{*EOvMWcaKOis(%9fIr~J!_K7a$WPP?tW2iSN9U5Us^HrMIq9#e2eJ9 zzK)jKs4~&_Yns<=71g({YKksZkvVl~(c!z+7NxigSBd`LwWfN=uUpS31F39N?JC7@J&lgr>RQ>`CFHkANQhKXjp@xs+5HL=q%|W<=@v`!Lq*y zUA}8oS;nT?W&H$vYfDjGQ?|-WNXy517L^UY)6`9>ziV0Pl&MsxE+b(dSyPrS&!AY7 zrdIZ)D~oziKDc~3a9T=(XC+ZDC|{Q8p7LI`R1o#egv;QxQ4YQ?0reFy7=Q=jaXimJT%%)XuGxWQK5a^yE1ZvidxnrwB=uG2}IuiH3 zh11xe)>K`O>-Nt~`^!e$k!e@-F!?Psw02Ct#?@_g-7PaD?imKubdaYv-8OH@h`X;M zeCtIt-c764r%2Pb77&febXe)GYSxn0PoDrT8g$2&mk#@4A<<|vGF_g|@-cTuMa`sZ z$@Z)*mV-&^*O0t-Prq%AM=d?(_LX1m8+N#3(^oDX5?Q{2)+uk>ixVvV?od}Vd z{iCkm9V@T5v24uUQX%#|i+r;8*mqN|M4rU7*p$NXUrw`|d4*NYS!*7JA}eTU%f`25 z#O+UI-!8$Od0X9)ig4wkX<0bv4whpPBelaFtVk=TvZ9WVEIsicz4TC3yi0Oj+wYE) zx`!IdBuynDSOro;nps-niS!-i_nTB23cfBi@u^+zj!GTYvzSz~sgylWx?Vk`6EC*7 zBgbX2q_7+F`rN^)>2;7uVqYq|TslaF@jm}rHT~{jeg4(5YjnH&s$g&n<6TQyS_1cW zl{;4M$zd4plKiS2bhi`@XsPQiDH_NO0B9O1dfL@I=B8%=^Aa>km=`zkYS>pa_ewxU zVIYyh(UAzUoO4C|*UlG1&ca;t7S||0neFYnPlA4N&MQfzx{7J^X&@j`&F}DIE zvN&^Y$KF>0f4DGgOI)kN9n4d8mlfp~lo_3>c-p(UvtctpBsZ1Gy? zj^&8jE=f2TWW%obJ2^XkN0EyeSsX}bQdV9;HySel7v}|lG(OhUFN)8X%^I8Z^TOyT zc#7tAq6khSxi}v7s0EhNpc1~M%d(>!lMR8||I~b9J+fDKI zAe~-u0A#qQ8DON-B5PZaB@jLH3UOEd8SP!EBSxqSmTxpeq^38N|r^3}*)!62#TZc*bvMw%%P%=AS%433CjFRcg{U`Sc#j%c~w5vLCh znV?>7_I)9=L>u9LCqz$^g%7>+ttU8*C%h$4)Uy?X$MWsEXE3Je^hvU2a0^)k(H95T zJ$UZP3!L=o&Yj%CoBX;tX>V{xB8E8{;JAI$nJt~rxQ?t6I_)Q1g%8UIw zha{?WKM;A>J)a?_(;FpCs#zho0-H^qnaq!14a?yG3| zn1pE0bdsvH>9c+8GnJ{F6nS^Ilm=o4i}ry)576x^hD7Z{id){e;ype@{~p(5E@q#X zL|D7pF*nZPB{cid(D_1^v#p&*`w70CWAztkG)lXcsVp_)y#Ra?^DtnCs-3|YvtFer zy~3BSe!;lhw3D@KQtR{evIw5Ye71CF_^55R5zn_ieIXMuW;Czrl9}gddkqpMYkD{edpnIFL^J zZjEB-G+^{I3GHi5E0bGeXRmDOhS7pA{DD0BNQ7w@a_er$#!tONKq2z(Nj|;8t(Bw6 zCBA+KR+0UkSV2lcyJ;Y=8H){TP}x6VyNR9f z=B(yt&*?SRMVnv?X_6;|*T$)_X+J$NNhiK|pQ<6?0 zi~RWnQJ8z0B~Wo83U7AO^dO?^Uhb1dxADu}W&%g|eBU4u?Q65WnC@6BPvC{6+YM9} zOS==cc8ncLNC~AeAtIqrKqtAbzRjbdJM9aVP%Xg(f7T>#yYGmA=g-*_(cY3Bl^cwn z;s`W-@7$lmNcj)EP)Uj3Gd@+2;ppT~+R}d4VleRCI~u#CJtxpo7JOHLX^#XciY20* zCaanY*A(l^6SprG&HA3WY(sT9fvYGXMrpQ8QK;?)gGl6s(L@a&;&3B*?U$nxiGmzU z-z&s@?ZUJR3L-I;R?XKV_&&`x5g7&?Te(l6AYfk7yXU(XL&`V5wy?rx<) zahXnU77#@Zrd@AVtF$FNiI0s|kpc28UB;o5f}mPEm3BF1WnwY1bqe7LOd+AnP#KZ* zjoE2pl1L*Qk|af%F(F9@G;t>3*)AZe6?_E{cZ`2lh27eoxW!iv*eEj-9^%;m2uuYM zLX{oaWqzLq2oR=zVDcnUUg*sMnd?izxk8@gJXIP%5!8^^uGXa_JO|LMFrLgT_w7N8 z#*60g2tR0=-Ec(?8>r(s8~#i`g!|o(a}23rNg?LKU)fEN32Wg4_`JezbnJV@>`fRh zl<`LwU!F5QHRC00hVOT<;`kXGd<>*>>EFy*n45WaEX8kgVqgcBT?T!r6 zZp`pT09ubu5`!^&E5Qukx9|daj(|(;?*#!;0YdY4k|P=4^2LFFg#)~(9Zoycy;PbM zgiA7(L!sMpi0=(&wF4&x0bL+^q90+x@E|R^%XE^OKzcD_@dcR5EcT<8Ljs13 z`)<#O64@ci;`jMjFzqtd)tJ2k=9k-~YIxe+O|$ByXaC zfgs9Jja}SChAo{U-aaZmM*`cg)1LMT9bG4Iz@O8u6r>+O*olQHL+4^%@KRR$Iy;)=KVcUZpz+TCp{M48ijjkLF@k;#5l0kq<5>7-l*x&B1N^&_NoSEJoY zpXejzUU5zurU4PO+So)5k9LWU;4v(lzmJH@%CgQIONN3v5^+ihX$Q&{3 z%gFhn@L(^A5hpS!zFzmMcYR#_5!biE*)mUM(yMoAopj~tJ{Y$0Jd*nWeSWA+mgNG` zO`oB&^W7})XwUEWbAyE)5(;C0uO}0mTpGRpO2R4J5rdz|${@w6QJKH{1Ol72>fVFV zU?t6wD-9~0G`m4l8OskSQa%FFZCrV-O8pg58)So$_QnjCpHdqT+#-gAIn*u+& z5ZtbUi@MB|y+0~&L6*)BO^5wircMs=Z0-1V6`Wm{ksOQ~-bv&|e8KJIqM(f&K39GaHS7~jsEd5DL#t18;J@UAMw;%CUBtH9D_ zCfT8U5bO`}uy$2Ndk=>znaIL=2aeZGB9j>cHc`XG_fy_twb){&eLSf8h+Sl@Gu zkmGfc#iSPDFR{p+wWf|1I!QI95bns}$H)i5Yq_6R}A}N&9cU!#b zt^Dxt-)T=J6^~jFrgfZ!8SyV3Zh;Vjb&z)*&k!0{`cE7wo6b0^$nz!+&pQrnt1J>& z@zr^oAnz9w5as@w%qG6#+Yu0U@RAh$ig_PEiCW7EhDBcNBjnP&OL{%uDA8GcWM*sJ zQxhd>F9#U8Pe^Vb=fZ~VSe#YFIrMPQ+RWaYB0v^bHGRqczv-s;8H7^QBLksAdH)F6 z_Lz-Uc>|8Eka5_PZBpRJB1-GugkF0Q|Hw!zHDbAz2B@f{Vy%@?vodW2g^KhR8dR+oZ!_RBp?4CAHUxXx&fSGqHeGpH_e!d=UX*4a z@t7pcrLDv~i$e{=1F{JLK`wp#1d`c*B-$WdZu!oX8E6kp(@>^enaCZwaAi4YUlQJL zur&NLG2JMbh<2hX*yx#|-95BXAs(drn|Ff}S9Yuy*Cp+DZB(O|-sDBES~v;qWZ(I9 zECF5q#km3TDC0ltqZB!GLFsAl)28fU^;b#Dd7XrI>QN?ZpqpOxk=gj~@(Y)XEE*x{ZsbR!LU;4RF01hJ>{aJQ1;=iZ(EfHIyZT0Zelm(S=aXoNeT=~) z_CC)1g3J=qp7qKHYANCkUs-(1x{-u-U${@w>hes5MlgOzVOzKe8-dc%p8cv1YO$NQ z8irfX{VNIWd(iJ%T!J9WR{_uiDg0!7*dovqv1bU0DIM)b57zvKuiT^)+Uo^=yQ9jI zJc|OMP@E{7UcnhWQP(GI@?pu+(Y{HYzXli^-|!XWMqebL{bWHRb+4A>18BR^@4nxs z#ck-m81zdb(AhW52_4+@aivoMTyf?v65m+zi*cL#AvfF(=kztjBye#tpqXdXu;{C6vqX8v9? z5=-6M0*1LHw9DAV21VnEFd4h(1?~L$jLn&aI+QqHc*CWkJslsHi`59AXh;cYZ+Y^0qN~1mz?Tx{@!$5cFr9{dLR9FYx_pe)(POs`7@O2%3OF(-% zSGQx&RlbgGBHEqc69E~5#FaYkr7zSn>F3`G*PwXXb80(!G;fVhMmrJDFP%{cJQR*m z$=4bx1+F|%#59VhJwdmNj&IVWI{s%u+Gz+sQ++KD2)wdg1FbJp?>f=fm7-}+)a{Pb zlO4d;Fbw}pOuN$<{vgtoXX+6u;?L^KGQB=Zufr@6?Fm15oBU&{J`a-9PUV%C5}gue zA^%!@!Z|zfBBU!XTbIomE|l+?XiD}y>{YofqS|&|w5t`T@jCG*Z%H>oj&}|mtAKX; zv|tEFL6H&`IkG&nQ&bGbW~Uo0YnDk;md%&+RZBK#AYECX%J z+_7ZSUPIlPzg4%d;Qf+7eyuy0{|GVjR0|Ah`rW=_>{U&lyQ7%;Gs%Wc#r9k6VE%5= zOcI=FdyPAi|GH|XI<6W|uxb3Y)E#Rnx;ZkI`9!daZm%=|noBc8Epe-Fq+2*r z=e!a;XO_}RZWiB6P9#OK3z3=YFEQzOkg6JnIwHN4y3RdC#8Wcyc3$K0(Y*CoA?B7W0H5a?}CWlD=i+#MAgzpUBfjujrJ z$<48bUGBaLjpQ`#a7W6ET5X>@wmdhFroY6J5qDSFMUuWjv8gPkv?zWNR$HdQ6cLAa z6dL(0ioWQ|b$!z{{xTA=3G~#uXZP=+>Mes*DDn!q-G+`Ny zcy9l)a=1H7X;5=_EuS%0CX3eW8%^CL`XfCh9(kL)X&@cznE^i{o5Hv|HOtULB_v-E zPF-FOX^JDHu)K!!4kCYS%krXizi!zkk|TGpd{(3|3S(s^uQ3~pso6~EylJ6qY$ksK}6?j!qEz5OH zbGqA?07+b5C<)n+IsH9rl1WHe5G^0j=H@kP`uh4Mm7&v)zP^q%EzJd6#_}Oua>&i0 zRLS02$w{{WEeB?h173WZ3TOY-X$ap4=l_uisSOnf<^NUC*{l`_j$uyA3&wy8Xl*ymUfOnh# zflR)d?X+@%AYW~sw*F`3tIgATR#twf`3wR9{800bvsnV*{BZM5z+%qlzGE;fC7geZ zGvt{OF7cL)+=s}ThB408<*ee)J_(!o=g{A{3!Mc2FK#nJ-%}k?dQtp!iMu^)HmGcTgZ>@9&}KAelz7qcON=1KEHwTqq`3s zm^(kZd(pvDG2QRyA7f@1&NWoOn0$xoPZ{6_w-V$}289h5N2lV%gB+#Y`39(&Tbrli z#E0CF9QmzNapFY+R&;)x_>llkl{dd(Do%V!fXkd;I~6DXB;YfgUo&+qBTR;?YR`A3 zrVLamw`{(`48vvbl;Ngw%jPT0FkBYPpE)m|#|%tWZdJYgs_gNhw#?&W?(w(0{y}pN z|0Y*{@%~Y9{#!2pj`AlJZOOVknmd0gtCDhq>c{4Lx$}=H;PlHR{(YPRp?+L`lKDrR z1DRz06DPpA=3mHgURz%9PiyJk&p?-_88ak?+s% zqdS;lkOV(hesl->@r&pVqzD_q&y^qDfqwiYx&vhVW-`N&@Kvt-qXNHZ4fXu|V_~Sl zFOFYDF)&v?LcqkI$Or<*-=Y|Z04C~3F|bwUM=>y0{${Q}8IT;hILi4`q1(X^$`<%V zNHEyr=bITQBIKYifxMf;?H@L}07ZzKOuiYQBMhqiX)KfGWQ5(Uq{QCavsj%e2B3MUC&o*`q$z5hWt>s<^7|BYP8YO zOGk~kqKh^ik#@dwZtlIkNf(OnzW4wC zeqN0C&dix}&di)S+uWqh&Gho+%k=Q!!|dnhpMR$F=FLMv8*$_4yTvf*pa1+P;_uVv z=+UDHhkwQFMlbh8ix%~XCJ^cZXEYkI?hn0Yb?2RTUg{3#AE|rjp@+nK7*O>`^2OqrL!zAF#Y2EVuAE@sl zllR?s-~SbDI(6z)q$R#IP!Q;chKACHh6bUG`i5_R_~D1?Yp=Z~l*MhX&!{tQx#boX zR@}zn8p<Zi+w(K?i}^- z@DSQ~obSBz4z}}`Knp5ZSRDVvi4)m+F?}2d|KVY=!~FU4>GbK-skgT`efi~=1sH@? zDwSR6V_%Lq>Pdkf^@&Ev<93-ksJ8btMay--FvVmY{3 zba^~zzfYe&?L?1n`@gs&{ZBsm5|aj71ou$LZLvC0z5u{@x>QH`IT2*5uROfiOVj& zK!~_a{On2}+wgLCcW3n<%FyiDv+3iHKTabfBiS}_|6ZQ8&?a1{XQ0sK(;a<;J9zLQ zz5DLF1^A+(BI;_#y2FQcKmGI*_H(_u^*?%|51j?tf8ZHub-BQHorTI9!F$cV{rdHD zjrg7TSiO4nHF5k=9-n;jNyL54Yw6OZH=TzqTekFxHqV??D*YawZwenWne1OY-s`=i zfAvTC;QDqeYuCv~zo(vhs?U6IIwvxL7gE$d4(m+}) zO`z?Zr{MlFGj}7-7j<)UWA&~?BB3CktX~bX#o9klPfv=rL8VerwOUQRyu4Un7{2~P zeSLjtKtKQu3=E_}K|vIB0EIsSOwn(|SR*VfjE0AY)2OH@s?lhuR;#501`MFl(b06^ zz=0I~vcZD~Q}j894I4&>4L)-75ElxJWx|p zLubsGK@A22t*x!4b#-;LzP_HKpO3y}V`C%5JjHFd-9~54nng_}6E&O7)MBx)_6=T!u2`{xu3Wj2 zmD4qA*3h+U*V2s}H`4p>zn^Z}w25xsyqTh2!uSE>x~*Hc(rw$e(I=jGf^Ofwo#LK* z=9y>cjvYJbv(G+DpL^~(x^w4F`uy|H(-&TNfxh_Si*)zy-E6#rd+ya&U!||V{yKf* zjW<{y>CHFaq-||&bl<*xY)tdkTW?W}yU=zXI&_Hs{qKLL@4fdP8^0Yna)k9o(T1W= z{^gfn(vv4o(yzb%nqmwGqWI_MzdHxKHYlGxsVFzMXwvL)e2wTn;I{l2?)$#dVfn^E zq9%N7$aDJL0@R~%Ss&H~Q--q^`Sjqv!P3n?W!4}EH6bHbJZhB*j zd^+1M{4H_^wCMlgv!D=NAgXbB%t<1o3BJ2K5N4z#SZB3Hk&y!f%87F7yb8&!ZbWS& zqzL-Vc{qS9NVz|M#6syROYUPngVrv)SH14uN$}oB!+2Ro#-}b z5?dJ0gNvH*(RaL~LR#e{`#hAY3bErQuk7Y$asn!a)gtcWKuVmim|L8LKD$^eZr2p$ zii`MMSezCPi%y7pSXvPZWtU4@GIdNr!I-II#NXThf5A`j1y;525zbS(_fxtI2z-de zQ0Zhpz<;>63!qB{#P!Qv`?;1OX4>k~jV*rv{r67vT>FX3r%s(hSmA=aR|^#S+#g|K zTRkKoxX!*JS_I|_log@b+1V5?eCE!U*k{bO@b!E@^eylie5|E>9m1fmhh_BB_oC`VcP!&2h7&zc6+H`ZuJEp9>;t~^ zY`Ehk;1X* z_?{leKmGL60v_~H0kEb!;9oU_oC1Zq57gp5H$oQUryD@F9@LO17N5YG02`NJJkr$E#OBw!i$72=U<`8m z?YC3R<)d!ESOnt_%;TV5z<2}W3^)U&C{q|i;Q0v5=AWNG=ivWm86X9^kl^5uXwEeb zAIklDkN40>knZpSg4S^FuLbX0D1z%Xloa_We7)5}Jc9xy(S8Bmg#$_AsMylfnDVmt zyp#;03vnc;bC zoDwz&$~h!URnc!Gw(Bzev8)*}Fe@2~ewhS*Gf)V&JV5J7wJdT3mTAxAK`T)2;g(hT9_#^(7+1Pmu+5@n4KKzr|#4u`*d^rp0bGm}0c!T53(kx-rbWYRfFfoMmn?nZgGK z*O{!bW6Wqj{pyTyL3+6A%G^*s9!7wB;FWOeZhN zedQ%7p>}3cdP=IHJ}EVsNlJ;B=uWD}Ss5E+wj1m)tbB|0rr@0>A(O;-i>xs8xfbiJ zo4|Bn0m*2z+nY1v;%s$|Oq0Q;Z!*?dEjG(cyS~oS6gSssp4l3g7$2V+*J@}o!Ee8I z4p0KlyF0v*6HzH8Jxh+GLt( zu{Ig(Hoe8#5Z7d|&T46nh52j-$*47&jP`l#oOYs$sPiB-+#GUpsV_C#8LOerZkz+~ ze_&EwB{VS4&6w%Jt@CP&#+w+Q5Fck0bKpim%QVVJeVHI3g~I%FGHWs0ZVIpNjInpo z?2%dEz>UaAEO>-O18OOo!(lP1s&J9t$Y z=QGuod<)Eg*{)Lq!ZL%o#bC;!8b5c0P*yTFfGM-oGrC}R;+JnQJ8C8x?Ty7&V>3Yd zO33JTqR2IwEOQI2mS&kuLiEH<6Cp(mL5_v4vKy@Smgcb_w5T?8{!*gO2cnF%s?N%Q z)}tDK4}@0<@OBuA2T_z6T8&M>Lp_4XNE9Wi0)ySaGTmyI%ZTJhN;L4Jg>dt(WK4j6 z4pU`mvDPtiIgwm#C&PSY(kjL@bGXz~>Z$SdL>vkj1`A{J@+4YFb126eY8g|$#bmKc zer|Ukh-W5)g#4Ri7j^Sf$)nTK(+i4s_-9^xwTkLvgXbG%dESg!3w-WX?k#o(uC?yHWZEgm$z-d{QhD~1q`)(VRvi(rS z>oiId+8toN$zo%8NGU>Ul_ad(Fvr;7jIolL3A?|M2gM8ui?kciD#l=~6Cly}_Q+=m zV`>JJYW+njxs?+Aa4K=9M5j1TCDj%bnjjT{3hzn~8D^%@Y($~3sZ>PrRXdTg|5J0F zV$rl~RBC{iNXx-0=)Bd$v%zYtFJsItAm8%8QMdTFJ9OShsb_plLQH&2Y{KkzO^6p# z@Pid?X)=q6co7Ml%mHt}l%<2jV#uUXc@s+qhaa9jngDkKB0s<)*XK}4QwPzh_E3+S zBBP1f((Y7+>$0U?9p()2m}~w zwAm%l8jHfIQTd`haLh}fFKz(D#KUcAmr4b`3u{`9b{LYz=NcjdY{g=7Q={^O;c&D$co}1DU`oLX0w%vbR8_-Pu&i%smoK2W8;AKSJwa2jEx73<|HMT_w3r#x1^OYM zHpX7XG#ji2yTuB)`t6~uRTF6up0R+C$6X~B7l>S6Ub*#_1?zGBfM)cLB35+xF3JI{dBP$m;VCOto-?n#N; zJ5-#|q2%e5m#8$i#cmAa3oc?Jk|YE1m>b`Fou z^Ah3(1f8OMXFG`Jdg_7QGoiowAeA{ZY!=liKcLdF%uIV0m2aSuH`~Ev_!GE!unI5Q zpX>$txKe;67L&djRRFoOom=~$0ODh3TJ5!#R+KE3-bkY`ZO?rVTnc+ zNS@{y=od(QZO!?X7PCFqT<_3Bu-*KF0EDP2tVWP|hh6avBFYkr)i@t)8rm_P-%+Yc z(I;iV^f{)`nLCa!E(21=M2gNokf?3V#U@Lw!BlFVX@SY?g4St>xJ2a|nj>=s!6TUiB&3yUWmI^RH|s;c<~h6-vJ4wWx0> zQ5u^J4NRfc%Bnqf%2RRfaS`xAJ&(#tjP>>C6FCo6{XyrBcFZWoyE@#RCUjm{oa`on zq4f<7JF_sW_-}SQryDxe0lOX9At!+{>va?GL&m?Aqw@(R3U-(i4OXy=4#E1vqr}XC zE--+2v!g_m|Di!9_jQnXGN%*PvVf^=Y3Rc!Ma$>3u#UA1by`an=YMFJiG3X=rWZQb zl2e5@Cb8&NcdjL(yt#vP7!b@8>C}N}O^d)Uzt&FYWf!wxI&~zmCDXJ7}5%^$n3!2@tCGQPR1QwIbekqlV2ajfghKw6BzO>N9Kwx0kS3;VEu~u6RW*eqJhU$k1 z&&5_tOS3+|(P*l-GUlOE<8Rduse()mBS7fc;-sO09Xgekc(AetPX9D2c^T}BSAQap z&xC*a#AhI4A3!7t`lMSR;QSBqG5LD=kp8#lB?;z5K7hC-{8wkii3>;v=qp*1uLEn( zFKMSu7j&ji2vOjU(K@z_Zp3by(l`BL0Ec02jn&xDXm_X?O++;2AA($D5uD)$qgm$_ z4PvB+eWp(t)FGcwB@;lH7gEWW7>WH2|91iZR}KFIw_oFR;uq9b{b3vHLL!KNr-p*m@*E>L$)IqrM=yCrkv~-g^QVgFPJv&0R{ofZ2nZow ztcnoHZ02s7d_8Ky1fd}3j9i~0;5L4D8=c$R+(y>*ee>aAc#3b}j zj#F8l1;W>+EGqLog}DVb0?a5ZEQ-fu+Y^}JxJW%J8AJU%Hn79|%K+T$m=VOYFUUxP zv&W?ob&74^`=rEUmIShjIwd3|xwH#gmT#kO!}uJ`5kM6Us5Gi!o#MD*|rha01+OXP0rY(sw5CSB1LJFClN^ph~z*J$xtr^?g~~2Db$IHGAAZ77MM-tVsD=|szBcw4t1JfU&whdRcGyR zO>hdH$oRrJ4R{G)wz*?(ohpTR%(TW9Ro+K60jUJOysNGP*)}&6v4@E||5TzbDamYV z%Cy<^@L~__bg=74R@O!dgc$*8$S|B9nM~D86C`}>j697+8eQjJaj>IkqmuH1d=Z2PmW5gJZlj*1kjAmY!KMgE zDO3uOUTsuf21l?ENQwXze4PNNZlkj5Ml0w)5tt`eB|!PLQB|3tt`SmVj!dnvK3?K_ z0Ur4*vDoY`z)GRg339xRv37yvD+NfL8#tB{vFU+jp&jQp-(;|XLnd%1chn#Z{wIN7 zaf!v3LNuy$LV2YckWRcX(_RHGORE=uZUdGC zD~Y8U?1NSEVJSS?8Vv*-NcgLI8=CV&$~9@7Y?lNJa*GD&2v z49>Pk^nM19FAV6%8s@=ijlRg#0_TC2ISh|Q0>_h)@D{v`WZwW5d}~JIJA%Lwq=G$V zWo*?Jo%aah$p`o#U_K*(3h^vxfuk%u+V&nvJRK2yQc3|>$SiF3Ce>aMQHi#gS@~u;_ZvmvkWlGp zVbAcrMiDupt!ROxAT;{f0&|n(*#xQSTwok$RG7_%cdkU~G2D4w6)k`8rTPFIH4IiE ziOruTa64x|yK|&$1`EG0q4N(TYA$QVdLw`sk7Y1T$)VHu)Y$C=Ve_}Zg_Z49G{VON450VXPO!csdC>AIhP z9D)Bus^-jt)}hGzFb4b7Cem z8H)O1r#J+Y))nCGLN81!;FSmmYE|~=pT^-FnF224yMzcm`+2c!4tyM!JdT$gLcl@b7Gel z$L?hwzT4+y8h8w1(*Sh4N_`4v2>4_IPsSlNnN9;p=VqOk`rZeE`lgJrH(KySNxXZz zAHfJDCDJ!SR~!N_@ZAo<)s{I}$M>RjUb#fh>YIdkj(1+|_s+ZbMR7FJ2kx_wnrOpz zhB8k2{yO*{<-~t#Eyq7E@z>@b4&t~MjrzcUHc}IbJ#^*>@?w7-tmhyypIk`j;6XdQ zy#Rq4EBPomJxjjwB9(H$VsYUmvU{<~MOvbhJb0smrN(P}hg-u_?<)V@3r`+m6|{W@ zHx<0xUwas1A)JIx;$d{pe!dI)Tt~6Y1GVni?tD$jiI7A53s}Uwy8z1xCl%Z<_$|=; zFmU?{-NXZ7*8?KR?gvzebVb`(K!HPI^**c!8-Ic(>~UyfdXDiFAzneIxL4{>o8l-C zH*SpHWsB=1#@+oGid`0krv_B`-OxAArIK}U@LU4uG^#wZPB?hZgM(*7Exwd%wV2SQ z_Bl!w@HS==_iBlAP_FZQkGiKoJ`3}@Yw^@`uP6h8FOA~yb}2F)7)HE#r;|^SXae%# z%$umI!5hL?hngYq(JAu@{~nQZ0$@M^#tz}|Jq$a%R%L?sjV&eMaDHL_l$-iN9!JJe>@&X6tvlr52jc{y-IbAs6<%WgdbaaXb zIzf6IgwE@rD5v4fug z)Bv|od*LK|6?`*duEENX+-% z?2rX7cr{Lo`f~U?gKeZ>gDL0Sw#TRYMI9P2qA6`@cH5$c_4PS#Pdlmin|^43JgZ`9 z@h*M*)sFUuHmr49_1B!32fz7p;Lwq?q~@>BJ%6ue`WG7}9E<3{6#$!LAQ8T(=vfs^-GYMK z7G0Ws=7|$=AqzXMC`OkoDlPx}@4~9-jDP>< z%SUTu?yugms^S~6yr|zYx2IqolYIAWdEo47^?LVZEDYFn3{PELH3HZkfeu;>RPW{S$J~ee#zUb zcAV>{dC#kC@yj%N*k?IQpBX(l@yCokD^4H(0p2RfUUaqo*N(5k4=h^RR`727+rKXe ziLpn9PB^#u3-{DhC)UL2LP2yEElmmjCjR!{fBB0nWO+{T)vL;%_tk7m$$sPV!>12_ zyX%f0uAG1APW9%6SKcaoTkpL^M*mWAzODAxt3S;;`G9fFO2dbf6x)aY zH0jFeqitvz4t+GM_3aDapF1`*$LuzG=9T7F4NoOQ1H8hAzJ zW^G>g1jnjxTwk`l@|M7N=@t9c@|RkTAFh33dx>A*s3A{kulUZ*dv?nse>*iRscFhf zvyxsi|GVCIYoX!e(T8;}^xOU6=90S$!fv?`UAop@{qd+DzdV*cc6GotSlytdB@&`>LWRf?hfC{)h-~duC*Em{-D%kG?6rIEx)9B+E(cwSh-_kdg+ep zd*A)kIP88UeBXHa+qHq(AKmXhaJu+=`;-!${|C42*6w;?@8&BXpZO{M;%`?cUaa)F zeD7||M5F@5LO?C++}Z@zrsp*BMQapsW? zUwx%2o-y;=+53Nd=c{ksUu!?Y4E<%t`$xXnQ?bV@aCF8SCtGE7clfWrwI6%-j)^%f z1NT|CYyR<#NA%cbYqpIKJ<~?2gE#%$aPXd;hlA8bcWK77d4!P5SI)hvOx5IwW%7Rk D_Q0Es literal 0 HcmV?d00001 diff --git a/obj/Release/LogViewer.pdb b/obj/Release/LogViewer.pdb new file mode 100644 index 0000000000000000000000000000000000000000..54a5c10ed0a2af0b3ecf14ca0abcd0303acef3d9 GIT binary patch literal 146944 zcmeFa3!GI|`TxHU!U)PJC=e*%zxQWd&a4?XmzkmeKZEs}XFg}|{XFYg z_w}r`*IsK{S#edWI<>GSXY8P{{rl%kn>{|~?A*M(?Bh-;m>uC-n7`=sL=+XY(v2uO zjo(Mz|3(UIe&?t=l2c&B!HaSFNKT*s^|&AZ!@&tt2HH^&M7VRKciw3UzVps8=KAQr z|J@Xb%m0x_^Z$Q0!yClx_T0gVhwd48sZ6@vFW!CPupv**cw)jw(oeSNX-tz26@ja9RarIw)UfBNYT2X3<@1bZO4eEYU;AsBuCt;3|+ixwnaP;?&eXjlL z+0o`1_qO=_)8nSx`TJLX)_(P9dwu+8KYCgFh0nGBPQNI6tM#Ps?CsR~oh!c7ZrTlh zOHC@iZdhRlmrghQ_Ww?Q`ERdXwE3R#|2K5^MR%NZ<8L25LXz-39nHg)|9jrqeaHX3 z@x4#qc-k+fzcKj>J!)&8d*wZyFh@w>4_E$ox_$LE-7cy6QoqE|)3b{P9zW-iudF^o zlJGqp&BK-d9on`|x7o7(oi^%biy1Vfp2X77k;54|Jjm{O#S9- z7i|A<)dP3BDWmAc9yi@E^#ebBbKlUHrvK=n^FMfmB;R{JnvKo>{n>xdt{vUE&!jI6 zd->Hz{*>1t?*q55{ri^peBvAd5om1w@2~#vEPn2q9bMiY`hzydcZu%#5pNBTy7xi~ zG&cYDSO1@0+IHsWF5CY54`y$F;N=gV^y2qlyXwyOLi~^PFg7;-_gDX){Q507c3u6U z>`qHY-t*Aef7o-Rr|Wwq{*BH5{nh^)cdb0`qLF{yGyUO@-*VSGPk!QGcl3SYy^;n; zaySoH{+~a-cH`Xxj(sZYiA_I!`HG46&u?|v^+$5LzE|RYxbpw*+uINS&DSsOcjDB) z?tJ37w=UcL=&*V3l{7e#!+E&!|I}-jf93fhm*2nShPCa#aM9M^5B%L9e|#jT>w6{c zjm`i4*?&VmblWqNT3^xWv6ox_{^Tho7rj^Ff24=AvH8D0`|l4Acbqz-#UuS*-?;4N z(%)_xpMGxX_mA|neJ{knvH8Eh`v2;H6V6_I^AGR8ZO)JW@#1H<&3`Y%{b(3@r+=8< z|KEA*L%;jW)rD2j@75eQ`ifs}y7b#Uzi~8u|NB$maOHphPd@Oq1-U=D;i*eoCQhF9 zsb6jBb*X*TAwd`TdG=;~)BtI<-Ntgrvj)mLTY8=-$zvN%~$ zGrp`mIkl|1MiD-U!YU)M5P@NpSC&qD}qowtV&+G#~)6_=D%l%$p(QjizJ zzBFJzNVpsLeh7hYpx_WBbM z=n(RFOl9REMWe{`9VG1Dze5PH_wo=zN%qg1l`KydRVU|7NKzh)YLX?BDrl4{ipu9K zuS`x%meU92E;3>&N*Hx-&Qddc}PcEs=aD7eWdB>IU_#`*CURZ*K5x6CLtibe@jiFZ25Z7sZ`GN6_bdr|r*iFiZ~9Zk zLcKIndCv#+EaX)^^1N9uzI3U0RlmfmXCbf3w&(rr;Ez8oUX^+A>RHIE`r>(SX>nE? z@v0t)SIXA+Op$&pYJhRlg9gG9w?*vyfNqz2~j@`Ck&^Rl6@< zJqvl&2YBAspS^Cf!mGYPym}V$a_hg&5uND#s9$>ptj2}TT)5v?B%-V?%ngu46h!Q@ z<>QtWm)Djs_&a~W{P}}*J2z_C@|n@Ee*f#2K0oQPUTs=D`sIy^Wo{Yf1UEONjhIgt|w&UlZbpg6}Qfi+=doWx^FZ;^1L=2 ziA?xH-me+nk6HINT>g)6A*3nIxPj!wTa#VX7A0%u z&nc@Zr%)>oy5Y*e?(`3E`4#G?Eyy~_%PYQ&T$WdrEh?pQNVk_Qb+TcchalV8 z%Ua#_WPP~T$LQs2>a5eftn@P3Qc_!76BqA2F}jB#-^z30*%$}Mu?*YC5DJ;%%D78lo~s-jNO zG3`sx(-VI2`scc@ekh0gMZx{kq8w9|bD~U@j*6}O-`TW z6r`L`uBN7{Y(Z^}3Y+5XsVQxoZ$oVTA)@#xr|A3k=EX#m?ni6pd2O9ZL_U2R@(zkd zW_WEqiTC#<{LPDoWq56!i1$~#XGLQ&yte$u`-_c}&ZXx2@Y?bo@2_}=Mx!&lwtUC? zySqVnZCQ@@SG-|(ZMlv2_jm9Pi1IRFu;nz~U-1r(&NIB*GvzChDX+cAw=K#L+#lgR z4*V0SzKcoJ^l9L0pzMLafJ4AHK((uHg6a?c22%W@zk}1kKmGaNX-&QB`V#P;;QPUU zfhmXAfdA(DCWoH}-{Ja;4mW}n)b#fpZUg1-c2NHQ8a#&Qe+21#)B7AALtKvK`Z$MO zz}8&nIHWC(+Hg(%HaHGEj_X+tRR@pfx){s`OB^l)Pvp8|)Gz8t+IOUUTO0u9L;a#I z(e!92X)V_y8WeSlMnMy!Nl`U8IhqnJ2d82~T${NTZysf@3)Vx&s5f@kD6lWSO$7T# z1K_W_*8K@I2q!_EkU1sFj!t-2Up*H;*Ffrvwm`d}x1i3%fxaY~38}4L39W@>>u-a| zXQfrt2g--$K{e27Xg#zUdM`Nj|Gs_R;Q~A|2>8b+GEbi6`r};FJe&4Za_b=R`sb%b zJ=-(Bc zL7&0IqNeS6FJkpJrms-?hGE_3!n($xg8OlJW}WNufWE0FRWX(+va0!G%gc(dYMd?X z^?6&M(3R7ZrN}wjnXFgISQ7-RZ^jg-tT}Pp=5+bKP3k^@u7B0nHMXdtI9c8deSSQ% zyOoVlPZux2&FE`6%EfI`MOjT*QF+-lNm+@h3f`!QM|r=Uus(>qWIcaaE<4qg(cFTv zqD2*{>Y6g&Oioi%zI>88(Z|;b*M9plVDmF~Ql^4XFe^y^R25CU`PI1gNA*wPk^QK6 z+rA@V`VlUT-CL+1xEW06D7Y7b9l=@Pso-p|2RH}p3tj}$JVqCTZLl4(N$Kq945&BM z7aA6|p;wX4&5&)&6Pf@>#j#?HbfOCL*`T>&OR7PzIK0t>1#3PMv+b1L<-&e@~tl_@gV*EcI#D+9!MwLwW=ei1{xy5%IKk9LsxS~Bu)0IR^ zzz={+!Hz|VjTq|#pou|?C5g7Bn&1g-#o1%43x1Nb5EpJ19lrPqhSlfjRG+C%m_ zus^sGWb7AR4~_*t3eEs;051nufr~);t8_I;f1SP-Buwd#gY;49PlNOy>Fg+nv^fhp z8yezhki$Gs&vaj?`?{CwXdpNk8sM(=TRg)c{T7N>_rxn2kjV$CO=SDZM07I0<;Z3< zSa%EIYs=4D!IQw-OnAHFN5_mG;sJUSApXcy=hm##nad?TtxeiMls%?<`)efs1e#oK9u%4?7 z3vY6$I;`tE9p3No3l6{Hkm%KO*})8Rc4WFJ^E_KE)PIrNM_5$$^iD%=6Y-H70qx-4 zUZ^D%M{_=-pm|UYbUXAQv<=z=wWaOs36(%cUGq~w$>_%dYRlw~wP60!uV&rC4U=7( z7c3}aS(CL})sK5w`U&IIHh4D@*)?8P^MVaz{kT)(Yq=9GnE!+&Yn_)3#+@s8s=6v( z|2(v-GIq+eR7ny8<52DK&=wB;%h*BAc2%64Iv(}&<=b3**9P%DkN7_1<2$2bRtF-2V)CHJHsDQ#K{OJu%FV@*&v-J?i!2HfN)j9oD?2cg*!=Et=)Z%c!d4;?$Dlv}8r?Bqn*P^#*X*IrH;iZcG{KgP(p3&=Xnf ze*z2Ly0BclLb{K{7E%9U+7?rA?e9v`V9jAl2dDao1LePO!&UF(R8PDcLtd?&9<=|g zK1)^>)s(_;u=f7~WbgH|YX2L^`u1>xQx@uFOpx_uFROm1x~3{wwAkqMa(kSdDHrZ{ z0dfy}Iq3}Ke7iW+m7yU{M!?*5)+1id^*2o^(_Y60r{jb`$9Qz?J&Za!sByuCIwqjw zABRDQFB55}BTVCo=x9yjZlYMXDw-i>)7pVdemY&g9gu&M(ACcCnp9EE`g2xICY#jW zcs(;+TN~=ZzRxzQSmxhCuJWniz=kU)8V3ZL(ngQ!ldS_^{Pm>S5O2#_KFDd^k;cfoosLfK{c9+zLZrAgHGV#ihq-=1 zeY$tkh+o^8uH5n|L&a>{rZlIX@6>=B$NTq;n~t6#UQc*26De|J>&> z;e1yfOQsZ=`;a03qH~;|N;jzsWfqfg;$I8@I`})oFgoB@)e8C5*NcBE{A=M)aUJrj z=!X2&&i}XJUjzT;JfGnFR~*RNdi)D&nWn{nm5u@M-wvGtPi-K>t@<*{Ycx%o$$wuC zJT@zzTmzO+!a2u$Q`W)@U3sW3T9V|x!n=!rt%qN{{<-eAql3Cn{?xmlWAd$ckbgce z`oO;q{?`yGcY1u@h5SA*=EA=g{@w6b1pLaokiWRH#)NYf{QICho`2Tyt3E0(LjLkp zs#1;FOxtan^i_N$zXpApDR?8$M;6zU_j&&o{I|nDndfgie&xOLG1M34eINK&LubNs znzJJ%gID!s4wCmxZ4X{YPfy6&F!AG*<-DuzjcxCFt<4fYP7!aop1|5D@%~-|Z!hMb zy}#BjiT78$ejSMHFl&n>7;9Rm`lx)CTLG`q{6j6G>j#4?xz;$Oy%~?3VD!lkYilGj z_Ce^!N1Y$5j4bo41_$FuKgKk5epp)~-j9zvKR)67xY^(!{5Uh?htl5K3i0v26`A&g zU1_BF*}lGRETFP4Kjc0QujVn=7#Yps+HgwF_TBMvYn|L@jhyCmtsK(>uCGmG(pKfN z5R&^m{JOpuWUey0AMET< zIi#(e*RQm+ePF`WNj+1OsCdc!%EY0@XDRqP*OlNKV3oVS0(_He-Y-Od2d{Vc zZv_9vwbFq3L-Q`84Y-?Y;a|Yxz&F5?LCp(y1Wy3}iJaEF^y2zdun(yD;J#olP~p)U znEqUAUU&f5o*LPil`CDN@vJEs$|yb`%!5WS^Dqk<0F6K!>rAQp9ciiMI&xq9a^2wX zh2%g+-eYNf2XbH6=kY$s%XFdCd)f9#`25qj!uClC(?7{SrS*N>m&+rJY8!@tDp$in zm8TJ4cko z^8s)o*B=HagExRvLA?W*4t@&622bAy&H^6z)Qd%fUFfX@0Wx>=K50bH=z9A zDp<&Qes1#Br%4T{H+6?W0_ChU>jiMZA1T+UKht!X+gEm3ipuJE_GCv0z z0ZoNUpk+`)*OD84yt0aPlhZpG?z{|~BTfk3sZYY* z58u_#s;#IgTb#_DovbpeFWjqhQoU|{P%KZbdl%2r)Z7coDvGL>le);T07oAfE6jd< z&M|>K#wW;ngKy?jWqT+t;d3`dU~H;kJk$Ju+PP<4yw8jV%BE`HF5M;4H)uJFYpZK= z79?{RjoJt-DEDiBWT!NCewbq5#yfT${$7*V=KUB?tUHH%SV6v;M@^WwRX!?g>SuRD zHqR27yl&6E9afcjzpm?xDTX;9^*^mXmbTio4fDVWTweiR2o`~b-~wvMcmX|3c_oNbhB3 z1I&O<<=I)#5Qvn*`S<-j`EAoJL0e#*(y+7pJrP}PqI9N?>Kh@sc985=+53+{+oAtO zr|9}Q0ojal6tj%$#~A5XbOff{X&x>ZNT@t{*=0^5Os4+GzT{;!7uP`6w>vwXY&efK z0NGc)Y%}KLRNhqvY#ie4blz#F&&2Nayf)17_NsXM)830$>1D$hZy#@jmnJ0oCMf&p zTL#aijP{|-zPn#gncPbPw#LZKfkr`dpi<~R<&^(^on*dK66XI1@?qW7Apfh9i*Fd+=)=eyLv=?sUp81uK*(<68WB7s)s*Qe8aP@vE<< zAFjv0ka>!V;9DQHF`}lVm7fdjtU`{v(SrHUx{j<;pH{)VvckHPaPB5x;`cm0oq9A# zC-Jv~cNZk9@_`^NNFv$hCVi#Ur$s)zJD~yG`-}KN9}JAWr)$Lo4CWfqx+UC652FmLXTZnp=i^ zpKAM%`2M#O<8VLs)sy(x{vy8r74INMXTJZneM2J3M@~-lL~W8>XLyxur!beIG41JG zYfWf4Kczn0w*B#acz5T=8Ag^oGN^en*`jt%M`5;YdxCq`Dc`(}c_uP>y!BU@*Fv`K zO=Q~c&6J2E!V_d)vZXb|!4P5i>S(e?1!b}5l*)7o-Rc_TO5 z=)v{^6+fZI4i|&(0~Mbx;H6ym2QLFhfR}^$;5_gGQ2gT^V#-EWa9tPv-a&pSA4(yG zKPQtPzI-X&Z5xuvv_B_uZ!;vf0Dn&ci$R4`s9C2ZNP8G90+m7vcW@JIc({GiNJ4x-5OhI2vTwS?hWm$-JBS3e^>(=eXey{QW^|v)){QP=C{|!yUd9v_&E*rLm zaVn@PTB?|a>FNCo(;?K?a6M%B%*&enl~R@DWibDiTeHHIxlmsMeZStH zz9G%ir*TF@eJ#-Ur~T=p^KXnD+c17}R9SK182=dby|X`k!2pns(cKb# zS(AO6Qj*eoLRu9jXw|L^8LoDvDRJ~VN3}9)C`Wa!6*^mIbY5M{hm&RLmWhS1N@p`>5*!+&S z$4R*K82Wb~H=9?9OnQcK)4Mdi1@pW%jpKPM9Pd8TKyyUevq(<1QvrQ<3A6%Q3vGn9 zLwljN7-v190%#tj4{Fvxk3mOW^HM<7v*G&R&ViS6s5e*7@^w}He=xB$HdSRzfkxKX zKKQ9N*OwXVe+jw%<6FpY7!T+egblkXw!asr>izWP6;r#%kWt zPh`pFH_1MO6>~*ZHTu5S+kG2&CVtNo+An(V7uqjz_S>w$&Ioy(ZSpSLL*=HiHifza z$xU|a+)G^H~{TQ`3j zK3j<8t~oLJr}YA|*+0m2cYgE7eLDvk%9J_&ecYT2e>vA$8zFu_FB$Sn2aim8E6$?E z^yNOSd|$44F1eE|nEwp-vcBxX5FOwf{xyVmD)N%`{NcDHw0Dnw!@oG!j|Yx^!(TTJ z@@aA?-|(xfH@0o+K-si)#J>CA6I0$XfwI2i%e(f2My4@!O7$hwu~n0zIE}TuW8O0B zS+675hifn4(K;0I`se@6ZMw;Rc>Y*hq-7)-^-hR~_m0Z6FUIn(q8f(d1YRl+-q+MI^V#04* z;a04MYQ<``R=llfMX%N>%7^+hzt@Lvz0ZKRdnUbu=pRo-{w1 zF~BzL{207NocRUxQn` z{&{Fyg>#f~bG{AxkZ^sV?{n>*Ky`chgyRE07kZ%i%#h#tY5Lm6_R;DqY~ODC=t7rH zy6@dBq|-}2owQC$AIS1Bl+zv$a%uy;yA`?LdpWI-3FQ2Efq5R|LVdR(_ZKfGeREh* z$>?k`l~_8xY&$i!xKQWq$iC%erL%#o9}n_=&bUzT9mul%o-Ge1o+=adQYj@0QyXqwmwmo#^GHZ)$RhzUvRu^|cs%Ymn>Y<)kl0j`iN}ir<~co#y3Cx|$aZ z_4E}wxiC%dLavvWGih2U=ksE1jK0qxH_*#T-?U_PwMo(X`M4uSC+{n>hIv`(Y#{6B z(Ea+CFdsjQ>?kj5^cEGDmQ^I<_M4rnMgkYc_jAaP_3}pdyXAen_1&LbsQ+%{r+9hk zzlg=OPI*{1-Q19oFz0Au>@1zoTK;w)L!WZhD=w!n<--B$C zmzCZIvcBG=WAxsOY?+sp-svU9N|Uf0Z;H`*A99smPC5fQpT7HI^xco#GA}266WO3H zCVlgq-4w?23&>vUWu>!$tdFPGsmq1w`v9^xcvu>Uj1s(f1YPHhMYfo0hC8O_kJ3SACz?P~TUPd(_KGUyNLy z3t$+(hmd>9%SoT?K0FWevDC?h@!Nph551i9#mKFT(f2jve&*$*kIBM@`gX+Vdl&U(6<%~Xal8{t3%BEe7KViGE!RZRqWFtKP^twzKo2SdS z>p2YU<-&aX2D*+J9rVxRYs<^0rWW~cKO1AO`?z_1T6ZBA+K1mn-*KV7*`*v0g+iC_ z&C$2b>2uA6(fuv-bqe)O=35Nu3feXwUabj{3)6@3Z&p_?ue^wn_w{~RjQqEeKf}wr za2ddc1wF_h)j?Sup<}Mb8kgrwQw;eHrmO);k@f zQ^q}pj#l}uOg7=$6|ck33)t~SB2x}!9(Q)yE@xgKo7n@;Yi;uQ_nZshJ(aa&p4Zyp z@#_x7n-lnJZSQ!0OW_T_`?a=qyuacN*FIX?I^N$@1AnbO9q+GrLw~Ie9q(@~yr(m7 z)&`FESG?i3 z9oFWJ_xFYdVX*dXyuacN)7RRv@&0}S-X45y>%(hp*LZ)$8-9y!ZPj>x83Wey*V?A> z{)#vB*V>}-{xSwicViCEhu7Ml@&1Z8jGMJN-r08JH?0hd3gC2G?T~H?uqY*cEZ~` z%Fpmxn}x~LnDD*?Z+})Q`?6#0llU-*H$2zF+9L71e}wmVX5GEN)}Dw@hd;rqxqI>M zhOAAH$k+8D*TMZ&cIRnUTuCli&})p?sA(ls7d4`Q9^^8El=4qWuH&cta!7 zH+mj*ribSnz-l8=8=fkzc~Gl-*(Qm|+bk`(r*b1ViLEgRkKWUy+prtqIr!!0q!*~r z;k2G$HS^Kyq0P_^=rySIiBXgTje_PtmC!0^9kdDB2JM0L0;4mO2Tg=ZpcT*>Xalqr z+70O?QDBinhRAztDtqzCTKgf7ixVn;e$p%GoeyQ zFPzpw8=-B`9*CDZQD-O*nh2FZE1)&d251Yk3wjG`*OB)rP(Cyls)TNW?t?Z%JD|6q zb`+pIXd+Y!sX(oRHbL8=y-;gjcI80Bps7#^bkrT*6ljTeejGBwd3|i4f_;v&*31gV zlWxzfa2}x2@wX1-<|22um(%zqkn`hm+DPLF_wSV z}8&{^DyY}dDK>o6Rx`j^M4*X-ts!M zZYfor)Pts^*Xzis?X!6v->*Ez`q0qUvH2X|uZUM|ulLvHZM?sa!#kPx?cyzjY~Cb@ zhjr>Z=eXaGz^ihz8O#R13)1{V-ve{NE#N@#8L&O;Q`@sYhdqyICOCp?+b_yLn?DKm zbg`}#p#DqF>-iD>NY9T!>G=tGD)?;1{~`F>AJYCm)^GV?^CgkVFV(kEklb^~s?G?z zfIkOwz~@1GzR|h(cZTtAANNiDa%C)!>lL(zYoHC#R%kaQBd9Yp04jjyLY2@eD9$N7 ze*NcO#}L*>_D|31G1=AsQ4J5uG3&L>+G+nza3g+5-pd^9Jz)5b&aV#)@A>z3;k!lK z_8h|AhlE4jrmBqMDLEh45|@r)T#qNNeGd}X!T8gddZqLW_3m_fT{Xrx`fGUd4x)ER zGxhQfn{i=$v(Y=`AbN*3Q}0%%H;gZPFJ+x`5WT~iskgwrFAL*)B6>$2MDJP6)ccsz z8^*UCdM`ML-r>#EJ4^)}7si(lsIv+VqW5fMnp2)1bb7=1o`l{h2hlsCnRP&ulCoJ3**}Xy>kwtcQ6fhbM$s_1IIAF9npL7!SvE#HAnAFPH!0B zPUwCA!SvE#HAk=ZxsnUx%h?@S^ADz%2CF%GwO5c_7+>~M&02Ucy);VxT}!D^1)dG7sOn7>`o zyX;_kX|S53ce~RY#1}3vHOjq93*(!E-Ww05w~6hQ#wtA_YwyO7Yc6McV?1jaJ+HMf<9X-7JBc0GJg>D2 zDDNEZa(q}ui?-e2)9WVO5Z*S0zF z{+7ZUmNVN<#QQ5=l`}sUKfyIJo2dWm7+-IJc0sKf%;!K8p+aaCv<}(=?SfkK(jo_% z2o*xBpmop|XcyF)iG>_!B2);ig4RJ>pj}XFCMt5EiBKW53R(wkfp$TyyYU>F2o*xB zpmop|XcyG_G@e5fA(`)fK5i7h<-#`mJG{GpJU^KKtJJyh9PwLa$J1VRnUTbAhl0nE z{a(J4)f`|0S^tffpVMj^$UcGWkG(AG`)0Xq=VsQaH|vmBAfxrMlJ)%IT*1NS9~!Ph z4(A>YG#?TA>(?uX`%0K^%chkTSEZ^`3v2Xg)zBe|UZ_v|I~>Y4XnsG1kT?8p()bzd zf!dV$5v8Bxe4eCT+18wwcbmzR7xG z$~J1Kuh5Ov!#I8yeXswA^lgjL_Z0fxIn4Te9(GXW#)b9yY4o)n6V&HvMa!nwE?$tV znz2yJsH)))%R$`Q-|yka$=(mu>;3rQ^L0&3IKGb`r+PoMjtW1tMr~@cVv!CP3d_X~ zCm*&gKR~{Rmv>=kDDT^*4sOgIro$HG`+0fkSLC%3g^RzJo#|vl-OnI9*vm?H1KIKJ zJ7Ygr5bFIQvgdeN6K{8zmfhNTMn!T?YPwzeXwty@<-ZFI!|@~h%J+VmG&rzde(uw+ z`3=Lh6~88Wzuq0LImwEd<+T(J<%{=cnVTC3!}MePnc@9;cbH=R*&H*s@e};H#QUT0 zOi0%FbH~&kPBfon+cS}Ucv`y%h2eP?f3EQUC_D%7$G@(RMJu}@{ zJk;|%dP=;WU_a2N=<)6E(=lWIU!Z5H*R#;&@BG=d3l>v%XK*GFpZqsPr!QA|Zrq(8 zq~Q*9e#q;j4)}URb#9U_->$#rbbT|>^#Zyc_qyz!n4vmjvkgP;F-UTr*OYJWZGtdS zqhVuh8PlEw39d1lGvyo8)3ig)E#Ix3q47uj^X`{~zsBi~%FKCV?+X7u!l=DzB(i@1Iyh+hk?LpjAy{H5@2h30epUB~bDTnPC~*#XVl<4Tj} zriEFl%xVn_Dz!ib(^T z*CDUnyWj5XuXGBZRcooaTiD**IOl5}4z5H>oZCs9f8yh8l+g=fqg1&4iIqoDHe(ND zCFgm4o7^>sb5$x;BX3nsRG!0UB*$VJP*q1(+1Wif!sluxq;nEy!fKo)y`#{pZFWOq_-?ii5i4@cshEU=`d`9MnaI&uUUNMdi+T zQ=L^)9zN$hTNCa*gn8`=yr1Uz%peSEDntGw`8^<)17-e0vW2|0cBbeSIM-R zP#0IKQ>@J4s5cv286vnD_iM_~5T`$Cuzix4n$p(${w1xK+qe-H%>Un@Z}fijX}cyd zDNQ#L)~U!#*7K|E={fChrmi+T%g@)*kjL)}-qbqi`>sAtt4l@&CHg<&v((3jT4D~K z<)bO~Z!_^&NgVb;lJR`LE$$q|!;8w#=7w{d3uj+>=G-pA`B5Lv85L?CZ6JBB^d5lB zT1YaU&xey~80RBXLUa63&NwII*i`wRwFC=XOFe5jn|t zK3^_Q55n27Tr@RJz0JMLg|(v(DEJa#?L5)-IZgO(q@m3{)fs%p20C6w$3U-RlrikJ zsAbq-R<$%G?O(_5p3vj@3U~aR<3*V8;Wr82bG**{ManGW;eQl~*RKuE)?a73 zP?oJeK)YwK-q&I-XHm^&wUojmxfk-SoNt>#IqZwH{1cAge<3@Ac)3@cT%5iVr%%|I z6;qSgVavC)P6Pp*kKQqT`=QQHen~t~Mw*+?XB7VJ^ zc*FDk>>NeBzsunb*XG;#hA)qviH}{EyVk~ z65hc9ubn%H_gB0+C(HY5=LX{ay%Ao&CwouIksbfX`zzjI^g7;OJI0Uq_YQc+u!E21 zwd44Bf5kiAl|RBB*|B;eGlp-&y=9QxJ@Cr5xex3J-Vf%04}g8Z^`Pp^7r~L>mq5%8 zvp#(;_!X|(L^+s#=RrD8um_}Tok^tYJl2=ny?*e^jnxxTn%{D&OKZ)qDEbb)-v9@KjFG4#k=CY@78Wl6ALV+o!y@oIT$h56gV%zzed%mg_GVM&6t?!H zd3)YL>f5+pSYHbB8MF`CeE*istgjER^3RU%?S4I6)@zTR#NRyD-YZX(Ms{qTFz5P; zH*8ma0PjiM6AoopBL5Caa(1j8FZW|7Cu}HZ$If--CDiv*_?53e1GBO6e4NU;XUD&Z zD4*YQ$3lhrfn)4%@_@0qDGxh9rNawgKk%2}IpD9r(cn(drmNB}7pgsV^qRAoG>ciCxB;C4knQI(|M|Kr_PByn-bE)T-&&G&!pXJ+_huegc1)^ZxblF?}HS|H2EDRK;jy;02R01CO`T{{Y*X7IboxSVShtk-_;l{+s7$<r5-NiGY0DnrMD$2pXF!TFNrn;6!8rbltjno`~` znl+y08<=davzb9vJ250$0A32Ij!uF`K;uo_+DE~*iGVoqdd|!0KMGy} zJ_$Wc<&Pv>6@XTEF-IElJ?5%YbGenIOg*q-LpImiV@+*}uGO#UdK~yOaGJZm#62$pf6o0y z;PW6r?%F=YwyS3ZZE0Qqp**u=xcGhiX49^>3Dz*#u~=RIPSw*V4aPkPZ+Fs>KE<@f z^Z~}vrbUG`<13)sp$*U$XfM=~jO_#ELxs>XXbrRh+6L``+U8KUpovf+l!n$oo1ksb zUZ`dFD9V9GKqb%$Xg#zU+5@Tk>;vUP<CnXv=!P1 zwI#v&K>1K1v$iS^x5K(itO{ldyuJzV{*5>X83hoo#SPtdq1-N z%#cto)jVsAmzCZIdw2OT=ffix#yJOB&a<{*mfi-kzI-fmvZ3DY$a2)sfBXCTL!*me3E?A_&M`>5jM!g$iOWG(cvif02^AKpSI8^)6+ zCyVnP>huQtcX>I#4kXk`lay8K<)kx^^I_c{qpvq|AM|p{&jx#UdD(WY-W|_A$gcFV z(%C@Phu7}`7sivmI_oAcE4?xMcco)=GLFo;&C5w=jGW*9E!4-zCF?U@PWoc@?|Lmp zA7g>6d%T?V#mMP=Lb*`iK;*vU<)lv&#PDc-*QZONlMC~aF-O+dyqxsK$gPRdHwd|J zdpYR~_V4ogw#Def*2>!K<)kl=^LgLaMJ$ZpVC1%VIioMN$ZZ{E;^<{3I-xL*Ly&#e z%Nm{aWqo*!@z)?-ha&q6FYEMbKc_HVb$+{CsB;){zwvTTrIxQ-oj9@F# zXQ|4{ZdEgGNo!H;{;6AC1YhNucf$$q8$P^a%acV_je9qy_=agYOa?FRMc04oH@1D& zuL+pBHK(d<@tE>*-EYi1zt{6Ray=ny8^znJlQ8kZJyxtO6hD6{-f%x5Yx~6ei`C6| zrEb3_YwyJSE8cL9+S)kr{>m25Ayz(a)~<>7SG-}|tSuAo?_7Ap{hF-p67R2g!*?Ur zR*CnQ`HOmCuy#qjzv2zk*V-WQ{w{zw+#|@^9P$2&H{7Sl+8FWvE^6SfwJGBL6>sRT zwISmDr4XmX{hF-Z5bv*e!?;;nA>QAs8}M4&Al_f`hT*lgK)k<88id#O|MC8cHw>@s z^W*(x-jE?x-F{8BkB|3Pyx|@Owoi}uHw|xC-)uh~@2_~n`eys?cz>^lH>_{AzmE4; zykUK_eRRCPH^Lk4*JS(Ucz?wkrkU-F(f``VB0s=%|FpKW#)I*!z+{IOJG~@%U~Pkmb01p z^7A`6bTYO-OGLh(V{96A;J)0$$msg(V0UmMH~{_i^wp@CopKa5JcJ_LCrfM&AXY=qYdu_%!$&_&xA9;P=7b zgFgWEen|6;n!mE|y3PdkzN?p`K44GCKNqjAJ)eGy#4owJd9dB+uzhkO(^t3W-VR9a zC+JuDJPRs4wtMJ!ePM<2p?OdZbQ5$R^cb`qdJSsb4_gKr1kP0)I1Gqe-h2eo6s(FZDk=0TOvDrhaV z5!wnJb^o~(Xo=T;J(=p0TxSdB|FL{Kd)#DaGmp|ruZzo)O9#&{s7h73BS0EuKfmMb zbZ=u?zvIvT`&R%$mF?H`ucxYBKk-_-sOpR4rKKvq8xt9wSp#^Us3ew zgk5_^ADUMGy$+N=p9h(HjqU;UeqHY>?fXdC0w-kZwjGq)IfESPbv`r~DnDAsT?+qa zKy}y8c~v?US%Ip*&|c?F3g&eSk_(G!%S~6&m~(Vo)6HB^-PttQTE?loct=^w8XoFn zKKPQd64Tf;W}Zgj4s}g*b?GFp2z&#c30{}x)((@djZRk>FYLdpOT8|&qv)ELEL&7c zN;W56IW262!g#%jt}DGR7q8~%^7ERjoUSlle?`{{uS@Zo&3=tdjFZ>nzXJ~A^f&Z; z!s}6-nxV(HuX9|X>==}ZzoX}FucrxXj(xeK97jDNTX$%5osO`5W&B55S+|$EE%yo9 zN9#gf+E94yI?p^F+j3jCMo(EIeR4evZ^S4|G8(U(kZJF28I0F~*$)43!z&%O48`l9 zS%%m2`C$KgI&67}*KxLy8ko=0l?4y6{q&Uq5Xec5INRIWt~6U z+yBL>%H^DbTwYsJRJ{bBu1uv*r-u*^S%{ogkllgUSKBgp>mOaaYT zAwBAvl>*9t-yW`UKAjTycmnO=ZZgHxq2N7|{M zDNiI^|MuZhzcZ;6~9ndrPJlxQi7uQSXo;8XCA5VX{Ih;-&QISaiK2S z)U3W<*8$G9t|2f}k(aFJ564{LULi-%wmy2cHQ(Eor7Bckn|8K!k0{5OB@|6>oQrr2adK*^n6G*LyX?l*^$wI@)xXQ!yJ5dq$6cxz&e5M|X|1fOf3ugf`B20B%$+ng zwYV}>!B@0w!c&nfu1Qtpx?hd6uT}pP9@%di+uF9R?wko#S-l^SE5Oc>T{j+V3r+yL zfXHEg*m-WP=l1UeR99`A75~0s4sspb8d&MDZB8Q7KFD14UEU?|9?SJy5IaxbxnPHB zuV}3)w{}t?_ifu?{ZPND@S?{!t^3qHVH=0Eb>_M&NO~K;^_puer_DE@f2?t;z0ws zi)zZsbD6-U&92~B2DJ3ZSyEJ9i`T{H&ck<6?y|+@J#q$lZ*1u1q!b>{TvJt>3|LC& z1e~v)V>xcxw33p5tIEb}cFpoSj|z|sSeRZ;)z&l!^i*>*m;Jx&ui3?=$;CxeQ;UXO z*~0~r*p{m+qNAHsu`uNW(IA+EtoJt22l-UDm)fPl$GBVv4SPQd#$9mHgdm7sY+zM# zVGgvP{Ibb6YLN4H)F792=hv`>5q+`kQ<;CD+p(^Cfvq8@@k~W6e8vHz$;AuG^}5&0 zyKBx}>l^>f^#oTAB}e(HFIPh*FQ~0aI=M}BBt2m|mFuLFQ&`l5hx#}cH?#In^Zb&V z=j3h;dER1V9EY5(5Zf_zU<=4 zqKf79F_c#s%S~Bnm;Rfb!}3I0GpOE**Lq% z$I*{nN|lhfo)*mi8_;{B*L#4mi}oMOLte6;|4iAXb^9fbTULp6sZx|{Pk|q|a3NM* zHS+`+`<1el`JH=ojMLC2j<@wqYLf0fg0%DdSK5>wQ&G0q4i@&$<8$Lc{!HS4ce<7X z>M|OK7QoYQzu{4PXg9~JvEEVE>+;=)J?!uQ+r~JwH>O?jW1P2K-8oqeymPClJ74v6 z=RZ8gQ9V_Ar7_MZ$l7o5Yn^!2m{t=r71S69tDmugzK5$@!&92EZxY7Vfz7nL^IZHc zbbicoe#{2-Ztx;d?*=ahdw?2e^mf-Q4KZUIntU_183$et-*j*uSO{JLR)PFB-wYRl zpWwO}yc?v6ORonPf~=Eb$K@#fWAI9lbwSZp;P1i3;6K0=cno2#1UrEW&nck7cLrDu z4g*QQbOA`7rS13M`u?s5o%ncW!q37d)xF;IGy2XlpKl^3Kx6nl9-IM9NL;P=mALW{F!p-&Z4ml^qT=SSTrW7{OWt$!1E zs%H7c8lQ5%F}AY89_mw@BFCJ6#?k&|X&hu8%|1N(e0uU7xN+*syd%A{`f_0&+4L-M z+aWe9ZUbChcBX|<*9u+qu~yfZl9F*tm>=~U=W@R(Y56*GJ&o`3x9;95}7&Dfs}-zp%*SV&?0jkm1tIUDt`9V0 z&IY!&-@`w5Cf|pZ)s!tsR@V!oA8#;aRiyBQ@yk35<|f1V`R9`=Dr;+yZMg0+yw=$O zVVnx8ik2#-ar(k^2=!&&iA+neF0OV?lyMLwIgXFIp2Q1?aHIZ2;SvW9}oJ&Lf9*d42(C8Vp zlqTk@2m1-@=EP^M)0Gp%rvP2r57^u)Zv6M0K0ba;SW7xHxe*r3|8eLTK!;#-U?xfXZVD(H&iC&W_ai2 zno>UfeD7W*D(>l^UQeKW>a29>j_N+qn2lX&dfTz3MHP#9DW&kPCs3R4L-Jlm_xEyt z6!$ma$py|YrJ=m!cBUMMY3$QLvKwK#7T*3{>e5l=v4N~w(9HXbeCdO#;2ROhshoy# zi>nvSN!gcOnKYE{=A>f>6&~DhlW6w$MAC7q3rCQS6HR$FyZP$Po~;wF5x`y4dC7Yj z|2~J?ne_5|v-`RqKC`PQY+X`zhR=AJR-`X&ygq%;z7vv3S&D(JVEZ6EL0I5&xOYJs6{lFqd4v)PD!Oi8K=n+~3)=<|JkOZp5s&AWLw8GU(PUtRgu zCrGADuOf`vS6?!oPi1;D_t$V=bA98Syy~X>HSIJWn_owRfr$p-kL9%D$cOanKn68rO8=WtPIIu&S*N z{n5toUamRmzuTq%qxkRL6w-gP(;bzhw70c-K%G`$;;M5LHb9c`e2S~&33?`-Q<9J* zFKcK=jBGw~4?@%6{Z*t#IF?-p3)gDPF5{SDv<8w z9JiDYdkEw0$V$%h`Z)6FfN|`J+-hhbvX?kL%0rc(P*!7t=ETw0p;9-&!CsCTH;p)c z(#O%}A!a`B*h+2uwi3Q!$VtZY`MScRO#I51l$kI#r;KfP;p>+PU8J4lvc7Yg%L5y} zF$-7)AeQFn@_X{1po-_*40QdjzAiFcE7)vW>>zwAurnm%`FvlzK73>xmI2`CvIJ_S>%c=nEx}0+nYUn+pKB2av#Jd>6-4=<*jqNG)D98 zLUdhxhSRmsq#)L887nYSRr9B%YO9k|lM8DuFfY3cQcEi&*PQs)xRm$vYVvOuVYteN z;p$qB1;|9#)Z6f>2>dk(apSE)3Nw9mOhdN}Btz|HckhcUXomLHBiD_d>?yu&B=|C7dh>HD%X7 z*Znoz@4)>>;QN-7^JSXilqu8dGsV9F{&w)+%JugGesvEazi->sE_ppGkb4}yC1=|5 z=-aYT&g{^@gr0R5rm6=Yx zDS7C}VC!OZUW(3(->q|IRdPugEn&0t`nYz`%UK**m~oe(cd^%7LkurSEmLIYPf0Fs zPMhoFdXv-X=k}%ea&+Drr_;nXxzwv}N*a3`<}Ih!fr;-t^nS_f)qLF8A`V)?T;pj| zboq2GcZFw|(PID2N7rVrt0GlXws5(B73GK1P15Ppb+^-bcA&Emo%_7b@}dRF^5F|? z15}WzT~MC%2g)=hu0CC7x{PG_nsL|(skUjWU*EZHb>WEPFI+RjH$AQ zhPs?0wRz3a)rWDrTo^C<=d4LyS8`cd&0&hy?M~ORR;Bq*__Hnybu}|ye!S9>vA*17 z3+6xNJ!`Jl#o|+0@j=v@l#X6sjnfzA*+TT)(?DMky=Lj#?et9u;g&ryuPM5GT5fi_T3eOoKYe9Z$G)zv6={SM=3MjYzyQY2 za-ofWCHlJ6)0c@_lk&~CBWs*4&5?L_6}pCaUH1I~{a&hCvt~_6N8diTW!x$^(t`P4 zj;`CiE-FB>W;W+oRhgkjbJ|I-vqN{QtY@HeF*=|1IuEeEwH@KznPcBudw%mCZE9+f z=JYhs%+Z;nx{X9#Sl+iaIU8@^>?>DDqxd-1m-&jI1|&J21b&A|99;)7Gg?k-p3P_m9lo$o*9lyw0WIdE4u2 zuwKEIpTqb4qYsZCuda0sVA!WnT(e%!bA6cGBSYiG&V;=Le)0O}VLK77T{yZHM6chg zbA5Yl`UjV{+5;=RK9bjh`2M(^8}u?4opD!F4v!t|%HgQ`3mUXJ#W{`Kn?mJUbs)HlcpJs1^}woD2%CvCUH=v<1< zTMnf2tmf$)#aKozjOQ|RK71gZ!<(mbLyXSl=zQ)#I+^@vPTKaQPiz>^YtXsxKsrY> zPv@E#ogYAFN9x0V%g{N^)7jR&C=2s*1v-ZxNax_jonPCqO-RS+{2)3nIiSwwwSD_y zbbbh(%MPe>NVCdNY5#YZA=a^E-FZNrLz|^@XN=A?Iv+Wp&SA~cIdj0f7>-HpD%|y@s&U~hy z;Z;sovj+Wb{IP326Oms7Djlyua#z61+6VJJn&zo~!?o%@=P{+#%(gg2=c3wgj%ZrU z_h_TRRq#!5co}#T*Ja=*K*kW!%^-OmeGybaX1O1FcY0~vh^ zY{MyYZK8Z=5;PS$8|q5@`$A`s_A@}GhxP#1e%O~mIy-M3qmr-SQ2`qAj~AmNSf1@8fgSNhxF{ooex z3*a8`0q}3&dQj(7ei799lwSfli!%B$coFy@SPOmy{0{h4@E71i;49z;@Nb~L>-xL9 zeg}M*`^OWHuY+Ac@tpyRZy@*$t_#3#f;OF|lO8(r^GfIz=q_jsG#S!9<4Yi&@AmM!8Px8`GW@CfZMswF>55OIB6*^j4X(>v0oN4&jwM8S-WB zJA_N={Wz%l@B}yr+zhI0JqgYLzYER>p8`|h)8Mt>_rOnr-v{poe*iuNk_YK0z-Pc` z!5@PE2mT2BGq@Fe2mA?mBH@B3eLA=ewCADfd|jo3&Q{ib>N+b`XDo|!j&}O4#l4A;+zy2Sd;!!vz%Ri;;IF{5!JVMh)dRn^-+SFRusT=A zuK!J#wZO2eOhy~HFZWwyj{$!No&-`R%{P|62M2KdDkvR)0LO!S!CBxR!ArqEftQ1S z0cn%ej+pWCWHT(j4HnloD?+K==CkZ&E+oQ)c_ z1wR7fSNdb%3E*mwZy?imgM8zez7OmGJ`8pQp9EEZz7KZh`u8Af{7n7p2I?GE%8IFH zlI2ODZ{3Li8_*w9BQ0IQk z2iwpA6@y*D60kc+JDDB^mVxJhi$U%CRsmiJR)HlTX`C(tmx3$6W#EUv72qu(XB?z& z13wCW9=rj(7yLN*P4Fi08SoR}PVi>%&*1Ig8{jnX9q>+2`)b?;YVVOwU{`Q0*c<#T zI2>FDjsWik$AaW-dK|bOoCAI_5naC$+`#oJkUUS{3w|AZ2;2xh3Vs9p4!8+?2K+Yo zbC9!q(|-n8N0I(FNLzh66C4&cYYj^MpuCs1d!>zn!Z=G*zPplqrsP%fl1MNR;( zfCh4B5~#C`M_^^-g9Xr_sHNf4`Rh8LS8cz}LY7@}D*yFeenW z>J9aR^qsxV1(!YsiMWnY4W#po=R+4k(;Vr$etow;AnMNU0NwGUJI^id@A?w+ybEFO zLf@f&+wz}B?B+p3p-YKdEi@Xc+7B*v_bm=2yjHdtOhQG5x|sb3bSAUTgFcNoDNU8W zN*|@G(&_|AHi*uy$>H7%XbdEKO*~3x@$39}?E@gb)44Y-cqTrjn`}Mx(TB=+Aidfn zJ|DlNSN|1fKJ=T6UltaAbI+-%ojTGp^v;J5~ zrn8d;#SA@${?UDDV&9c_8gWG#aG-Mq|M4 zpz5w{S6vf^Xl#q<`o-X6uCE8DfcLoP?9prZp8}_I-`f2h$phJ^I@eqEO_T=>qg3gP zah0p#kj@cTofO&U_P)xgWJf?cOI+9Dw|pv_Cz)sC$no){px&SLr<@OjMnGf8{akb3 z=WQwRwclwZGT(f3g<~G~<>nD~Jr;mV#yAH6VL0q^}3d!L?uoxDiZ&Pl1)-vtTv&8?Xl44c3C#deIUP zTP|7(M#Nzm_&#tsh)rY=TPC`O>uk<<&n6FS9asIZb*H;&JJoLXz>-znQhTXqLY*tG z^gfI9EP~YbsZPqaR=v|0MX0l$G;ZlhD|$tyE=?qC_8XCe%Zd8q>kknwx|b-eaDyKP z2ZGm`@b*OSrO>pDf7om8+Ya{PygV%yk6|`>WjbC*Aeuz`J<zYq63r&vRKjRi$Q!wC-{xAi zNjL#~1e^^%3M$PW15=>ldNs&CB5CFXqs`!*;CDf#k@y~R_z3tk*V%;G&J|o7T|znW zW4M#(Q{>d&cVxV(zGN(Qx*KK6$3x+@-&`az-)&@bZ@mO@Tkv1;c*ezJ8`p}5Q1SRF zI1^O3HKx+_#o%+`0`TYHQt)|DWkGz`f#UlZ_yU+ssKfA|P92f!MEGskhZ6qY=3ZBN z8y|L+Py0Ou^?=`UouCfx_pgoLQS^VH+M`{de0dS<1HKFn2Y(BW1786Zm*0UGg1-l^ z0$&A}fs9$qd1!kFLc+wZBTpApL-gc>+HB1NPV!*d{KMR1yY}WZYG`Ppxb`` zk#MEG{`oThRCwTd8|(o73p@k-H`o_^2efUHbZ8zbC*${u7XCX9_LXP}Gj1qU$$hyj z=F{Z&v7kz0Yfx=`8&LJ)c(4G>1{Z-RfTdtNQ00aN&ZfMa1m4UwXQ8G)3w8vzfbRo; z33dk6Hgo~same^LI)&?=4$lTTA2mG*WL%k6|I`g+yceAYei%F*yba6&)!#GjOfx=; zdVoIy&j1;hM2thzj4PsEU<=}UCfE_|4Pui-eL!r3s4qAb><7~CMg766!2#e(a3J_8 zFcxHx?ccpi8c$oM$@ z1UMSZCV${1FI7H7Qy}#+yV=@03ldFzGBn^|SM#LZ~`Z2FuCsH+yIr zB|&d$-LXKS`&~esRR+g_r-0+ZGr-4?{L;^`e`r)KJW1N;MH8e23CP56UJ(=FIWSresS)ssaKpUmu5a8S_ay-<5b%6 z?vOCYVZ-YJ(ne{oGAL5Ms~nz3NmDsexzJp$%EY_NgYv+BuZ*}7R_=xl4I_JkqZDT5vhYT${1CKL>t>>$|~+!F8bKNACe21@8sF3*HYt1AYN~4txOI4oc4s zhkpXU$n_iGgP{6P=}!=suW~JW?;%k2V*{xA^EHsUzvyA`YVhk|4fqZ48t|LohrvzY zD)8Ijt>7b|+I;Exw8O7~-{D$i_i<45e~>AIDw{pAGn7J_$B>njS6P1wR9S!8#YJ;B zp&$19ns`69I6t0oe*Dn*A$z3Gk2&~lzm-W4YwKD8YJ=o{f=nBS$AQms-3|OH*b{ut z_^EM@`X2Q~T{7X5ANHG=y0a|9w)Pj!?-#&!@ct6i_+_W_)6Rj_`6qq$TbBg+U>(^^ z?`Pfbkn2vHBU?^=%Vvy5^)0Fka$(={XQP9;Mo{vvfjJJlgMZ-~@#u9>b`j?mr?atT z`|NpgjHegy+*S$Z3GcbJVh(JIgnNcu6 z0Ou2C5;QX~5J*5#QL)9qz`Vf3VP=>Q9a3zE1XIYx6ccQq#RgNn!Gt85LMsU-*kYo+ z&`6^#-e8Nlm_UjNCYWnlOzv;(wf1?>d**!)V0-&KO>=nu?0NTE|GoCt+Gn4A_BluT zR$oH7KJ4fC(l63;bg`|^iDb7u5RTO6AjeJH7M?!yk-py?&2tg@ebM2efAXB}hvEpHdBbtvAI8y&t6Uz0}H7qrY3Q>P+4J#kIFgTXgi`x!K_*6dZqMl`MWfCcG?oyr&lCLrefMfnA=g>sbv%)M$o!Q17 zyk{<<{GLZRgx`%8{+`9JCFH#A&Rr6I(c-^ENSpNhwS}@iDd}*Z1y2cjxDVpOLL5rs z`x7z__7q#l8mEhAjnjqo7S6QrW(#kz@WU3$^^K%=H{k@*`P6WXuG*iqH?OPDX5>--dPH@1qFc#zrq|VHDzfWxea?J%Zm3(rf|y+E zlw?Vl^JmWl-lgu-)n^#e*No9TaE@i2sX5fuXAiRLUWx9ltS|a>^_hX}c^KvL&=uYn)Qx?`N~nlN46%bs0V){rN#F6!$+ z_n>Fj9p`jALS5ZEo?Ul>(@oc}?)lEHE9=q|SfllM(7oE(btgOBbe-uQ>+HIvPB-0m zbZ>NaUFKorAze1z)11BUw4!?lb#|8iS_JN4ZX}1y_2ejG4mhZiYa~z$7J*K%8SDc4 z!3*Fl7*rJm#h@C@2P;7j*a{AUV<4Xk?NMMFSO7Y~Ca@bE1Sh~bFoFyBQZN@Zf*!CH z>;Z>>+~OJmD#2W^7Hk0rz)_H2gB>szG=grh8SDXvz*#Vei7(5PJnY@ z3>QSxz#`BIHiKQ@S#TVj14FrhsswXEGguFHg8kqaI17fd05}oM21~$NumwB`o(E^a zpc~Ku^aF64KN?9 z1e?Jw@H{vPil)=nU_Mw0HiKQ@d2kX8ni2e`9ZYjsC7f`%7}S}Et{wRdoZxb}a<+`O z9I@~JE+k5>%e_4MtfxFjcQNmOzC#I_x;lArha{Kz|CZn1}c=QXtO zqO5jNyO?K+qM1`yLVAKh{2jN&9zu6W9s1)(*lPB+99bUZa-X}71Ra@tpTixT-Z>v7N-9uUIp2F^isNMRejyAr^C!YcAY+9AluRXoJ zcJ$9~*4o$_E$@%9`*2pfYrM&~RaS3vPZpd1g3YgGvAN(ssGO{;xg%Q6)7bn@)TVn$ zlDvGAw=>9#H#y#pkN9`D?aX46``UevMQz^LYCY+umU*~KQ(JS&y3^aT?dy01*OhWa z%gcS3zOP4Zr;ED4K4JK_Z2ETq$o}NG&7WekFN?Fzg~fODg%1BA_TJ25?+o^?irV9$ zaC@DqdvWF4X-}Cyl>!~Vv#((nGcAy@u!OLGWbK&h4s;yO3&&^a7MzCN!SbP7vz0Zr zVqzG>d&Uw@B9uKo!+1hwnA<-xCY;CV7@NmvtcTR?2>YAq2E1`jSMsc5WcEBWU2u6O zFL1_l{gHk~OUJwH*Dv)>|E@4UI!0yJo#%8Hg}OSfWY@jj>E03Q>UfY{cd^r580xAY zXV+cnbZ-xJ)&H{Vu6DXhLS6Nj?7AO~rK|lsyY9!G?k!=u+DEhNZgRQ{+&s9DHteys zr5wQ+<~-G4KIjCSz%FnA90O-TF%47=mVj=s9qa)|!5J`gCi5<^5VV0UU^h4fPJsMb zX7IN`SOfX|<;T{u78{+9oMYVCFfu>_4?6w zSjamqqTe&g_B|I)81}~cOkI0d4qnVVlQ@4>wxl{S>C3#ujz3l zI_4~)i%#Q?xYUdE*Gp|+lD|jMmui0l`qQsDuIzu^>q~~>EB%?bR_HlxCKFbv3-(*M z@L{*+!oAE(_4k~S8a^^y!^E$()c{CEF_)lxw$3bZR0eYGg`yfiZy(S6Nbpw zaiWm0iM&Yo@UxR#=mT#+-DO0VLGsc zcMZ_6iJMjO`vKFN#|cP&KWh2hIK+Ni`Wr3%rz$nRs;`E7>oqL7Qo}D>zFxyoB)u+6 z?@mkaB}?xqOYc6**Gp!<%EGSqDu3e$4WBT*2RZpkx+$)`CA^PoUJ1vK(XfhZSowW( zorWcrzx%D-2M^NtyR6*@GwzChe{1haruUY$(<}5Fk-uo|pECIztH;Bp_k`&+p)C6Q zti7JIdO2KVcC7s#uzKik{iLKsIYt)$?6ezlW`!CUM>t`B>|RkC}X9na1B~`Mi@&CZczjmG3!g@0nJfkrtM` zL-j_Rz1J;Yw^=C9{7E`;-$%lA7QSlzfxX}^zQpujwR}Ee{;|>8{Ry)(&-nM*?~(Rf zp0ShkpD_O3srtLg+G&#IcdXUpHjCfO8kO)4oBlBKw}-7gAGCIS)!J#K)zchn$H%PQ zMw@>Nl@8}0Wz3-7XVWRl5WH{N5`?l)5i zDaSUe*9Wa#Cs{dOvHI+?{+?H@`eo)fcUis6F~2CVe4p}uYW4JViSmY7KE_|8zpG4t z&LRcKn+_9D}RaA-(VXj)>(fkv3$N_ zL1`t#Ek?z3{pGd5B$hpiqTw0eBd^nN)& z<K5g~bVD+}f%D=|Szs7jFhnsPMv?cvV{rGR?-DdskF-yP3#)GFSRR1aS3)$x` z{Qg${I!pgKv;XQ$mA`hah8wLO##?z_8?N!ItzOpD>+eUbex5e}e$LuAW%-hiVu{_C zEq|*le{cByXz7l%dVJOV(3*tf6lXdA8qwM)B4lHR!?O%o{hEod)mf@Q)Y*1bN0s;YxtIp6K~i!G1lsT zrq#oJ7Vfq1%Qk+!X217YeIBXP^d7MOyV2s`uy$Q%>9SYU**{|WTxH|MMr+q2R^MIb z&(GNSG1~h39BbzqtEU=k-__opwd+P}*BYy@+pN6?TYU|)_I$$XBlRB5*Bl$~nyme9 zo}uyEOn#rqS6jP|w|2eL+Vw$e*PAVWP1cTIwsLQ?a@=R*-YeF=^ZfW@`E9WLmst3U zmHQD38!Rlb@D&?RAF(jy>&xt{rs1XEHJH4_!UF3@Z&~}yvHo2(P4y>PeRWwmueWln zGrc;CKV|*ma;vwOhAID-R$n#df8(tmzG&n9z9FjD-`eLj`~8O5f63anV3z7VVf-}~ z)>$~%#@)l$sNR>Yyagrt`w{C`N37qU8msYZ#%MU+^4s6W@disbW#dcA(s|X|{b8$@ zQ`afK%Jk+Lf4q%XPg#4`S^tpdgQOiEHG6}tyhrT3vfAQDnqNFJS@lO-`Mchyzvo%~ z3^RW#F}-b8o;R%DK5g|f+Vc0XwL_QjUbFn%X?CkD|9h?fY_xuovVOG9>g6%3k5?=| zuUY%8vV0u2`gzpK|B}rI>#V%@TmJK`e-v21DlmV)&D!fN%m0g(?q2J!dFD4YmXG@^ zOqsoxE&Ug*U%z~{*4q(ZKjr%S;aaOttDl#wejc;>dD-+Hu=+_^{k&YIyi?xKte(oO zo+jCNdc^AMl;y9^>_0~z$OEHoT&c72J!IqcHj@v2zv{hc<$A>G@gYlpwbf^t)#GTZ zzbDMj_4d2O>a)M~*E;J@Z&-aEwsM`aaku<7ORQkm>)1PDEDyy$NtLGQ3{M)SF%B+4?TfMz#gfrqr@V2N zuKj-5^831tI|T)WwF3s^2l@SqmJI4smw)Bl9lWe!LBT_Xg9i>6%6o@K z@=lt(plD7{P}~y~Ety{&tSc@J3JTb_eQ8kJmkTS|8(#W%!R#G9ti@8k9w{U8KKMv} z-medcyl8eH{GgWntS_z0%j?H$HAH@SP*B*XC@5MPd}>TjZEyg2&(*9$z#lju=*g#( z&i4Er@B`$;6%-T&R}Ls9{mV6fvwMPZ>w+Rl|MilhqJsPLiY}$jhOR3bnYCXFCZK23+2@Z7~oA({NiO-A}FqvoVzEGgB~^w^w|ItX+F8iLv{_%@#g2{ zp5cU=KI|j)F6w5bN^n zygXAkAIS63^8DN;uodhCkAr8yaquR{$G+^b8V72@LeL1>fIJ(%1?&L3!IR)1cpe-B zCxPtMA9M-#A_05l|PL!7i`|90Etd32+9S1BLjre9w0x zs0Q_5K3D`gK@Zpjc7n&je()?f4&DU$jKM`<6c`68K`odI8bKRa3*;NHPlAI$zBhXe zoCIfqyjyVuCDl_dMrb!U>cYWmVj=s z8SDakz#(uH6yoJWK{1#JszE)N4;F!ypcC|ftzaj39P9_rg5%&ccoP&cKN$tafl4qJ zECh|94Qv2gzz(n*90bR}NpKbn8bZGT)4&3-1ayP-U_00a_J9N65I71>fHUA6n8^9A z8q5cafcw@S;U*y8*V_r?yLtP;v)~1A9GnLEoZCl%ai9{^f=18=D=z!tCr>;_MQ zgW!2^44edK0UIEKL7*9QgY{rD*ba7qJ>UR13QmAC;2bFA953I3D+UumHK+&k!6MKJ zdVqYpZ7bLb_Je1^ac~;Q_to+__ZNY2pc2%Ag`g3%fwf=**aCKd-QY=Z5Ihf#fs^1Y zkc}FHzz9$Zrh(aD0ayZ>K{wb8wu4<@4>$ylf)n5jI0p(xQZ_IV$alf#gO#8Y^nguZ zE7%G4gJ;1D;5ax9-URuagNwi@Fb-6LTCfnbfel~>coIAhPJ*+5NB)CBU<4Qg3wZQ37z9RuF`yJo z1GB*r&<)mu-yXmDHSo^hQbtqvt!>WoGj5vqp2ag;I@{MQp5NNk(kbtr8tddtLvW30 z%Uavk%0ilo3BX7$4Cool;s_T2_@xbGvhJ%OhOXG466nGi`ThARFv- zYhBdV&_MOe8`JvJNONc)8)q~1HQw~e8}A}=d8UZyyUnkytJ)e`*4)^z3UOE_l^c(I zdETDT&Wx-)l`F5JRNhag_RdD^wXJDyTCuV-w52lRP_dp<${be9G=u8T{h3x$H_-|YT#a!EnZ^w^3`j6imB-3@dmLXnIC-s-fM!_Uw5oH{Q}TPu3*5J;er7dXML*OgRf85)wT`0?G5Pd0 z&UC3`-_M$9o4&zKEw`jv8s(`Xudnf@PrZ75d4E;kEd5gBO`p2FHqtNO5lm}Ot!lj| zH80iDHK#MRs>5xnmCu%i_N4spuz5}u=XYOzi68Fjj1T1U<6}Hac0|gmGUHUI zIqMx~PD@9s-Ep9V^`kQ5FwS^8r_GKuz1WFzRA!t8NlV8uS!)~~bhR}yGDY<@-t_6~ z-iE9>4i7S>>tViBW*qvw=R8lR8Xm|8z;Er<)+#d&{odDaHDki?pt-eyINuf;XS(Fp z>mKI{gMQI)4{=^s<4l(^!Rt!@E(rK~a7!xG)i|eHT0tB5y4ge<7i950jW_*B{YyGm zINy=lpWn-OuJG3t)W5HrTE~&`rZ-1rT847kz?VV%+tO|${5cleeq53GKFk4b z?QCf8 zbX4EvyRefT{_X2T-uKfd%UG-Nrr((EGg5~mgJ~>8h)c*krFY$r^mQMZ z=L>H@FlQCdbjxWt%$LTiof_8%^!zxHIve1|Pnk%i^)=q~@d00sMyD_1W~RQzn|@>- zv^`8;p4_EJtV;I>l^G{84>}s!=*>}?aUy+gDD7zFkg|v6)_BvWkNa}Wb^5Lx8TuM; z`jL8-IfFTNc6!}MpjcGx1PFNeyE6IpkV=c~0Gy*Vl~PQ-62`}%S)zDLTT@unZ~ z8@Z>hHZt`!-t;4WvolN|ziGX+^+EAHska*6)&_-{L%8Zjr z=j&W(M`vfgt~B2Cm#6h*pMus^roP6j{?f?#q}l00akzDbW+|*El^G{;KAFv42Q92N0k{T;y1FFBdo_5M`gyrZ~QgT3CGF2UeY+zjrff0{TPsCj->IX zAMqK6VthgRTJP&_l{rpX74_wPW}4$jef8$3%s7#{lDXiOT;DIAv#PDRX<3u}_I0H) z<4{+=+{Ya!v)meIx{*4n&y(~sbv4d(BXzXP>B>C0wFCDG^P%ykPaQ?)@_Y*_zBntB z$@2Jm8Q+p}_aIBjo9CawMozx-WA$&gr7xqc8kH7nNR6XNUv7Rsc*>dLJ%_r5q>KUK$)AMIvlE8Q8N#(1a^7#aL$Ul(8 zcjryztDf;`7jM5BN649f`nWH@>KUJQ@qF1=my=I__k7heKJDW9;|db^6x8!o&-k>9 z=kG}5r?2%@&-k>9=a1lApELhu>1%$~Gd}I&`LeGsH$Q#tuX@I(T|B>#^KEW^dJRDJ zj8D6GeorF5Dy%=%Gd}I&`EMrjr-XdfGk(PXWlv)6{7((}s%QL&|I41m-2Cd0uX@Ih z`2P~l!@2o2Az$^3AMty6GU-nDp=BN9g>M5UW zh36~WFBs^~acy#cutQ#2ef!t~Wn$=RY$qYD4(Cd$n~@1@?NHh$cTprHo3>-2d!xvFE_ z$b3?+UA6t;${ciVs$~T?t$ZI)x$z?N$?Z{_S$HZpUSxiBEVL(ulN)U5@~O-?k@?XG z#%L{HZ;r~0!?-lT-Q%h<=>y7TxAuQtpr)z02Hu*GU%(r?yZyKs= zX+*{+S%0(o%}8TGs%3t2SNb|n^^6}GpX53=TOQ(k)iZu$x(sU_U+UolsZM`Cb3v-R zbGBRlY{xCbdQe?UBb83$V3>#Vr=hx*20rZPtAjXC42;b|HBNOK@gYCHv^m|Ct*v+W zZf}(tC*nUtIS*((FIdSK6TMX!mQQtzi~o3g>m4`yeF&8q2fy*0(~gt2^>(<41hwS;uGG_3aoL8&qZ-e8-PRm7E_2+WnFU zEvyrj8xQ~Syt9tiAYtetXvro+N!OQZ|(v4?podUIquRL#}D@4920B z%>8~UHy-}sdG+jnAL#CLW;VJXzf^8KYT1vOvVXo8Pi{d(@~S$KP(- zdhf;2c+-!Zvtw26WYks*Lc&%FMT=Wevg%-*E+Y#j1%$2F||ZzR=M#aJ~)&)kCrL> z+PKP%hY$KZE^s{Q2ff$1Rc0Lg&vQ11wt90^W*q#^a}I@edarY<%s3IBD`Z}!W$MjQ znQ~-K?E6o><4Acj*Sa;{^dtVZHnfqcukofIIlt`*)9<~`tuo_8{6_YMXgPXwRA!ur z-%P{_wI5`zb!)uoNBpMI>5Fe>>TA5|NBl&rb1t*cCZjW>P##rG?@hvEG)zBaBh<19^cPT#IL(an~ci#+)q{J+)ecy zzf8Uf;@e;1FNw9k#;L7R#ueYkwmV(%$2lF0L@W_yUazR!c#JQeS4cfy;^s)%c`8?) ztVw%+=ybf~Ju|9fT>9M&cHO^$LR|9i*bA+EOE*?ug<0yW(E5ILq)!%;|H9zjrk2Lm zdl%1T*BRC2#{iXS`qlJFUsrN&Dzv@o+4h{P+<5d$-w&R2yp?NMiED0Zxtq@}tnNz5 z4flJRR>+oAZ&&qKK+4#c1uy(})V1<0-N-eo^uxSh2HR9R zQ(R$p%2s-!!m_Abd8M?yuR|GE_+nH#B#_^mU+e*&B;@_ z@n~nyTR=PeeAcI$Q?9}z`Bb^_B5i%Z@#-2IXWqjWkMu%}&!@_bM_c=GOUm8Pjl(h@ z$h?26GUZg@gPya6aiyR0!QLE|DM$88dJYa`c4qR(VN=F_Yn2&?y7%LWylbIf%s({F zbR+fsywg?xDDw^ysW+7ykNWmDrcua#!Lp2Vu*R7#b?nE}9ZpyFOlQuWG~VEkzkZEzQJ2lT^J_N}zPdqQFc`wCZNj*qHqY2ZKJch4|Sh^8@{eOak? zw=&=o@clvcj34on5v^#YMtd?kvn{X>3~7z{66D=e2fqq~@lUcTVr>>}+k(N1MVtE637`%&+7f4*i12 z_S;A~Rc0Lg&hLZmzFas>vLA6~dwWjPp>5T-bnrvp_vJkgmd>1(<*ivu;OkFyEe-tB zr_nYfOyiD*_LjsnRM*nLXMK52r_-oUE$v#7HIYcYsJ^9xFZ*#t-Z3HV(n3G-`PMko z#b^EbQr;QS&(71cVBE;^rti?6t2)NTU%kIi9G1zQ-=4asiPn$vRnPeNt+&0?@jJ0N zy|r76FXmZq~Wvi;wyGl6PG&J~k{(HBVWpja%Q^#ST1MJoS9l zQ~nhE&5v{P4vc>8xf$|1vpcn{EAts0l^ZYOTk>uUWIwMRc0Lg!1w9xj?h4z78$U8&&ooBwSI>x2%`T87DBHYC~F^)_)eHm45JkD=7_-i7^d;8CaZg6}{7ytBg ztPxjBetKWCYP{-C#UH&t?-(Qc(=sQ1vd-b2tW3AB>KPxu^!%Y?bMnzj^HtCI_^5BU z4ayHEFr4V!KD8;lEyLHL>KGS4_1tqgx#>L?s$*RI)pOgfb@|R>H@&|{b&QM8dhUsw z-1Oca)iEx9>$wZxoy%@|Uyte-H*%gkl#`p@)1x}Z#ecos+Htw;ruXxxj&URBxIHAgIvV_baM+Z{JPm)-O}9@Q}}KJEL~_MBWZAiDJ+$YPhEw_5@OOBqaI>yBheLr|I zEhT}FLlQMwf#c}Nb~Qwg%~A{&;2cLJHb8c+^~tMDK?_!a-LMCXpUtbm9yIb`x( zg-4SaIad zV@<62Rn%2fR9DU71i&Hhhsq3HwEg$apcFerWb$xwJS#_P8g9#@& z?a}UiyDsg%Nom`PUrqJYsZ*`;nVaC9*G5%vj`Nfp8>sZ$Hf)uL+Xj>U z6ssestShaXS|b;O9LZ(5E?8(zvL&&9M(l9wrjz#`b_7$aDk>|dR9S(N?Mw;Ybh+Uj zn}oT`!~N^Y({5N6)J>gLIkmF1TuI4kk8$sV7EO81DtFpxA8;n>XVuk}&z#{qYqE_= z?w#CXBRT(>HWs^gAn;Ldw>74`l)J?nj%<*b7ZqC(| z&#I}ZsdJZk=dpW@d#||UZ%ktQr7Kj%3F=p0eUpBGqNciTO8Lwh?WxISEe?*`$!`l| z>IIiI<9UsWikc}ircbq2O}6*0V67C8BiS!vWfT{$nNe3>S~~T@{BP{rwv*|DRr0mo z@~Voeit-Ec!FLCpTD*%cU(Bwoy3uc@mzP~oJC1kn>KD_yXvDYGj+1X)#T#4f!Pv^W zy3#4tvcF7@X`cwFM@=y!D^ZL2Gt%=7hVclo%tf0?}QGaz%HstyVkb9o-@;(6!Y*XX>y z8z1%uw^?|fiyS{W-~#?juG0!WxS^W)S=w`9!>Z;F@L&Rq+o?v`YQT$gmZc_#QFB^Y zJ#A@dUckTLd#_RZXd=E1m8VO}2e)@H}II9P<8B%Z5hqe|nB6`%p`#*VRp_ zuV76@j^uR90(l-tj#|o;J6%0Lx%c?U8#ZdDFl(r-Zcrl2?@ON1YS)7 zuP%Wn&obvK-~0sL9SOX}3B2VAyp{x>e9J0VKJQE5txw=>O5lAaf%m5gyw4}_zL>y! zB7wIrfp;K*_iO_1y9vC1OyK=f0`G^&xMXq%e};$n*w2ahvBkt?FEjSOB1#-_**6*6 zzNsSi0jCd9UyIZF^^CaeL1f;iZ5VT8;cZ3W`%+xC1DQW}#ARPaw%xK2mwku?`AnQU z;`gUB1!C{1_Q8dpWYD zIqYpg_P!jl?;;zML-uoI{d369A^U}8BA%C@aqW^TpZ%Ea`SVJgH#9+3f~+J*UZx|< zrUYPK?3g&6L_CW;Qes|PrmV;tG_&& zz}ua`+mpciMgs3|5_o@`!2A0I-b)F*SCIL8x^dt9w*=lLe6KoJzaD_hZoP%)c|T4J zN9NDZaeJc@(!3@?HUU|#_A5vBJsTtA_6ll)U|$Z|H<9`B4KN)EWN3V*Hf=91JB-Yi zJuZ6*nLk&>Wj{>d{Vaj^>jc@Ly4+>B0-3L~cwVkb;9Z@-n~=aOOW@Tc@M;ryvlDnX zCGhS@;C(oOw;b7>fgbTX`xdgE9J2RMPw&Nu^KM4w&*5=dV}k5nWV!n1?<1?tk(X~G z`^y}%&KW`QS`Jx5eGsh5A^SUIjeS%YFGKkUa`*Z7BlGtu=Vew=g7-f zku~LzjhLOjeu$?z30c1!yvm4-+X3N`$6xP5##T&s#AVBo`LQl8YfebB1DU_hiSsrj z$R19ReJw%uodnsj1lj8evc7Y2m*J`eSt&AKXMP-&%9XmFg6wiv)9EqR%RYc?NDkSZ z3A~Ra@YW{q9!TJQ4w-Micp3H}^Zm@93w#;A5wVxvW2R+4lpuRKLH3gb*{_lLyu|JG z{b2fjPFz-)ARBn1U=6x*A z8rZ(;(kJb_n(Y=sQ?9Pu*jn42!&P*rjNi~1Lk`F4oQzKX2Y^y9Lh zBJ*t&m%W9|kJEA4fO)!iSCWm(RwDak4tqaCMiJc+=Usne5G>9i+m6h)tv|nrs+9fD zk@>R6WnW6*eJz3ab!6q1mw1||kzJZY_OA)D!kcpEvk2LM9BE#eARB{>rD1o(^SJ=o zlR0FA=BM{o$9d(*Dy$PXzh@xkMSV3ge{S^anO?RL*=6#B!|TZ3 zc|qlkTao#89~rPk!w!*s4w-NFxa#$B=RR%pGyro5)JC%GeKcYkGd> z*Azrm%02;^@9S~d4aj`EUu9`a(1(A6T|MW8dpKsJD|=Yvi0(}p<#LtBz2O4J)PB^- z0ItI?rA~{OGY(-K8Ooe&IP1tG*tc^f`}ju%qgmyBS5Qp;#8RI7Cx7|BH757}e@#9{ zl0VsV+K0bopZ90^Tl$;${*S<=+^oKv_^p6tdgt5C=*V$BvcKVPNkeo6qH{4v{d*V9 zY?;y8)!wlv+{VMBKm1*JW2$peY-7~2j^I25+ezBZcBIJ{rG37HBiq|AAmQj{`wLKy z?76+boXalbi&Q;d3H?U$3&=03R?+9LsZ}i*fDW>i#Fzz?R8nd0+kfq&uYvPrUNE%PPyCzUf;Z_*l=u zg1Ysoe6AUIW#irQ_Lbl|c~f#na9v0Hvg=m5HwZ0lZspy=E@C+^it4zo@x6;uEz8`X z+}yh29{2pv^450#u54jYZqwIg@x;a=UTNT-q?p_o@#wde60b+V;4+>9d3#BK-DYk*eaVH!wSc)|u>Mbf@+}GFSj!(n2>%Mm zL|HZj$i5FER?0`32D2iq)yVla<# zR1>bKOy8Txr;g;^dW(pUVxj$xhe=!Ze4IKzja=IHObL4}=@SR|xs&E9CExP*dN|eejV0)9{ay6PdoAgWdM6=z z3uo#6*%8Fab%*Sqgc4jr_$$I+1DVXo^=%*U7C+^Ag#yqQ^aF*UKNtW8f8{d6#SP>-Q@Z#yU<{DGhS!3318IZtU;=m#m@ zaj+iT4?Y3@5NrS&!6(800Gq%A;8Wm_z-I6u_%!$o*a98`e+)hgwt{WoPr#po?cibX zXW(;S2Y3X09{f4j2_6Oi6MO;e0*`?&f-iyH;LG4E;H%(q@C5i8_zSQH>;-=b{t7$^ z_JOa1Z-D*aDez73EpPxl4gMPZ4LAs%0pAAS0ndWxz~6%Z1rCA3;P1e9!Smn<_oYxwDRy#HE&;Xmk^1-Np}*u15w zcU7}LdrLK|no+)7kaP6apPi}cR?So|m(`kODtdqRW^GN^)_+UgUNK%%%a_YFT|f2o ziFMr^C@UqkT2a>3NsnQ~`wgJC8-+us_e5S)wDN7OTr}OFgmOjMtW|y!tza1t*T{9vCym;!~9bCeqDf<{e0(5H2tn&zV;<3 z-8l;rTb5Os92~5!Z>c4vDwni%)2JF7mb`A12JdR+jeCPbx!maBJ*A`%R(u8u&;qR> z;ARHk`to+wQcLp7Nc08tS{oZvM%G70^Am+(H8(!dIoWcr|0s$DP?rGLrt^GIH`Wz> zKa}_=ue2104iuu^BYO#>gKN54F49Jf`xv~~T3Wxfi-S>7%lAt9hGCWzt127j=3q%N zU#nFHa6c=Ej5STytZlxh4OTttL0EP6(7~m=P_|T4S+}%1NdE;kbvHsgr(3kiUD`IE zw$I+7Ts}9b`88;PAoOg7pt$HEWX{{4hO$Pv`laaFs%i&Ab6;gqgBA$EKnps0CXTV7 z4#5@8(p4!1&r&(sCXDBD@9apCA3MKgI$LN#Vp)4bT`^`1+<~$s#gXBnQm!fb zWtM4cC5q^hT1A>gqo_(JTA^)5DcetOYu45ardC19v;Z&GAu^@w#@$)dsDwfS$k3AM z2@r>4_CYUOifPp<*ATQ6Hl+3d#Ai^bYA&yvDn>n)X%7;8%%iu^lpsVFm3vwVbtn=^ z2u?GI%_^3{mA+?*ArStXLFSkU_#?Tb>d60&x@^?UbyXBW_`f<_NQVN;s=jeC5DtVh z=`it#pc$N|ng~NS2@t)etf~5pp&O>~zxCFqPvO3vjo>%_Pxvd=(iRi@#>U5I=jZ=| z1p>*;@d(+SnlVZxrCglGu&b3ftFZ|5o~Mw}_ZZMCHA`-$7Vz{2T2VqK8Aaa)(fPA< zItpD=l?tW>C(3deRrv<`-P6yz%GiN{Fz25HW5?kiOG2=Oyz|8T z?>Te%3KL2@AjKZA;Oe}ltM}_okLXi~f>6H8M*u=k}iO%6buT)O-9K)};`ZuOpKp-Gw46Ci_X z4MaKfHZ;d!-q8jL+VDly+*B7Z3nHhs2Q0SAA8^(0*TvsuPpO*~-Y z{Hms7jB%_!5Yx0I{(yy6r`C)b?bGRfPS3$Ms)qO)z|ad)Iu21nBw~A7A!&rkJYq8Z z32QA3y|WW@Ku5@vqMx(CRLwGg9K`mFfdsLM$01a$+*GVBVqqgsN_@n`2?X_MfA00V z!$%5#PJEF;1Ipj5BRs#)g0y@R*T+9#Av?leW>WNH7PzKvSeKdj119`!9aBa-;Ex~= zczx~gKFX()LM{Us4G~x!@Xfk&_QyIPWvTb9HRB#3i=6O&J(TeH9?91hHL-X^Y z=zaXyLKSec==gV7=(=&+RM73E6W?WRGh2A*>v$@2x~^5KS{0v@vAAEjr$0mmFoU52 zo$y0ff#aQ!u2yD@TG^T^7wtHN?$&+`Ng#H^)DZJ_UP&K==vBki-oTtjc}!~ih{Z>bk-Q?qtvgsBulVIE@x9B}hv3p-mneG!<5JJbIQLCzSzSA|! zGRm{Y-LiE41oUlixgNjOJ?PN5@Q+z*egf+QLM#8pHK;(C%OtxfV~Q(=p|5Ba>0B3_ zu@%i$ao5%CWOhxjsoBffvSDRyk!leE68+3YgpI3q+T3&pM6ES@JyA)~@34S_4)Ob} z<#}9~=E#cl&Ckz`jgIAJxew3=bA6f*Fxv&)eOX;AtJQ2#t5$SnTPO&N5kYYJIflDVe#j@`=WY~DpMh%L&M^5(yz z2m3QG_iL;G>_a}yC3HZDL%DzwC}oq5kELvi!TWor@C^)V8RV9Ub;CE@JlWO_F-p|a zl&HDgbmhwr(dEytRi^V4`~lworqAF=9XBMVxr&0SURVJC_Q*Z;* z74_3J{1`t&AA`3P%2BCSKhGh4)4PJj^w|jAqv_w-NGo*l4+8R)-(5Ob6GB@g{M-q_E8ke3U;jTg?ZNRO`_Rgb{0dtVB; zFX9U3!m=94@{nSTNjOHMPwx z%MLS{o<8b79NUFOEQU9=vXtmU7|G~o^2pg8@eL;2LNNax6aI~EVn3p9|3lwa@Eex> znUnU^$}7nmcT_VIKT9;We}zJ4 zdF!YB8Muyx`5az2spzGv{WBo^0v$be4u0VVk*ChVsfL3Otxl_`dE>$TdfyIvrL`5W z>Y0x7#4tWb4I`K1dCrm3U|TefUwD6^X!R7jvDDQA?TrY9t>rr!7ReZJj}n&>r{Omt zLj6sM*eifPc~`zzi0J5o1P>8D%uc??hK~{^bi4{W#mLbDf#djlIlAN9jw4Hlciz}u zjvBy!!aJDnC^QZgs6P2A3r!n%eJx#Pq4dwFx4>_J6LWL(Icm23DK$7AvEY)b6u0@s zj`}ZW$l0kQNV6~ONMo_*v=ODq+gSUIq&g|MR?1->!mJ2 zM8{?w4FY*9(e6`v?eTsdzA=<4Wvx=9zO_-FD=RpIDTYG*6i3CsWOh3(B4XsjE=Lu+ zY2sgF$%L`FZ2<6xQ~0cGSJX2D@a9e?CDY?ZB$q*W6XR}j5b%fSbg9Kb-Zj6F7K7K+ zJF1RsGw~cz*l|1<$w6>#Y3at2tT5r9C==uXe>5_In1^q}XDkyRqUTQZj}8I0fZ)#< zl`ACfaWTPg4gw3;=WjTSLk^=*lGb83X?~o(_Fqq$&CX4~^ulfiw(wtm_|_AI-=12! zzI&}Fe13j@DtEB(`KgtuYr7dZmg59?|HY{s#Aa?R-dvhnUS7EIm<~3JPe1(>S;Xab zzU}tze8Qyg5VTSiAE3jqpZ*JzB12%e(=mr!erQiNr)5kRxYhhJ!BE8t#PPRLcb7Q zvRLEk#mtEjn#iPaPJ>kfrfp~JEyYG4xM2>=FZ~hAbd17(F^DfCw#%FIe3&S;k3#(F z)yYz6vRailHa5`HF|U)@&_f1z&FB~-g>ibM>nmyr8$OmQj)Cwk95XmInAc13>aNHK z&fvk{34PD;E-}dOaAck?IMnP51S}os;cH=l?LR7hdm74A1C#+={GfCoOCL*L%YkdnRO~)s2HKg#u zjzh#*%~W|oDn%zCfYT>zK0AF%V84%vf>O#eD3rJK*LXUzlM25Uk6;TKYibJq7|gMc zLY)I#!e^}cA?k2>NNZ}<^Ca{x5>n$nKjt*WLzG_EwFjg=pkPy@U-Wq$?)5#l9wgv(-3ZW zfal1ged1i=y>bwT=;t0Af8uFj+n>+*{e$#OdJ@SYGOcdmbke}f$0YPlg>bfg>EIbW zy)YnOQ?_whBhTwKoCg|rRF{i@Gw(M%&3}A#C5^3nR0bAurRPgLBC0YvN_-mBTo(+r2xBYEe_dLH1>>&y4mN*FXC={j6Co0K$8-LUdrp9N zu+9_9_HKwfT`OLVAY&TKP@B?Wmub5~{i^5!wyKokjk3NS3SFTJ$>W{tA4aeA_qZg{ z74$CZet`#)DR|cnB=ISy3Fl6Esrh@b_63xXe#D}b`m#>$YZ58`jL+5@{c~>PMY8dD zH>4dKeVLQnInogPWUJ7P(VBjK60QZ*sH6=WZ7`Dd-hZ;7{Sk{h=^<+e@OO8ikHA0EPpL6X(5I8H!mEZbOc|Cuxa-~>)sH`lcaPvPR{J+t|QCmB2Ez`BTsI)^+aE-!M=U}$!{HHBAZf?C?Ljj3ryCUq-+tE#4rPb!1j9}GkL+@S zC+kl|%i;AO*`>c*@;G8$_#Z+4(I)*z9Y!wl57wVR#Otd=zBs zHz_?vN@FEN)4~10LYH=@*lSYPh2!3spCC!T)ZlXPrv{Y!IO<27MBp|PTroCkCYuZx zcXr)H{lSJ%yjfJOErTXXe(&Aef=eXI7jL|!WP%I$Jx$o1%WT!3C4Px15P7`G=N#SL zuz#@b$w&U%$RV`9OwxP~+qlX!#rq@Z|6G&)qic@-F5;i8KMvxY7mW^~|MMix2YX!X z2y|h81l6w)v(ywebZF3yZ!h3QjU%6cvp@2qk66GV_QSm)Ano3Xe0GrQDx7Wy%d()L!n@tRVTARGR( zoUvOj;Bn%l!ZE{jfrHH;_w|$$#l%%%p2k>SPjvuLlwOENYNQ^-y>>n0GyenyTd8`|6y48T9uCP8ymWg zuj$>=s?KZbQeqZF{!v%)LMP49g5Jh!WP2`|^DU9Y|Kz=32i4fTAfr<6W1DOX$9B}y k#R;!t){A78|31(l+1Cgu@qw?W(X6kOI8YVpv +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using LogViewer; +using Microsoft.Expression.Interactivity.Core; +using Microsoft.Expression.Interactivity.Input; +using Microsoft.Expression.Interactivity.Layout; +using Microsoft.Expression.Interactivity.Media; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interactivity; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + ///

+ /// MainWindow + /// + public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 31 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridMenu; + + #line default + #line hidden + + + #line 35 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Menu menu1; + + #line default + #line hidden + + + #line 39 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.RecentFileList RecentFileList; + + #line default + #line hidden + + + #line 42 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem MenuMergeItem; + + #line default + #line hidden + + + #line 44 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem ResetSeparator; + + #line default + #line hidden + + + #line 51 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridTopBar; + + #line default + #line hidden + + + #line 56 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid spPath; + + #line default + #line hidden + + + #line 67 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textboxFileName; + + #line default + #line hidden + + + #line 73 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCountAndSearch; + + #line default + #line hidden + + + #line 74 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spGlobalInfo; + + #line default + #line hidden + + + #line 75 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.FilterActivity FilterIndicator; + + #line default + #line hidden + + + #line 76 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock tbFiltered; + + #line default + #line hidden + + + #line 78 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCounters; + + #line default + #line hidden + + + #line 80 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageError; + + #line default + #line hidden + + + #line 81 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelErrorCount; + + #line default + #line hidden + + + #line 88 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageWarn; + + #line default + #line hidden + + + #line 89 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelWarnCount; + + #line default + #line hidden + + + #line 96 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageDebug; + + #line default + #line hidden + + + #line 97 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelDebugCount; + + #line default + #line hidden + + + #line 104 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageInfo; + + #line default + #line hidden + + + #line 105 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelInfoCount; + + #line default + #line hidden + + + #line 112 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spFind; + + #line default + #line hidden + + + #line 113 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image2; + + #line default + #line hidden + + + #line 114 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock label3; + + #line default + #line hidden + + + #line 119 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxFind; + + #line default + #line hidden + + + #line 120 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindNext; + + #line default + #line hidden + + + #line 164 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindPrevious; + + #line default + #line hidden + + + #line 217 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid MainGrid; + + #line default + #line hidden + + + #line 224 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Border borderTop; + + #line default + #line hidden + + + #line 225 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ListView listView1; + + #line default + #line hidden + + + #line 258 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridView GridView1; + + #line default + #line hidden + + + #line 282 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridSplitter gridSplitter1; + + #line default + #line hidden + + + #line 283 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid bottomGrid; + + #line default + #line hidden + + + #line 318 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image1; + + #line default + #line hidden + + + #line 319 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLevel; + + #line default + #line hidden + + + #line 320 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label1; + + #line default + #line hidden + + + #line 325 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxTimeStamp; + + #line default + #line hidden + + + #line 326 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label2; + + #line default + #line hidden + + + #line 331 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMachineName; + + #line default + #line hidden + + + #line 332 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelThread; + + #line default + #line hidden + + + #line 337 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThread; + + #line default + #line hidden + + + #line 339 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelNDC; + + #line default + #line hidden + + + #line 344 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxNDC; + + #line default + #line hidden + + + #line 345 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label4; + + #line default + #line hidden + + + #line 350 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxHostName; + + #line default + #line hidden + + + #line 351 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label5; + + #line default + #line hidden + + + #line 356 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxUserName; + + #line default + #line hidden + + + #line 357 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6; + + #line default + #line hidden + + + #line 362 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxApp; + + #line default + #line hidden + + + #line 364 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label7; + + #line default + #line hidden + + + #line 369 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxClass; + + #line default + #line hidden + + + #line 370 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label8; + + #line default + #line hidden + + + #line 375 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMethod; + + #line default + #line hidden + + + #line 376 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label10; + + #line default + #line hidden + + + #line 381 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxIdentity; + + #line default + #line hidden + + + #line 384 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6b; + + #line default + #line hidden + + + #line 389 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLog; + + #line default + #line hidden + + + #line 392 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelFile; + + #line default + #line hidden + + + #line 397 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxfile; + + #line default + #line hidden + + + #line 399 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label9; + + #line default + #line hidden + + + #line 404 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLine; + + #line default + #line hidden + + + #line 406 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelLogger; + + #line default + #line hidden + + + #line 411 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLogger; + + #line default + #line hidden + + + #line 413 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelItem; + + #line default + #line hidden + + + #line 418 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxItem; + + #line default + #line hidden + + + #line 422 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TabControl tabControl1; + + #line default + #line hidden + + + #line 424 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMessage; + + #line default + #line hidden + + + #line 427 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThrowable; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/mainwindow.xaml", System.UriKind.Relative); + + #line 1 "..\..\MainWindow.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) { + return System.Delegate.CreateDelegate(delegateType, this, handler); + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 13 "..\..\MainWindow.xaml" + ((LogViewer.MainWindow)(target)).Closed += new System.EventHandler(this.window_Closed); + + #line default + #line hidden + return; + case 2: + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.openCanExecute); + + #line default + #line hidden + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.openExecuted); + + #line default + #line hidden + return; + case 3: + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.exitCanExecute); + + #line default + #line hidden + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.exitExecuted); + + #line default + #line hidden + return; + case 4: + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.refreshCanExecute); + + #line default + #line hidden + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.refreshExecuted); + + #line default + #line hidden + return; + case 5: + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.filterCanExexute); + + #line default + #line hidden + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.filterExecuted); + + #line default + #line hidden + return; + case 6: + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.aboutCanExecute); + + #line default + #line hidden + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.aboutExecuted); + + #line default + #line hidden + return; + case 7: + this.gridMenu = ((System.Windows.Controls.Grid)(target)); + return; + case 8: + this.menu1 = ((System.Windows.Controls.Menu)(target)); + return; + case 9: + this.RecentFileList = ((LogViewer.RecentFileList)(target)); + return; + case 10: + this.MenuMergeItem = ((System.Windows.Controls.MenuItem)(target)); + + #line 42 "..\..\MainWindow.xaml" + this.MenuMergeItem.Click += new System.Windows.RoutedEventHandler(this.mergeFile_Click); + + #line default + #line hidden + return; + case 11: + this.ResetSeparator = ((System.Windows.Controls.MenuItem)(target)); + + #line 44 "..\..\MainWindow.xaml" + this.ResetSeparator.Click += new System.Windows.RoutedEventHandler(this.resetSeparator_Click); + + #line default + #line hidden + return; + case 12: + this.gridTopBar = ((System.Windows.Controls.Grid)(target)); + return; + case 13: + this.spPath = ((System.Windows.Controls.Grid)(target)); + return; + case 14: + this.textboxFileName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 15: + this.spCountAndSearch = ((System.Windows.Controls.StackPanel)(target)); + return; + case 16: + this.spGlobalInfo = ((System.Windows.Controls.StackPanel)(target)); + return; + case 17: + this.FilterIndicator = ((LogViewer.FilterActivity)(target)); + return; + case 18: + this.tbFiltered = ((System.Windows.Controls.TextBlock)(target)); + + #line 76 "..\..\MainWindow.xaml" + this.tbFiltered.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.filterIndicator_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 19: + this.spCounters = ((System.Windows.Controls.StackPanel)(target)); + return; + case 20: + this.imageError = ((System.Windows.Controls.Image)(target)); + + #line 80 "..\..\MainWindow.xaml" + this.imageError.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageError_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 21: + this.labelErrorCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 22: + this.imageWarn = ((System.Windows.Controls.Image)(target)); + + #line 88 "..\..\MainWindow.xaml" + this.imageWarn.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageWarn_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 23: + this.labelWarnCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 24: + this.imageDebug = ((System.Windows.Controls.Image)(target)); + + #line 96 "..\..\MainWindow.xaml" + this.imageDebug.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageDebug_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 25: + this.labelDebugCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 26: + this.imageInfo = ((System.Windows.Controls.Image)(target)); + + #line 104 "..\..\MainWindow.xaml" + this.imageInfo.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageInfo_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 27: + this.labelInfoCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 28: + this.spFind = ((System.Windows.Controls.StackPanel)(target)); + return; + case 29: + this.image2 = ((System.Windows.Controls.Image)(target)); + return; + case 30: + this.label3 = ((System.Windows.Controls.TextBlock)(target)); + return; + case 31: + this.textBoxFind = ((System.Windows.Controls.TextBox)(target)); + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.KeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_KeyDown); + + #line default + #line hidden + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.PreviewKeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_PreviewKeyDown); + + #line default + #line hidden + return; + case 32: + this.buttonFindNext = ((System.Windows.Controls.Button)(target)); + + #line 120 "..\..\MainWindow.xaml" + this.buttonFindNext.Click += new System.Windows.RoutedEventHandler(this.buttonFindNext_Click); + + #line default + #line hidden + return; + case 33: + this.buttonFindPrevious = ((System.Windows.Controls.Button)(target)); + + #line 164 "..\..\MainWindow.xaml" + this.buttonFindPrevious.Click += new System.Windows.RoutedEventHandler(this.buttonFindPrevious_Click); + + #line default + #line hidden + return; + case 34: + this.MainGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 35: + this.borderTop = ((System.Windows.Controls.Border)(target)); + return; + case 36: + this.listView1 = ((System.Windows.Controls.ListView)(target)); + + #line 229 "..\..\MainWindow.xaml" + this.listView1.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.listView1_SelectionChanged); + + #line default + #line hidden + + #line 230 "..\..\MainWindow.xaml" + this.listView1.Drop += new System.Windows.DragEventHandler(this.listView1_Drop); + + #line default + #line hidden + return; + case 37: + this.GridView1 = ((System.Windows.Controls.GridView)(target)); + return; + case 38: + this.gridSplitter1 = ((System.Windows.Controls.GridSplitter)(target)); + return; + case 39: + this.bottomGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 40: + this.image1 = ((System.Windows.Controls.Image)(target)); + return; + case 41: + this.textBoxLevel = ((System.Windows.Controls.TextBox)(target)); + return; + case 42: + this.label1 = ((System.Windows.Controls.Label)(target)); + return; + case 43: + this.textBoxTimeStamp = ((System.Windows.Controls.TextBox)(target)); + return; + case 44: + this.label2 = ((System.Windows.Controls.Label)(target)); + return; + case 45: + this.textBoxMachineName = ((System.Windows.Controls.TextBox)(target)); + return; + case 46: + this.labelThread = ((System.Windows.Controls.Label)(target)); + return; + case 47: + this.textBoxThread = ((System.Windows.Controls.TextBox)(target)); + return; + case 48: + this.labelNDC = ((System.Windows.Controls.Label)(target)); + return; + case 49: + this.textBoxNDC = ((System.Windows.Controls.TextBox)(target)); + return; + case 50: + this.label4 = ((System.Windows.Controls.Label)(target)); + return; + case 51: + this.textBoxHostName = ((System.Windows.Controls.TextBox)(target)); + return; + case 52: + this.label5 = ((System.Windows.Controls.Label)(target)); + return; + case 53: + this.textBoxUserName = ((System.Windows.Controls.TextBox)(target)); + return; + case 54: + this.label6 = ((System.Windows.Controls.Label)(target)); + return; + case 55: + this.textBoxApp = ((System.Windows.Controls.TextBox)(target)); + return; + case 56: + this.label7 = ((System.Windows.Controls.Label)(target)); + return; + case 57: + this.textBoxClass = ((System.Windows.Controls.TextBox)(target)); + return; + case 58: + this.label8 = ((System.Windows.Controls.Label)(target)); + return; + case 59: + this.textBoxMethod = ((System.Windows.Controls.TextBox)(target)); + return; + case 60: + this.label10 = ((System.Windows.Controls.Label)(target)); + return; + case 61: + this.textBoxIdentity = ((System.Windows.Controls.TextBox)(target)); + return; + case 62: + this.label6b = ((System.Windows.Controls.Label)(target)); + + #line 384 "..\..\MainWindow.xaml" + this.label6b.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.label6b_MouseDoubleClick); + + #line default + #line hidden + return; + case 63: + this.textBoxLog = ((System.Windows.Controls.TextBox)(target)); + return; + case 64: + this.labelFile = ((System.Windows.Controls.Label)(target)); + return; + case 65: + this.textBoxfile = ((System.Windows.Controls.TextBox)(target)); + return; + case 66: + this.label9 = ((System.Windows.Controls.Label)(target)); + return; + case 67: + this.textBoxLine = ((System.Windows.Controls.TextBox)(target)); + return; + case 68: + this.labelLogger = ((System.Windows.Controls.Label)(target)); + return; + case 69: + this.textBoxLogger = ((System.Windows.Controls.TextBox)(target)); + return; + case 70: + this.labelItem = ((System.Windows.Controls.Label)(target)); + return; + case 71: + this.textBoxItem = ((System.Windows.Controls.TextBox)(target)); + return; + case 72: + this.tabControl1 = ((System.Windows.Controls.TabControl)(target)); + return; + case 73: + this.textBoxMessage = ((System.Windows.Controls.TextBox)(target)); + return; + case 74: + this.textBoxThrowable = ((System.Windows.Controls.TextBox)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/MainWindow.g.i.cs b/obj/Release/MainWindow.g.i.cs new file mode 100644 index 0000000..edbb3ab --- /dev/null +++ b/obj/Release/MainWindow.g.i.cs @@ -0,0 +1,1000 @@ +#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "C1B3918A1C907E0D16763BA2AF37EBE8" +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +using LogViewer; +using Microsoft.Expression.Interactivity.Core; +using Microsoft.Expression.Interactivity.Input; +using Microsoft.Expression.Interactivity.Layout; +using Microsoft.Expression.Interactivity.Media; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interactivity; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace LogViewer { + + + /// + /// MainWindow + /// + public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { + + + #line 31 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridMenu; + + #line default + #line hidden + + + #line 35 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Menu menu1; + + #line default + #line hidden + + + #line 39 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.RecentFileList RecentFileList; + + #line default + #line hidden + + + #line 42 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem MenuMergeItem; + + #line default + #line hidden + + + #line 44 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.MenuItem ResetSeparator; + + #line default + #line hidden + + + #line 51 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid gridTopBar; + + #line default + #line hidden + + + #line 56 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid spPath; + + #line default + #line hidden + + + #line 67 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textboxFileName; + + #line default + #line hidden + + + #line 73 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCountAndSearch; + + #line default + #line hidden + + + #line 74 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spGlobalInfo; + + #line default + #line hidden + + + #line 75 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal LogViewer.FilterActivity FilterIndicator; + + #line default + #line hidden + + + #line 76 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock tbFiltered; + + #line default + #line hidden + + + #line 78 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spCounters; + + #line default + #line hidden + + + #line 80 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageError; + + #line default + #line hidden + + + #line 81 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelErrorCount; + + #line default + #line hidden + + + #line 88 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageWarn; + + #line default + #line hidden + + + #line 89 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelWarnCount; + + #line default + #line hidden + + + #line 96 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageDebug; + + #line default + #line hidden + + + #line 97 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelDebugCount; + + #line default + #line hidden + + + #line 104 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image imageInfo; + + #line default + #line hidden + + + #line 105 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock labelInfoCount; + + #line default + #line hidden + + + #line 112 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.StackPanel spFind; + + #line default + #line hidden + + + #line 113 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image2; + + #line default + #line hidden + + + #line 114 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock label3; + + #line default + #line hidden + + + #line 119 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxFind; + + #line default + #line hidden + + + #line 120 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindNext; + + #line default + #line hidden + + + #line 164 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Button buttonFindPrevious; + + #line default + #line hidden + + + #line 217 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid MainGrid; + + #line default + #line hidden + + + #line 224 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Border borderTop; + + #line default + #line hidden + + + #line 225 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.ListView listView1; + + #line default + #line hidden + + + #line 258 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridView GridView1; + + #line default + #line hidden + + + #line 282 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.GridSplitter gridSplitter1; + + #line default + #line hidden + + + #line 283 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Grid bottomGrid; + + #line default + #line hidden + + + #line 318 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Image image1; + + #line default + #line hidden + + + #line 319 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLevel; + + #line default + #line hidden + + + #line 320 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label1; + + #line default + #line hidden + + + #line 325 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxTimeStamp; + + #line default + #line hidden + + + #line 326 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label2; + + #line default + #line hidden + + + #line 331 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMachineName; + + #line default + #line hidden + + + #line 332 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelThread; + + #line default + #line hidden + + + #line 337 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThread; + + #line default + #line hidden + + + #line 339 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelNDC; + + #line default + #line hidden + + + #line 344 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxNDC; + + #line default + #line hidden + + + #line 345 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label4; + + #line default + #line hidden + + + #line 350 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxHostName; + + #line default + #line hidden + + + #line 351 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label5; + + #line default + #line hidden + + + #line 356 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxUserName; + + #line default + #line hidden + + + #line 357 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6; + + #line default + #line hidden + + + #line 362 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxApp; + + #line default + #line hidden + + + #line 364 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label7; + + #line default + #line hidden + + + #line 369 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxClass; + + #line default + #line hidden + + + #line 370 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label8; + + #line default + #line hidden + + + #line 375 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMethod; + + #line default + #line hidden + + + #line 376 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label10; + + #line default + #line hidden + + + #line 381 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxIdentity; + + #line default + #line hidden + + + #line 384 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label6b; + + #line default + #line hidden + + + #line 389 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLog; + + #line default + #line hidden + + + #line 392 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelFile; + + #line default + #line hidden + + + #line 397 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxfile; + + #line default + #line hidden + + + #line 399 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label label9; + + #line default + #line hidden + + + #line 404 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLine; + + #line default + #line hidden + + + #line 406 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelLogger; + + #line default + #line hidden + + + #line 411 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxLogger; + + #line default + #line hidden + + + #line 413 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Label labelItem; + + #line default + #line hidden + + + #line 418 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxItem; + + #line default + #line hidden + + + #line 422 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TabControl tabControl1; + + #line default + #line hidden + + + #line 424 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxMessage; + + #line default + #line hidden + + + #line 427 "..\..\MainWindow.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBox textBoxThrowable; + + #line default + #line hidden + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/LogViewer;component/mainwindow.xaml", System.UriKind.Relative); + + #line 1 "..\..\MainWindow.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) { + return System.Delegate.CreateDelegate(delegateType, this, handler); + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 13 "..\..\MainWindow.xaml" + ((LogViewer.MainWindow)(target)).Closed += new System.EventHandler(this.window_Closed); + + #line default + #line hidden + return; + case 2: + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.openCanExecute); + + #line default + #line hidden + + #line 18 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.openExecuted); + + #line default + #line hidden + return; + case 3: + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.exitCanExecute); + + #line default + #line hidden + + #line 19 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.exitExecuted); + + #line default + #line hidden + return; + case 4: + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.refreshCanExecute); + + #line default + #line hidden + + #line 20 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.refreshExecuted); + + #line default + #line hidden + return; + case 5: + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.filterCanExexute); + + #line default + #line hidden + + #line 21 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.filterExecuted); + + #line default + #line hidden + return; + case 6: + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.aboutCanExecute); + + #line default + #line hidden + + #line 22 "..\..\MainWindow.xaml" + ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.aboutExecuted); + + #line default + #line hidden + return; + case 7: + this.gridMenu = ((System.Windows.Controls.Grid)(target)); + return; + case 8: + this.menu1 = ((System.Windows.Controls.Menu)(target)); + return; + case 9: + this.RecentFileList = ((LogViewer.RecentFileList)(target)); + return; + case 10: + this.MenuMergeItem = ((System.Windows.Controls.MenuItem)(target)); + + #line 42 "..\..\MainWindow.xaml" + this.MenuMergeItem.Click += new System.Windows.RoutedEventHandler(this.mergeFile_Click); + + #line default + #line hidden + return; + case 11: + this.ResetSeparator = ((System.Windows.Controls.MenuItem)(target)); + + #line 44 "..\..\MainWindow.xaml" + this.ResetSeparator.Click += new System.Windows.RoutedEventHandler(this.resetSeparator_Click); + + #line default + #line hidden + return; + case 12: + this.gridTopBar = ((System.Windows.Controls.Grid)(target)); + return; + case 13: + this.spPath = ((System.Windows.Controls.Grid)(target)); + return; + case 14: + this.textboxFileName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 15: + this.spCountAndSearch = ((System.Windows.Controls.StackPanel)(target)); + return; + case 16: + this.spGlobalInfo = ((System.Windows.Controls.StackPanel)(target)); + return; + case 17: + this.FilterIndicator = ((LogViewer.FilterActivity)(target)); + return; + case 18: + this.tbFiltered = ((System.Windows.Controls.TextBlock)(target)); + + #line 76 "..\..\MainWindow.xaml" + this.tbFiltered.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.filterIndicator_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 19: + this.spCounters = ((System.Windows.Controls.StackPanel)(target)); + return; + case 20: + this.imageError = ((System.Windows.Controls.Image)(target)); + + #line 80 "..\..\MainWindow.xaml" + this.imageError.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageError_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 21: + this.labelErrorCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 22: + this.imageWarn = ((System.Windows.Controls.Image)(target)); + + #line 88 "..\..\MainWindow.xaml" + this.imageWarn.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageWarn_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 23: + this.labelWarnCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 24: + this.imageDebug = ((System.Windows.Controls.Image)(target)); + + #line 96 "..\..\MainWindow.xaml" + this.imageDebug.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageDebug_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 25: + this.labelDebugCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 26: + this.imageInfo = ((System.Windows.Controls.Image)(target)); + + #line 104 "..\..\MainWindow.xaml" + this.imageInfo.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.imageInfo_MouseLeftButtonDown); + + #line default + #line hidden + return; + case 27: + this.labelInfoCount = ((System.Windows.Controls.TextBlock)(target)); + return; + case 28: + this.spFind = ((System.Windows.Controls.StackPanel)(target)); + return; + case 29: + this.image2 = ((System.Windows.Controls.Image)(target)); + return; + case 30: + this.label3 = ((System.Windows.Controls.TextBlock)(target)); + return; + case 31: + this.textBoxFind = ((System.Windows.Controls.TextBox)(target)); + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.KeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_KeyDown); + + #line default + #line hidden + + #line 119 "..\..\MainWindow.xaml" + this.textBoxFind.PreviewKeyDown += new System.Windows.Input.KeyEventHandler(this.textBoxFind_PreviewKeyDown); + + #line default + #line hidden + return; + case 32: + this.buttonFindNext = ((System.Windows.Controls.Button)(target)); + + #line 120 "..\..\MainWindow.xaml" + this.buttonFindNext.Click += new System.Windows.RoutedEventHandler(this.buttonFindNext_Click); + + #line default + #line hidden + return; + case 33: + this.buttonFindPrevious = ((System.Windows.Controls.Button)(target)); + + #line 164 "..\..\MainWindow.xaml" + this.buttonFindPrevious.Click += new System.Windows.RoutedEventHandler(this.buttonFindPrevious_Click); + + #line default + #line hidden + return; + case 34: + this.MainGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 35: + this.borderTop = ((System.Windows.Controls.Border)(target)); + return; + case 36: + this.listView1 = ((System.Windows.Controls.ListView)(target)); + + #line 229 "..\..\MainWindow.xaml" + this.listView1.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.listView1_SelectionChanged); + + #line default + #line hidden + + #line 230 "..\..\MainWindow.xaml" + this.listView1.Drop += new System.Windows.DragEventHandler(this.listView1_Drop); + + #line default + #line hidden + return; + case 37: + this.GridView1 = ((System.Windows.Controls.GridView)(target)); + return; + case 38: + this.gridSplitter1 = ((System.Windows.Controls.GridSplitter)(target)); + return; + case 39: + this.bottomGrid = ((System.Windows.Controls.Grid)(target)); + return; + case 40: + this.image1 = ((System.Windows.Controls.Image)(target)); + return; + case 41: + this.textBoxLevel = ((System.Windows.Controls.TextBox)(target)); + return; + case 42: + this.label1 = ((System.Windows.Controls.Label)(target)); + return; + case 43: + this.textBoxTimeStamp = ((System.Windows.Controls.TextBox)(target)); + return; + case 44: + this.label2 = ((System.Windows.Controls.Label)(target)); + return; + case 45: + this.textBoxMachineName = ((System.Windows.Controls.TextBox)(target)); + return; + case 46: + this.labelThread = ((System.Windows.Controls.Label)(target)); + return; + case 47: + this.textBoxThread = ((System.Windows.Controls.TextBox)(target)); + return; + case 48: + this.labelNDC = ((System.Windows.Controls.Label)(target)); + return; + case 49: + this.textBoxNDC = ((System.Windows.Controls.TextBox)(target)); + return; + case 50: + this.label4 = ((System.Windows.Controls.Label)(target)); + return; + case 51: + this.textBoxHostName = ((System.Windows.Controls.TextBox)(target)); + return; + case 52: + this.label5 = ((System.Windows.Controls.Label)(target)); + return; + case 53: + this.textBoxUserName = ((System.Windows.Controls.TextBox)(target)); + return; + case 54: + this.label6 = ((System.Windows.Controls.Label)(target)); + return; + case 55: + this.textBoxApp = ((System.Windows.Controls.TextBox)(target)); + return; + case 56: + this.label7 = ((System.Windows.Controls.Label)(target)); + return; + case 57: + this.textBoxClass = ((System.Windows.Controls.TextBox)(target)); + return; + case 58: + this.label8 = ((System.Windows.Controls.Label)(target)); + return; + case 59: + this.textBoxMethod = ((System.Windows.Controls.TextBox)(target)); + return; + case 60: + this.label10 = ((System.Windows.Controls.Label)(target)); + return; + case 61: + this.textBoxIdentity = ((System.Windows.Controls.TextBox)(target)); + return; + case 62: + this.label6b = ((System.Windows.Controls.Label)(target)); + + #line 384 "..\..\MainWindow.xaml" + this.label6b.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(this.label6b_MouseDoubleClick); + + #line default + #line hidden + return; + case 63: + this.textBoxLog = ((System.Windows.Controls.TextBox)(target)); + return; + case 64: + this.labelFile = ((System.Windows.Controls.Label)(target)); + return; + case 65: + this.textBoxfile = ((System.Windows.Controls.TextBox)(target)); + return; + case 66: + this.label9 = ((System.Windows.Controls.Label)(target)); + return; + case 67: + this.textBoxLine = ((System.Windows.Controls.TextBox)(target)); + return; + case 68: + this.labelLogger = ((System.Windows.Controls.Label)(target)); + return; + case 69: + this.textBoxLogger = ((System.Windows.Controls.TextBox)(target)); + return; + case 70: + this.labelItem = ((System.Windows.Controls.Label)(target)); + return; + case 71: + this.textBoxItem = ((System.Windows.Controls.TextBox)(target)); + return; + case 72: + this.tabControl1 = ((System.Windows.Controls.TabControl)(target)); + return; + case 73: + this.textBoxMessage = ((System.Windows.Controls.TextBox)(target)); + return; + case 74: + this.textBoxThrowable = ((System.Windows.Controls.TextBox)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..ac1795a504c4a650f8b7162270f24ee79bcb94c7 GIT binary patch literal 5632 zcmeHLZ)_Y#6@Rn4zB^y+t9^0)lmv2)3D_|{961Ie0`;GB5;wj$@i}(dMs3!2TM}_L6`2S<;Efz;pXH(KWoe4JmqWat`X$jvuG!YV+Hj z*Tlrzozn}JpQ(Co*)uDdqUktpkeQPiujXVdCzG2jWGZe+W?Ng6ACFug9V40$8ohF< z@1e$MH)v;OgXkwp1JOcMgGd=XLwJbV6b~K8&8_jKQxKv)It_i5P5IyQI}#Z}yYgwG z$&g)}4iUAit+_XvAxf;UNI*WcLe2*AOaM8-u|csA5S_|;(sqkc3`2l~FA72^A1Z({!3I5v%%sHKbOB}`Z-^!<}hXx&L7{M${mv0tNoZ~<0yCEx~r1i_4_4nLqqvX^4JcanCFh20zb zb@~YOsN;6(1{CuifPZD_rr=eXv!A={D(kdcTBqF`>$H1kop#uf>zc=aSf5>CopxVd z+b&!O>@}tjW~rM3Gp ze9wO0U%MZ}tNQKKy4%&jGyW#jNH3RiR(ACB>jg*Kx=~OyYx%YR|L~< zfW~k;uzgk0M~r^~{|9VhWC7u^!wAA0w$TgvYkDUzprVc5f;5OZrBEb4)2g7qr2sTT zXXt2#dq1`H7~&9gQb`vR8}%n3y%b45rSp*9h@|WEG^95p=?Gmw7XBVd@9HddbQ0Rd z#BC+*kECBIsT4^a8e3k7q<-b)Y9xJANq>l>?#Y8w zssllW#yMY2o9UP?kXO#-{h&$e0d1o_3fZTq3A&jcS9~3GI}I!TJbeY$=V{jHr*R;I zph<0vmgqa$anK)V4`Z#_^Af7>6l_0FUl&=N&Of3okY9jqqd(CobDws~0`riqG7TN^bN?SlvSP2al+u)}SRD<0|!KXnr zSnmMe0cxDX(5u>ctT6BYMl18(inbaHcb`)1&%33XEx$+=zvz0lHAjWIQ(W*|$2u!Z zRFd;%%?`#LKQNu5q_PYiJK|2sc~ANalTIEwt7^-FTk|6AsObceeymar>X9nv*5+(U zQ#B{BDssABm4{5H1mvI$SUTXjl?dT6CacoPS*Golr>y{1jLlk3$z2R(?xMg^L{Rf2 z`7mhkh)u=QkcX>P+bWuYrdIzN= zJpiTQ07v#*4XQiPD85RU;hdbSmCMpQ;yTBD>8+(?_sbprZ`@@?F3ffm1U^+)$p@9>04!FHCyzvCEMm_U50A( zag3ryR!lf5HC8%rI;h(y5NF;h*RXV0?gn@ex2S1bXIFu!Qd<_4SyUxSV2YRJDpHXZcmztWRT`9dNyh8LUKesA%4RYia5c zI63zvq($|@Dj$+oc_C=5c_i_6EMQZGc*rpp6>!+s_hn_yt`mJ>f{<34!CfF}5f2hX zM?qbD8?Y28jSqARvJbolw5WLM8zqw**syLMI9n{x7*)_apgI*+*i&x~zI#HrgR$EN3fYEmD zmQUvsub(|RbN}8OU(;jhU3hx%wBQa)?_$z}`;}eczY|z&K{)I~v;q-Ef~`P$^aS)^ zTJ&yeO^E3C^~d-Fb6VRx>zP%Y*kfmkvdU+`H151bU%)Odc;-Wb2BQ7jI1T*lwCmb_ z7U!hvlBad+0RC|0vYUql9nM=t&-LB;AUk9EHPbExwUXs#!&?B} zqATgn>DT}Y*z~r2D5uY_XresJsKGObNv{Qna?zsJ%d1qejoi_Xa1ke zXPCRYHGbEJn#V?6FK63%({jS^0x8vD&Dz_$;G^ws4<8~Qhzy{rS};+3@PF7ofEoB7 D3@Bv% literal 0 HcmV?d00001 diff --git a/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29

F@sT@6;TCytBr(@SO7kd{%6te#+M_|14J?<(+f0 zC%bEJ36RX0ZsYqdOmpEKRpI40KAucD7hEWxaqoNcKI87_xuSlA`LU0EEH;Ms&_fSp z;$rZE58n^xdnT?#db{rr z(&U`;nM~##wS4PiqSDSW`g0FF@PJ)DhX;gzX2VhVd8*}H@Zj<1KmWO+ee@6GVI<=nj=a-`zFGiX1aq#)-f1 z+;ouhxOn(@@xHXx6SKStGoT5mJfe$R);c(rw`I8NvCvX0I8?9Tz$a(#9b zRcY4y?!t3k&a->72~7&=18_)LdOja~FXx468reI>_1zUCzC|B$e0Q_vrmVg#mnSB= zoba5Nb1&x;&1>TUpRskWi{a12*{=cI@kmd|+6|8V0dQ9Ryqs&-+~v1>dp`Ymo&3sV zWRX65-2Tm_%Ki!J4JJ#6%oJZ_!L zSY(UzmUhOili~Lmq+cX2WzLm2FCckKJqql&wRT?4<7GqU%t=Gg{bBsZJM93#aG#kS zJ9d=a&xA9be!_RtMb0OB-D})CB=)*jS+n+`4}Hib=IVX+a{I6ly}g{f<--ww>qj3< zM0$dK#AM!&nO5?O2A73TA-=QYQ{~oCOgX_L?mZS;4vT?j=MmUEy2jk>Q~Ny@mSx_! zHEZRrZ@2N_yRfe0<=oB3ve)AscicffXZ(%h>4`}F_Bx!|@=aCYy{We6=rAQ)GPedxY-Q(VGicMIsAdjXVmp{l5>%VxV;@{cex)+F|sc0 zl4G16BmdCOyZVh~<7}_&CsRn)rA>lITpW;iFnN2PD?ha5{MIp(*|&K-*1r|f5jk^g zvth3p;lDUJn5^-+$Qkh|W*LBZ3)0JZuAIyJr)ED_>f=3ygmj#q-zDEwoek?|gb$~SoKxP3Q{21Xlug;!S#Xa# zQeWiT*SVN|90@z$o^HkBl5fvhwn>tg^Q@fHmdm;rW6LLEE-g+iaBQGr?(CbHZqr3Z zrjwkDU5;C)A~GT0Y2Y5P(hkaYDc@;eUl#fib{u^K7k+Dv-)iKZ?Sc!>xmOACEH-&L z&-MrD$TS7ETx9>A*<#a$C*$~dvi)|EIm$X^cA~z!RO&n(>BR3Kj#qm8@yDHUK`-Z8 z&K=|O$+YDn=d;G9Pggmoyo;<)#CH@$pOkVWtvH?^YvQ*QITmpFD_+jEoRii}Q)tUY z)^lw7Ox-JTI?K7pAaVTo$3L#d zyDz4REeA>}DVxsqIZQKkjoeI-b5L8^c78jYzB6NAr6kHX^~6~Bdm3bc7?*=YIZ4f@Gp@>H>7NPXEz~})uxFy2k2eiGyz%9!vCvcA|F-<&jes{D z(y%?Apxgkd8T0dUK6CnNCh=7{xXL$>taT}qvG%Q49l~|*Ps#h~T%$+dqnvh5MHw&W zUe2e2?_71#A7(OpD^KJ*X{f%ebPY;nZz9r8(mw`1!}v|d z^f2ev=yNccb$U}yKM*P}4qndl)29&q{PVHXkKZ?r$juX=>v-+&2vFmiIM4Q+#N;f! zlvmDBW=fxXIiFhkPj&xKhx+-w1t!Z6=Kf97IjNYOj5D~l8OToSpO^FL-9OWvf5wWR zd|QQcp(d_%*K`(egByK~$7Jn0b<}kKE}NHgFXv;G)pE;Iu4SJX^9}Q-0BfT5g97Mr zP3r+o#SAIuT(4o`3e(cAdpY-VPJW$=pZM$6J~0P?$4pAMQMSc@H+$Dj2`xdiy!CoH z&rhF1^z+Zlqn{neGXDDgGfBV=uF8M6H{-Tz%86lP_AXoF4xga=dn6* z^*>L8iR1x!ztf6a-GTaML%N^ik0+jZf?+wej}RK=<;l}v&hdcww)EM}ehp7R7Mf;* zkfRML{GPGLBxVj_&h<0s;M+V$X<+le6|33^o|sLE>w7Y?CV={Ey3eZ1j9$-95-tXdkxrt9rr}s@KLf72GcFOty z&aeBpoVS@^v{@_X@-1V_u04kKa^871CpE9$)YKHl<*cVL3x;sdQiTX#8{NIZzAJVb17{^W1q8QkX)07 zd;aHXFynb(DXKnaI3A?P_AXaDf%}SO=f&wd!02mbvFHT@l)xy8$P(j z;`_OHI!rpqntm_qb5l0R1GC|0%eeLK)@+Zhqw9)Fe6L=8Uzc(o8PCj${%8CAZ+6pw z>)XVRTYEA;fPQD}*(Xhh`#=aU>s}wsNPWndGUv^hIDcg3iXR3~&z3c<DF_q3is+fw-XG@1g`ebj*&d8fzA`s|Pe_UUZ=aXc<|oNK_j7Ke zc@5<9dSwb|V9U5Q9``a{x(0K~x?fA<<$9`h8`rkkadi`Oqp!ZKbT;=TKmp3Sip|;c z>(*X7-j+>)EkmEoS-Q(U5%e#u`Ekm43O}F9r$88o=Xznr<(TLzneot^v!O%_NEY@iSbRpucViC^2J2{=$Fg>hO{%*UNBq( zL!Z;9@uh&;r-HIA`(<*E4!YB0H~9tu?Tf{0T*FEGvoam_i5@Y_xtGjZPzzc-E7 zb>xe&{%*PD7P6E|^x3Ug&@sUFY4Rwr3{^1(qTXv2y-Od&d%Q0ULH!62hep^ z(Tq0SjR^E-^YD{kVO0$t(M~)E~#)V#8?%DDT!h z&250kxQ|aWg941lQ!gt!ZrgT0ZZBOnNXMD}t3Eh`*z^x)6Am)_3|zF zDITRQ7u(L5JoUIWFFND-Sla22qjeI;-FDye+OpwyfM$OEDu^({6W7%!+aA^FjMMqG zbfe`0^qLiVk1<%=M`tYET3_L9_zV~981%z&JN-5JwjIZ4Twi1PaI=EPXN#8nS4bozCE z96n2gxrk=$L7pe@Q{yy_)j4LDY^T|`draNCE^5C?xDb!(u=| zr9uKvh`uaLg5sLEZ*{jWpKV>McGJ(+rP^9jwV&0tYWuad)=x#-y41E>?O&}5^FO~k zbLQQdH#6_O=bU@)xijkNP9HGHc&hNoM0Znzd|fc z=09vN_%E%$!S}s%U=P(#J_q9AKp|DWjSj5wg#KbKm-pkK^SDR8|IAHdZ5;MOA-UpLf{qg+l!b=Asv45Igm&WAU?m9j+f{V`ipr5bGd!q@pax?pP7F+JL$GO zcia4=*QpKmNc{LYF~Lv0&H=0gZ==KX>9LoCbv%C`6taqh`3U>*@HhSSy#8JhY$M(k zmi-~{3TtqexW~Q3YybI{UKeY>0~ZcpUfD^9Imgqr*uRC&%gDv2Xi*`*KPxuA9!xT;W~Pd&Lbx5Hh)3RVGE%5s3Se! zF=%xj^umTgckMAt(2In14(y|V#;U}L11DykoI!{Q8_hs-qu-FHdpS{yH zK=<=e2HnSg66QkN{?UN20q{kD8}t=A4V>+MIMW1u$9(SctdXzV16`VZ{9@riAytBJ zkNuzb>9FW2{8i`*)~j-ynRP@yLtmgzuoG+ppliM12f(%fHtRC_#5|1ty%KaC^-v#e z?erS=kJ7o74%kCK`5gE%asV;BPCE9|5updXo`vpXPKRDO&HG-uhBn45IvMhA4pRrj6B*dD}twmoMSOP?=L z|M$|-Ne6VgkPbij9Pl~NeGb6it)>I|)JX^YVAud0(6?ChGM+jwN${_x>rOh>(NRqY zY>}UQ4)`4CUk+4L_uV=C=gj(d-2C2s4)`4KInXT*M2W?8S{>JjB>@f{Q)jkBn+hXKweKtVE|HjCl@P97{hS6 zPMlsR+(EcJ3|{6@xV$S2p4@Lv;c~fHDTpYSyH~<2GTY1DD~d^>S#Ie*jDT5g>0VK) z3X$F| z5zx!KI8#1L_;t$peBFTxdV9{YoU6=oC-M|s#zlL(aOq&g2#Rti@(l)vawqZ)28i-~ z7QFaIFhG=dahCOL;@@e_=erK7Alh?=?ObJ)JCm<70PUU0*CoKK9HtuO&g{_{gmP#0 z=nO*nJ{#VA3kIRQi!1)|)Iy@J7nzZ-i6gFVZM!Bp(9Icoc^BVCo<;j;<(-l3IHv>sM=R&b4(BSgcgW`~l)DcP z2FSZSm&)CT4+H33o=)ZN!-oNkUhY1;7~n3C;n&OeF*6*_Nz}e4el zDQnQ%uYo;3B=_?C7=8ZjUH>3AihmQWyyyN=&-}M&{vDNfO4<@}*%7_GE25Etd%UJhg|>mM%xj<)_nxtD_;ZT*LGF9E~)GHQ9JeN@8t z9cUk|yenMaex;%PK6`HXK1#X1zIPvBia`?mXyxt$tj90h2aqCc1V382`vB_k7xw`$ z;y0aPhFGtnm3IjI+%;6w%lBEKns*$(a${h$a)f}1Kduo3j=#Av5CKfIcVl3IQSQdT zXysMhzSAVxa?!!%U6yR~hKdD#E)op(=;h7~6cKXJ=fWVcM{n=Upm2QGnL!0+duIk! zh08llnxu=4aCw)MZC;{S$Ins41o=j}lZxpZ1cH7?6%ynb?VSiLkotEbuu3j>AfQ7o z-)BhJnj7R z&(|)v-~#Q!3oq0zy67VDX7r_(UaDPo*=5@0mtU@3am5wdl~-P=U3Jw};?3&ouDedV z{`%{+8*aEkyYa>w#am=I-+Z%n>#etHU;p~o#T#3<-+sGx=bd+IcinZDcF#Tch__7d zyYD{jJKy<^_WkdFU%UVQ`^DFz9(?dY?FT>jf%ect4`~lS{IK@OBaeu;I3IufaqY)H z{;~GN6Hkb@N4mPYw4eR#XWElbKB+zR)Kl8iPd_cb+VJeN&uY&-_nh{tU;RpZ{`u#{ z7g}C?@kQ;ozx}QDyWjmz`@n-sn>^twgqrLm?yV`s2y{G;2pZ^qZk$?E%huTLUeWZQ-@yFtA zxz9iUT*wa%EtK6qd>+Ij1CbWN&+$2sa1P|;<_3x^X?$*OZo<16NC1;_M-^4pHqadC zl6KTCEDGeN4C+WGQy*(JCFfWl2^7-kiD_8D0W#+%^hD+Cz@@p7~$xb4jB5}5J?}s zL=0hVNnWyB9rygC+@c!Myk>l+d#wRkk{S>LzPYSNikm%NjQ{4M!9#xP=vorl)+M78 zV6v0*D?(=!gX{;RFd-Vs2ISq zpMxRaJib@vrsPp|1iU7%M?=$VjYp7{w^ru#8hjeL=sKhB#qEH=0!X7H>l_3wK zm=vI1b_50%^`N|AbYI|J9{^Kc`VzvU zPbp{W>w3|w#v-{XC9P^`d|&9f9h*_KCSKUfrq$l3c#=J zl1?VuQ`S=s#?n5Cw|}M z;>8j*G%SK8-OCtKt2PXpQ3r`6_KC8~iG$QV-pAi6sZMQ3i@#Z9iwbqeAeh{&cqfyV zCcwQNueSE~;?RnBLhh0q)FnLzl&`8IdJLo=0Az-GyzI(tRRjHic>=m5%zL)*O5f3A z?j?YX?tvK9Gi4o8r{XK{fLEMr5N>EL9*1x;IHBZSFSLr0)Coa+DhCmS0w>ZX9S^5b-l|p;{MzBW1)OS9YD` zO%OA}pO3(c&{B4vuW&z^yVz>=6A9h#wkDQ=-xy1!?&Hv3Ewj}fQ6ES7k`6mID5J)& zHhwvlu94!Et+qyq+Kz~EGKhpd;B%r5{Kg(`W<+ox5Ka+g-O9)a0~{U~0Md9*Q=j8q zZglI|rCw%5N5WGSTT68?dOHh9hb%7Fi^6|1xBzD(Th5ZNqge4Jo^$(f?$e!yfb2qu z>P3q-?W8xD)l)VvJ}eNh;0nZ;JrYRnM#fve7L~^wwqhH;2e51B`UQoN{ZXfp4Molf zwZWwX*_qzzgjTB^s|5hGLuObH})vx^!uO6<^q zf|p~Lx5yAro)rjJ3j|h+G7|;c#b&Q)eVO+>5D3iG`(0%Nid#GFAicO=#uL{qb8N&1 z0y9OOMPZPfC9y*kg7mo-%F(jE$b=Y;_JBvgI;mCldNhr?K2hMQ?iv@yl&@^GgY-EV zK6_eeqKcMOZKbGjJi`GOmx`>F;VfJcz%fVLq0#-WGKLt9cJk_7=?i!-a|3}xxa%XV zXz8elLY8^LbT-$vo{wf!4T5wvQpYezYPnUkXbMX+m4TVMNL#@X@v{vp!W9@&#JR*> zt~Yw=gF+^#n!7#Gf|lsRI_`w%bffaFHHVE;GR7ThD(Za6;IVwG>P*Ho5SV1NG_z1d z5Or}-)#gQ$vy{NZ(oNjMA$r@Ww5O{fmuZeBIPTx+%$81QTuDR?JMH66)iFD6qER(t z>?%EHmw_tfn#WawB_DmQmHTC&%kU5tVkO#?5P8=pE8Cgt$>~ zUq(yE#6o*`kYuF|%-69GH>P@q$g5ioX&`p6Xg8U9fMFjK6s>njZh6L-<8+969=BvJ zMxIBwSi9s_)yv@}H0#jOQX$Kc*3L%zINi>%`U^BN47(O?Y-q;u06d9#XtG1rPIHc# zEmIU2qf1wvU|e+C$=YSg?fH6?3r~!4wsbRf)aG$BKHF$N0_3QtvUuvX7}fbkBN}5N zMKe*?fM~E|6?hls9C2QsV`MoZD8>w_GcG#qN`*bPDhfklE75d2-H&@<YPaY_1m>f3HQJhAgr45sFP!*T_2?>GNqB%hRAOv zcEXbrZmnTX<{4^lbV3p$y5AZJM9PVUcBLWmS%f@Kk*B_O!woGrOs>t^S!vg&Xc}0j zWH^N^@=FP#F!!`dpz1;trYHe=5m8k)=%i6L?$p&z;3!Y`4Pv6bEYgdq@U-#-URb)V zKxMdLcdXWqu|o|*LTOHLNvLGfNv^AI^JwZ0=t3n_OE5uSH5u9JN*8$gnms1k^CF{i z4em=Efu`=A>uVT8{!K5`phO=Tohrz%d(sze0exsO8R+gE&E1AQC(wp0=&k_M?g~;= zi-~qxtlC_-Oiy2)xV=hrt9#-`AF|5{Tty8rOS5HiLve7QLMwveX%D zc)DAq4#j04P$eLW7EHUnTU(zLA42NWpVwf=@Nli9!CgE8pAj%DN1rRxof5uzg+Dfm@R}R=nD-)jL z*#HPk1rkD)6=TTsF*Ok&O!dIzBvD`JO_NcoOTi)`PsTdcFn}VcVO*=WAtm8yLbt+r zGPBep%^n>ua;-CbgVXAU8*?s}XfD2FA5m0&ZFL8$le& z+F58kAiz)n%le(<$cS(0;=p&-054iw z(?I@VbzxB=J7lo&vJ-H3H%MDBp;^%lw+9#9wRxekA+2Yo`bDzBkvVQXil zT`_{Kr%crMjDTlg>{l@AD%6?ogvgt8^1xDgxFf@(DFIrB5U59w5hQ_?WG=<(j%}(* z`_?feZ=!+&K~y3eJFkTdTRKU+byReYn6}?edq5|&WtPAJf2N-zNN+;eiG?Xl=WyQe zl6L!ynN2q|fhjtn^@R*^%n^DH>$gd}x_XSLGo#v(_B=TCp{o&yC$yw)_I7@Dq$(Ni%N0sdOTZ$mB)M zI>b{sh8Lz?-Ci~}P_#;Q*8Ehp)g(g+*_SrqBH~}2=)yEgMj2Z`_U-JnD}h4|;tiUO zlNf1&DnwqQlbCnBsKS;X{TN#`Gxa`or_TzGOvIrEMg&2aN_j0|iY3<(=TJCOovMZ` zMe>aqAT^DWQOZ+%wQ(OoJ4GKNHceH1(Lq@1j-fG=3lJP0k(q2Tn5#Jvf2v73)4oU- zDZwM>h+%D5&U37jy+MpPkx9|@x=zm3an)yB-3mv_Jk<$I+-w`9Q)cL3*vj)vt^?Hh zAv4*iXNqoMrk$O~vcRK1ecTtB8#^Qvjsd>PaBMQ)egBn&Q@A4zej+P_AyygE`dudw z*p$i79<-P{X^OGaAk#^!8*~-6{D5M}hbg)lV;9NPpKNG@(V;P;oMwR zGOMsD(4z}x_8_=O4KLa2+yWP5>GaUF)t_bRj47V29cK@Mv#K(Z4Q|sriM)s}sMTE6 za^@*sSR$%R$#mZ>6$ji+gPLsM)M|3Uh9p}$`?A@nHr$X3G5_hbyFT1zgWS)zn_1G6 z+*}(XM-SN8{aMD`SYV4dUZiiswFcn1mN%v%0+);|ho%i@jI+aMp5kHc1{Li~_^B$% z;)ltiE7Q`27ul9_5Ufw}uy%ur_DT*{=DKV{lE{k%M|d){lWqhY#Mes)740RwA?Z%L zzIkBZZI(E|Q#>sh1{Li^OuOXaNn}BybxY^G9?+{AQ#@HaM}OW5Z{XaSw2!iHPz@X$ zdkYhvcH->8Jno}?neQ##8i;UxeLu+ceS~|sZXn8QB5*Qg-p#K|L?;6j#=%T`8Sh4B zyNBlo=&n?TkIqqBbhAPO$Lr{^>hx~HNNh7f^!UTq@5Baf%g(hG<9dtw9V$O#Q|tL0aboH7 zfCkcM@-Dr;p|)vi?+krd%NKIw&I7UDFCxk(9IKNo{XKSUFQ|RGx|!)I;n|Ke`r}Nb z7wL~8NtDy&sjeH2-N!OF{E52J^0PPHhuE{0^c0B`=|sG=!``zl%+?aYBf@Mji~IV5 zhTVAnxMewBcN;$bFn)RXE4H_idXAbIrd5>eu=w{JZZ{#A`yj`RWC$5!^*4^Bht9aD zhv$VHo>vrltg?r|dfuEL6XfT`1VrQcn(#w>J?}?A*vMN_bm#FsfCTjx6%32Kc#e>3 z^Hb8ZIU_-5`IVU(ueT-=)L#@Z#&bf(cQFaa!^_L*_$4K>{-*m(L0Z- zpzj%2lG`f-mP&EoSZuq;gH~|^_G}P#*kgN0fnSSAtbb$q?1lF$Bc9ZV?OK|k+>(s7 zt&Ut2?!&BvVtz>}${R4@)-hczk)N%ir|J0_jF=i*Dw)W-TySNvIvrEGVkaJuJ7v?N zBBzCl1;%iqeYWuO!p}}Jw4R);??HNh;l#Ti#!ny_`G;*ZsG2CgX25kU-y{-!2=){% z+Kf*&owB}SEH#-eYBLaTOkymhM~QhAhZYVm$i@f=a;f7dkc|9epbgTEN4~>#>WeMQ zG}I}U7IM3mkL?ZGM_8XX$hY3cOgAdVL_1MsKIj>yUEMWLA|9mc5AT{aPAQo!t`j=$ zwpoondJ`ADa^+ZPC;QHyV=?K{FBX}^qmKTrk5pyXvc%I~Yg@8g)n6tp>UAu%(}*%z z^%eA~kMM*4Du0lPSQn9#INFIW{jps6br2|v{w}L{uY=d`;kRF?e-?#A(w=Ue z-9crM{PCz*$rkmZk2}BiYkwNsSfz!Y-on=*V5?oNmW%Vxj#= zA-nbm?fK0pdN`j%Lp;Z5zGAQA%pb^1Ang&Ke4w6OzVH>nw}^~bXxD{%lC3STRA>g{ zmlRf8tFRGB9PN>x`k)>w_)$Y^@6qpKp?w?1-4>T1$i}At=!F!1Gu~XJN*3YJius2mu>1-wwVFW8KiB@;*cLV5jaV(j>ZFSFGB zA_m$g3leE~ZOM26Z7arI_xo&d8_E}xe!^&X6nO}Ji4C>bZeyTbf9Wrh0K>ou+D`(1 zcGjq+5H@G0^TZ$MNJx zum7^0x5aL$hIolSLAEZ}-FY41Uc~HiILAV}?%UW1BZBqM932hX^_SMCSUX^MFF~|> zMJXCwUyQY)WVwrlb~m3^e9i{1pba;^xNQ5vCBse(?XH#%^mu;S$wIJn!}x8L@~oGE zfWDToMV?5Y_0KclMPtK(v-+%Q}u~=-*aI%=$ekSB*Xg6XPb0m!?!i?BOHE8G0XHQG~; z@P-pZd%!y`=cy4u(ILe^dxjCSYMNjYPjqo?QvXs4zgv4K6A#jLTbP(wC4Gl`gai8F ztf)Ug6RyfvOv6^ra5(dGM5j)aK1wuO{|1b)#NjbMwMbME+f#>furd+)o*(Uz>FB>a z6hT=mw3~6smYEoEB#u#=u}Kcjg{y>ruOb1o(=TRv4|_~MIc1|hCfYO1eTVuA%SVZ% z52&yXs9R=@4+O?n)a$yAzX_l{5N+7;%vHROZA`Q)=1&BK2@+TGycbw*E2P`62-l$J zv`5u;jA+~%9~AMrC}~P^xgs1QFBdIqfkFyBPRPn^b$>#z;F&;dABB z@_@ioify3n+tiyU=(^Hl+G84aMX8JoVB0XX-o{M3l41Qpq*LbFBUHqniR;6o-a?fRzVuO|sa6*9-SBY>HsM1^r>vh9$r`Q{@0nGK;Kzlqtd0Q9Hl4ju3KHB@& z5Up~Z*&5aV3pW_>w5P{IjiQW?gHr>Z_S$%)SW%KT#{L?~K&O3_8j8bukvwOsF;0jB z-qxjt!Y@gL71i^qMBOYucXa{pp0yNzC@wN zWwiZwkEXp|loOwgXM9Ghp>)0;tY-?=RCEjXC2C!aD&H;eebJ~gW~*hxCbglPOtZo1 zzuVDjYkaYYFsh_1qr!KC?~3q`(PTN$HcD-cZQ1M4w*RwIcXa!CNg!XQHpD+e^gq=C zgQPmOwkP%~saD^INW!U8j62kHQXFm>7gDejTKlQ-sP*U zc|GoqjAc9#tRDB57y!A6nW9FhgKwtG4t4kGU>obl4?5zB^cWXnHc}&RixQzbkzji* zCo>f1_KFuKgNyidnwt_hF;@(tktfmC{&`7sOl3rTw8s`=g45fT z$jsFxm~^~IH5jHkB0Z71&Lc&{4|pdhk1Tuw%^Z`C4U2&u%NVUDY+etOtzYH0sx=AM zC3`15xThaMpszvoQpyRb8wYIsGHHq0+Wjz1bdIHOR(A~0NKWQPHPpMPCD*F0qoebv z?`w<*shfLUB|L1whpM+HO=aw zTzAeSv?RGwRci)J{5GjVRcreY8{+hio`=H{G9Wo5g}pbcJE53bLnf~eneBuF@{-8N zZSHA2)(yC8{wPwie%Jb3`XSPiewcMI^!=;#usfT3*Prnk`qq*@m{na67#|`{?}tIx z(E;Ok^pl&HN8(=FuYN{OovLo^2eHc}g=^^dKvMn=awq%P(x#KVh5Aq2!#bE$(%QGw zgL1WE08FspL26kaQlCz4oLbrIOSbUXM!OQ!*Y<&@myIzWNR*4QFQE@?Zti7gCy&-^ ztpkm6P@f!Vpc${E*QTA+@dQ6qGC=e^LK8;OjHlL(>J4`%pC&bR^XPtaWg=*e%*d=D z(GOK7c;?Nmpoz4#vLF12ND94jl15>K5=g!voQAwNq{)kr?vc-L3F(Rv-5#!_+!C-*Z7AzwuhEmR*b0p?Q#V(PirW)O9Z^;X zy49LMk7Xw|Y!hEAr>K@(K9c|1it)KI%}&X=fwEf2IZYTPec&u5o@Ne{X_4w` zi^k{XI!ZxmZf>BchI|*1LN!Hw6?m0V?Un1K+(3mc0S0lkmLz1uD5arGpp`=?g ztmPjNA<32smhvwIow;%aOL?cxhYqQNT>hzEY(YUT?=s32=k^Dq#C4~V< z<(*utC}9l4Cyj)a=Clj&x$Cw zbRR~*gm39yQK}38TyE`NFkKl=JHz>W)gdYv<(w&m?#5ohV8Y*x zy@J7><-}krcVn+$FqONpS1{PKoES{y`y%M(486RIZzIp5eYEn<$ab95f&QbFb7hBf z71}%Ga~8_ohX(`XU7kzj?!$)x^e#`Qa`)lG07fr&A6^V_m&fqy<@=Z!4(B9l-;;8M z+IKm?HM3$U?=&krTy%7Ki3d4K(aRm6hO?@=yu^pxkSOH^U0&iv0@mYlFYzM*?CRa} z^e!*)B?0c`^5iZr@h1WA=klbkePLm8xEk!`N>`TyRZ^B;E-}O5vbxJ5Q_AwoC1yBW z_LM&dy?pL-V5*cg=FniB{fo|EOpFTQvWU$~z@(iMZ^D zUfvbaNXnr0p5klsnGM4p^mjFjwf1%vVL65fnL%ElL zVSO33ywg4^;rkA>k5=9lu5Z86(0-piH+&zZTwmY24=}|b34XM4_W{=97w!W{5jKJ! zt=xS8_4teX02uL`&M-r)SJBEl1b*%ss_EtXtWeE6j$gSkFj_f6z{DTd2m;67+!%-e zCfd6(u)rvHV_>xMDsJCtl5Dx?;PNg@ws}Lv0zVfC27B~!X9kK0Ip}j?5ZI%)cV2OUgDcQLN+VsA7VAqufcw^bG<*zoQBX@{IOQ1QtmB zI}unVmpc&9A(!tnsp1PAeWQN|0(JDcJaUA@=rMmBM7Th7&+Q`#sIrzv5TF;E?d>9F zpl_DjN5DYOEVpyGzy{xL<*V%FHUy1g6TXdu2KP+<*sZ8O_yk0k4?yFA5$7u8Ace~< z2GMQs5X8>r& zNp5fOuz<^Oww6PTW$5;Dxut$>ZSPQS8Me4@N~lF49o2Lsi7UD&q@(AlvbD8U`{a{P zv|s-6m*V*MzyGbBamE=Cv?F>B-VwsoKm6ejfFING!V52;9)88Fr)fw>M@LM3Qb!T> z8XFst*R98_&OiVBkDOq3C-2ryubbJZ)hJi8TES97j@#; zJ{k_^oO8~HZfz5l|6l+0U!S-z0S~7+;@u1R5i)t@l~?vv-`a^Mo`}BWR6sXo|6|9F z)pqRIVcx^uaQWB2{&nr~#~(NEA)EAX8sdDVmd z$O(0yc;X2&tFp3EOHU8Gm-UzHc$}$7 zQ9ki#zwY`6oAq^QaMA$#b z(5_v(wA*jLU7I*@q9~Kwdt4V%nVDc`=qBQD>L2xf@rz$*7hZUwS%1Zf6`Fk>bApGw zfBoxUXlGB3{)b!t)Y$C18`tP7BGKISH_Ge@+^B6wj~;Db@muh?>Z+@v!ssrJ-}=_K z06S{B_~MHbj>9dt+!9mYj9f}e%DZ%(5IoY-(*DVC<2}Q_>MkBeTSr-o6OYmN+;dON zco;TlT%3KxT75iK{Nw7?tA(EmUlrGs_a+^O#0rG#X`dEQtb*b$G}aWvsG@~p0VzoC zK6=ClM;9Kop`(++2z)3miOX^BGTQAk-~c9IqYv~Y`lP8vL?D4?R?a&pCbi zbnURi4%24Ln4!&_IaBy+Wo2brd3m`ud-iN?&YU?~MMZ@+ckWzm-n@C*;fEitVUC_Z zf4;V0!2<2bBahS;E?g+))WwSzYfF|a5k55R_sW$kwNydM~iXAx?=6x zweVBKTBfe9PFufzy|!V)2JP5mkJXMl?l|F}ZrZd-JO23NwG&P_L9DOHw-D=rEnBu| zTeoi2>g(&ZhK2@h+qP}m_U+p>`1$ZHckbM&Ax?41DW_rA5qd znA_;xF|DnwO>1v&*LLsTEqrMB;%A+8mexV>5sFo47hG_Gn2%t)F1h3q?b1sx)h@g2 zGVO{ht`Ks1_0?Bv*IaXrcEb%fXkYu<*R-2%x=FkF=9@LxC9EH?uDj!oJG49Ryi>dD zuDi6m@4j1u&fRz4ecHFb{cY{L-~F!kz3+WbyZ`?CwFe)3Q2W6TexUvEhd+xG=n_0_`cX%Hs0vDwH_p{7Y;|ajlJt{Ax%pe|8xv>8Ln;`bk$`zv1FZ3(gvH+0<(;xjg&Y%j*>7 zgrg`Pd!wQpdB)*+O1Al%yD51DJc~fDT&gHD=hKg;9bfJE-RZ?t?v)l3d}})NvTN3d zb5?FKuCqss7?GAyI8v!uJo?7)*K|*89jaH@ep6>><=GcpTT^nw72ll305V$34KWDT z6PvF}8hicjnju#n#^tl-DJ%7Bl$UlY!@qW3iE_4CPGeV(C5ED)Jm=;kPCoOvJqy3d z<)a#idpZD=D-(Ba%Nnx2arsEmL{XNf)5WovDwX=pMxJz2(gD$r)K^j+QcH9Z88b%{ay)^i?YhCfIyzTdZRAL^Qk;$FMyCg%32OKNqi2_Vk4QeO)3ij0+_ zRaI4KNVqokmc%t;Eu7Eo;9KCDe5{K(4|U+{;U0b(=kpo99sEg7oNqtFr?ltw^d5b? z!9dJWF2nj82l5bWz!~>Qay{w#MCsbBXRmL+M;r2`chMQige}+OYn+kfdd4-{BEcMs za`?u49p&6kcnQf&DOq$W)Y?bP}T^@Vyz4w}M;G;%iRp57-5)LC!w=Yz?t|*aoacu>L?C2X+DL4XiV0 z4^)FpVGV)(5#pwQ_&gZQGN3Fg9uo+RnQXYm#^oi!YJ0R+2B=S*5Keu-G8jGIdL)yl%GwWE(jdGUe~ zxGy+j%EAh|9lk)JZw8u+tyHplDTM+!DyJ2|BONl;@J90wCHshU*wk@>z__WxYwoF? zJ>)TR=vlJU8n+!CJYz%4sln!j&AUUP@lyiZLh8)s`leu8 zYyGz10ux}Sc|~5o2pHy@Ii;)X8=E&aHg9h^9SoR2KWw!|zinGm-xdtxQV}aIb7nQ1 zJg0K*y!!2P=2Zme%$=}th_Zg28f*(Tx7W85SxZ~gguvaLtZb6uu26~e(_7S26M%I7 zGG+eG_V(5VWo2#Kb_Sd3+e(`nx2Y{{Eho2^Zfj{OJH4^_Y z5L|}@8@)x-6 z^#bWV?dfSs^4~S3fIeDCr<}TAh~S?VT;H-=-4;wwSCYTjuT0NNOIaTboqSkIMoLCO zUIt)f5*eaS+pr9!kir~8YwH_=p`|UM7B%_b`-e=yp2<`*{+9fJmNYyoee&UzmCIJF z_%>}Ovn_ zp*Sa7$=IPbZeJa2-c9nI{xdD9{O1RXb6(Ig%4f`)Q9fhltX=yH#tcIb!)Zi!H#N(h z3{#S6XO3_qq*@LrGqGeU$jVV#4jAz1I<<*l&jRqL1n|;oExGA{Qk?aembzs{V<>pb zeoGd{<(B;gIk^he3Xfv0_b3A5$j7u{Tk3+_NEZqLxJ^KwI0;fQCOot2HBh0pv8_Fs zN@qei3$pSsALx9^&w~O064$$Be@cpp_wp@!8rzAag4`$~Luk!JaI+w5IFVxjA30nZ z28OQ=syl+KXci<$!ynVKwulUY`Yrp@&(ffc)ANRAkfjhMP`czlU{C=Tk-_5p;lQ&k z*uFm4TCdi(x2Obb^kZ5c@quy++rrrf`Z@kvGK3D2S3LA1EoJfU_7(*SqHD&?VE~hzt)#WJuB&g~2@tyE6%TtsOP^0dJ#R+& zuKfm_;*5^~mjHxC`TYGPp4VxqXug2jXa7P=(=F^mt$65*T1sv3U{TM*;BWOsXeOY^dp)0>N@1(eAri+)XbTO8^UaT(8OLuSn< z{{Ye|E|{P>khy}KF_Ukq!s&QYv)i=mw%I4=UGP!b|7HZX#-#8v#;wcoG}VRInVQII@`jG3nr zFv<9>oZ{TEN~R!lW4%iAqApn7rV^2Z;{1_Hj-V1Cdx^-3Sc$~WT(LQp%YqHNcf>%Y zG<=qU)yHzIWh@2EULtdLtYjj*5FSgz6!uJF;Z}#o5+D;xq&|TlPE?$okJ)qu`Q_0x zon;qMu;T2oN}7<}+0?A!VXd^x^umt7;fBaFPVDy5*5(~=k_OAu zpU`Xa0Q5n|le@*)Bb78E%5$g(OxeIOV#UAmzw2nu&EZ($vf$${2BzOmIst z){>7UkLI`nWnIa!tCoj?v@mEdt)nnWP~D)`H@6`KGOe`4yk4oc>~1Yxy0bB~T@5x* zJF)yLr6ubrQWG?5l#1I;)AA1#XB8@`Le|LX->fA+Li5Y8LzMLL1@y0U_IhKVVUtOWN=eU3=T1G4 zex{au90~KeTJmdHiTwf_QHR2!+4PUr zFR)gJkQx_{nV^gaTPO-GpVmlDG8x=>?9#AFifQw${F9fpv?VRH zd~I5&rRD8IY(cC5=PzHrq8!1tyAa^`P)n@~)^9&UEbI_}DT1;iB8a^&ib#{QXM_=p zGw&qdXKp#7BotLF9!dd8BkUsX)9=)hrgIGDc>*<=Kow+7SDt4Bl{;O@Y-mw2)wi^g z=@|BzmR>PK{M$tVninWExNCpu7A^S_TI&^y)`uyV@LDhTFeNiY!8&XNicq2+r!>Rk zGlcmjQ(E8L*t#2W>z3x_&Gobgvpp?s2JC41{hA(5%SU1hyc% z95r-1o|;*%q%NT%c=0J13_bTxT5;xVMGvRb9A1z$heS_FfwZO1QIZdkNKPS<96Kx% zS|Nl`(@NKA$@?kLIdrd%G zYueOlBE3lGYFXjj!wLd(u_Kd5`!wVw(6nuAdlzTTRZ>q@XRfHbQY#oaPobB0v)7Ys zH}6;>HWQ0S%u}*!Y8Es#Eof^ir3ZUR(`jBuw`qGdg_ap34+p}udlU+72sTl`r#+Z{ zxRQJ+Z8I1?m>Ekk{jSVk7#k0AB=liJyV6s|8V=-fS6O>CT{9%=!n&fPlet$*UbAee zR3jDlCYN&dY8k62jMGjVn^L8rW~Nzl*j_DtHEqGtLQ<-j$$4hI?7dprhMg+eKdD-V zk!98zzE{gyUB7K7g~aqotvNo!640B7SE*+GWpan{$$K4j)KSmH4%HPvt}d0WlEYQR4*o>d#EA; z_p=T+0{7N1esShUTJrpIOi5y!Ap0XNt#VdrMJ31i#m2#`S+gxQ=FclVeEvLcBS6eG zD`b77rOvG^okuLtVPflH)|@$F+T&?5<4!`!oF#ELn;4!V=E(T&1eENFrKz-uUJ|kW zNuxz!f3eRmZ=@IGEuiX3=91t}+MR5n#m53=;^H*g+djg34;~K;l-AatLAy1jD?+#aq4mcb$t3lWnyUt?bzA5vpTrFvA%S1GX(RT*c|! z(LIFwbYVyqEBCM=$zE&(;dqx9!C!Ce=THxMA8JD}^%WX(pQX$6ePVAd96uK{;_0*E z(c_dngGOoQ6m-rFcO0E6Qe&cKh8PK^0D(#{Y+e{pu`~Zc!H5sFY-4&T)D3wIG~g|c z;xXft5e5yG`9*Yoc)0Uesi0t^QapUIk|lznJh2IAm0@Teq-1{>o)2Rnq740w9H$K9 zfiR|0(c}DZkFnxk4tP0>l?;Kua0Pf?@IX3~9*NNFI!UXu2;rj(#d+gs=S&ao8huGh zLdp^yZL3P){iI@34Jr&FVl{yFxeHP5hgv3lhS()&4tg6kPTxqT_;lFg5bS3qh=~qe z3Gi5G82`C8C5VncoR-+}pKHUPT^^%b7XLW#pJ%~;o&ks@-y44jk?^l#5c|W?k0d;L zI~WX>`8bfSv><&rkS0$EyMyk+f{-xdadeh>dbiIqH82EuYM_22rGBn45pXbp zyV0d)frWrdgX=8y-h{y3tPZyCY{8C_ti8?@9D%MRdt){Q2`uoAB-rON9d$exT|8{D zk}mActa1Z)Hv8VV=X@xyMqH&lWuAI-MmzkN zlBFYE{Fe#9>@Lu7(oTgz2CINK8BkxdnM{Zn4_ZMw6SN%tN@{F^07=5`(};-mCs{&Q z(&YYhdR73gDO1KHb+D$O0-mHf0l`C~ z*xp_Rr1QrqIqYDi(qnhw9XYH!Dm>$X?_eDmw2!%up)D1G7Di&s8STK>g>{kL9!P10BYyL!fdz4h9Z zX*0I`E%fFuKlu0mOTD;5(`HXNvg7O59C&wYvijM?KTWyluhTdG>Wi_HezM?~AH4s1 z!GC}6!OIIydiDC_UMm0ZyLWFIz3TE`9Q((yXO?g7IQ!B!$~Mf&nDEobCp?g}_uK>9 zxBlm&_trje%T)`X`r0MwV-9?=e|g=wPyh4hLz92__+wpfpLO*EkF}{kRGPG3fAIMW zWq1DT`a{bK&l|JhzTZCo>!*&rc;c`<+TZ?s!=a~dIq$j;+s{u*`f$j+(AX!(UU78J z*yNNk%6A`qedL@E&ixAwin40?nq~Jd*?RsV|4QUAUT+=7Zv}Vf&-&Zn&-=9S2i2?J znO*+te}D4Amb4*1I_9fu-%>7JG5V6EduSZzZV{`WZ=NsBPzn^%`|ND7s^11uJ_=#w`q zF1YC8g-^Y3Th$el_CEegWzL1Oe*D6Lr7Nn3RgFI^ea)epfAr`#-gtlS>)Ewm{Z;nR zH&bQ9CvS;@H{PVNM%xIrD_PBrC{OXW-`(C-atavPmPRGS_18NFHhW@*2%bjzpe)7rJ-}vR*51jMfXYW6Be)i4he)jb8pFDW`{r7ft zJ^ibvm7_jh`~KdBPrvxrsjuJIc=Z+azuA;|_hJ9q^w}FP?A`l?cHoPxdk*ZI`P99i zY&rDKyOWDXjCksS*Q>^UbK#z!fAH=Ni}s`qH{% z@}JQ@YyV=+Lwg#3bIo0M*9^~JRPwFD&+<-R^4(j$@w0uW&S^T~p;PBP)cpUp=iRZq z{&z?HviJw1AO6kFH5V=$cgzQqS6$P-;dhJv{@P2GwO5V&--73V{Ps86-hcm_XT5*z zSD)Edn}6A|`>(IR<&Q6a|HTClK3rY+LH=1aOOozb_lq@OjJo3IPrmYx)5cu6V%E#2 zJiM+Xf8F%2rF{6~aoK67{;x82|5sPsHR{n!3)^sin1qxZI!cePe7d-Ro2=Ulh);S+XGx&GM~w%_%C zYdUYJ{mVDj9Qvn!%=>;y_EXiRH(jyfoS}dFe`oHiyy~+r?w@?k#L63kzX{E|V_nI~ zC*`M($xb`r*WW(Av+Anav~O=%FtYlvJLb>6>6X-A{O**wS3kS`$&`6BA3ovAGoM)V zQNg`!btCfYzI{XGs&8+&{Fy&CPXF3adf)icpEu+e{(Z=WPrb47-S!h|ibuS7%EN^Z z{NRb3Kl|OA|Em1(KVNM8urBwLzg_VAofVgd=Kb>Xvlngp{&BO8pD}vz&;F`DHtpJ) zpH{vw{^b)tdElz_yAE9R;y+GrdGv@~MSEX=e@gN>)0+=l_T!ZwocToAPbcmf_P=+W zG2w_ky8oA>vR7PCaP;2PG0G>O{o_YN=M_}TGKuT0^dR%|&%OUsvPsIdbcBo$ zrTK6iJt(EWWrN8BFGDu9ZEI0OjSby+dCLCw9KT<~U9^?f(c|G1n&XW1!FEy`L_kGa zw|E);??2|k3*J4u^v*jV-?z3jNd?wdKM^p;1qExrA(>yK_cb-8L)R3I6Fyxac`58n=lE4w*Qupo-`WxV}ThNt5VBl0(}IRsH3U!usYy z+Vg8aqwqA^=cG^HCXJ_WlND~?UbcF58NJ@tm~Uw%P29c32G@ zHn%jKvYB3%3({UdxV*G=djtCTvZM>2gJY|wZ{oU;@2ux*q6}96AJI9L&M(p#l0XKflTK1XYel(6KSkvK@n3)@C%xi*S%4}hJ%8&2 z=ln5Kob#`l=8)e(@B2j1sl(4Gi>!~58khR*F7@}g)c@}}smkqdq$%@02-96c@IRyD z-_#L*#;WiRyp!oCp94Mzd=B^=7^EDiCcOFBL)V=>I2aDj8Fcu`=YY?F-sb?^;%Yi} z($PuBy>#rQ<83-L9QYI;KEHDQumhM&@$*6ir%w*{DeyBuz?XdrFPxuw<{4pg@Of?n*Ov(2o9KYv=h5LO zp95bO4wMift#mv}$0yKh%zOB$aHoWP=n!;C@{9XKmkGaa^#dISu2|dS=e3~UP6vXUem0Hz!+ei*emNa}@;NZrI8aCkLw;Yv`V~KE_rL=WXijq<=4trZ(0|OC)aFZZ zK#!sOuvhpw6erq|58HsBF(kTQrvrWt?4qB14h&QdVEwt1ju$Y$VV&wUXJbyod=4F; zx(C&PpB{x?JI(jt3v7a+^YHIG=_sVbPd*0*0tc|xycfESc^mVyoG_1JE=QRWn?9&? zn|R|$FMJoQ^|3~I|NZx6mWiK%ht3=Pf^WZ-jtn~d*0`|7;b2rwNSaTZtM*jSqKpzFZJ@ydo z>v_!a@S|u%_KIDqvaWaw?oFY>w@^9+1U=slJDM<4J2^El>nc`Xkc z3p+q-qYr2t5Ucl}#UUp6DJBk>`VAS9eRIed{B?is?mydxcn9_}Nz@O@O0N11nL@nWkE!*aev?E-_)Un<$$OWQzGHsxq{G*DVuGJc4s4>Ux9#&c z^c#6p<{tx?2Ux3n=zFU<%KpW{%7Jnsd@r6^k>$kK@4;!;5J!>65%asTCx_>5uvg-z zgNp<3=WfFO7@lF_1iA3%@4>0#G@hoy4P{15~e&4nKYQIk0v3@ZlfenR4Er zMSKl=WB&R(tScl2rrr$JYuIeqZcf+}4Fm$85SiT-gA@Bp?P&pdE~ zFK>+hZ6pJJTz+utI^t|E!GGiDD{%JL;0Ld5gFlBjD<`bq($mx5Avy8mbc0jZ#T<@j zBspO|_kHw(SI0?=h3^Jm9{SA*&(#@mI=m<2uiFQQzT?@)y@;6MofOsppp86 z2T}N1H^Dyh+6!@2Jge%B8NhD*|Z+l(5`^Iwy z_FoM@erx}U`9a&jr~9oB&SJQdDTJpQ0ox;`fU z61;oD@pSBq_|Lo?ygJ!iHU)dI{4E>IBgS(Vk5YgBn!R@w9`Uw&!Eg4fuqW=v(|sN9 zEnNp(IUbLFcgn-}=@1w4Q{p)Q8~Tj=e1j1u@%{83tVM~ZKL29i0ph%z@IFjtX68QP zogbegCL}Nwg0J#782vpnUq4B{`qV~Y?~T`r@aOT~BjHe;Ksi5{L6t+tdA|dE_MdI* zTlps8>r;Ii$o(M>#LsBpj94(?>pvUcGYeG?o5?YC@YRpE`8wC%b^!4?Stbo#-_$cv zKWJN5+jZRk-6CJd`&-Akf5d({77riOn18k&wA$J|!fRk7W&g<6abL$-#|Fw7&tu8! zNnh9FQuaz&$KfCO?~?jDK2UVqj)$-7ap^W!7VB|5_ksi+_xHwq9k=V&K)Z*o^InkT z!~5%X)@tjyL|%{kI_~TDK-1@F`0#hhpzE_{&H4}3_v7$Z9T)rK{2OLim;3X$ujkS9 zYM_59a6L@5MK{knmoL@$R25FTTzU zdKrMOV?Ia1x}EF^-hIKmcCe*O@V+=Fe7BJp;2%B@zBDp`ZyF&chh)5Sg?CyHrnD9B zkMp~w_TAObDlIwaN zViFvWM2!8*KE^(Mz8!-M@V6>3zZu_~`!c_~ZpPLTqwx30eH}QM>>xiMg0m5W$DZ<+ zEnOn}FaCFzeH|wOKdAgUIR^hFjmuTzT^^3R`QK$dxa9j_(`PSwWj!$VnD%^0CiF4* z#yY>7;>X>59rx0MgQ1N5TI{(Q->CR9tkoaj-%-G`L3l3kU>HlEM&F)!$pF9KhL|+f zdx?(0{0z-j_$Iuk;IGMj+4qwDgQ*N_b>3U@9gJ~RnT78=q zO$P7`4JTYv{Tez3TcYiQy@Cwm`Cebo53=|&39LWnQFy?=M}U21#IcBHgUNs2$*~6b zCjNJye0leE-dP6Z_gL}XCh_SeItD`;gXewNU-$RWoX3|2(x2;m9tatb_u7niHY*2# zqCd*9ME|)~UzdG*7Mlzp7KeoWXPV=GLwp;^{`*#b*A&mh_}`3(ZH#?g@c9J)ou4r= z;_sa#7XvY6AdbL$1^9jhA?Y7J4}2MjQ3l|%BVmr5Hf`Fcq(1}k8#EL;yhPxM=V5#u z_idan1M$lMe>2wDqk4dNIFOQvz47zw{_h;dKfW}WzHRh*AoiwgdQ?4t6rIe^17a>W z?2s?BzRdbE&`lZOn4IAk=wxe>^+m&*cdmQ(s4X8{s4a9N#v+&(cYC z`Z}3&x&O|oFQX)U{#@P*Jm5JUdu_&dV*B#h8FMa249*{8U&ehI=sg**&FOvlJqmL! zH-2Nn*Y$4La>O)ZJ$yZK)}yIYr^d{~)vH$zN;%~@y^mw>v|X-0hua@9b}zl?4P9{S zue&l6k6b$S-Q9lOc;nOu^4#isnqlLj6<|O?B!mt?R67<55E}+I1uc< zh`o~=p+Ec9*Zbv=aW7t@tgrNd@rY+Uxs80rvrqTkcc1p+i!W;Lyz`D2OZm@x@4YA9 zW4izT`?bq2zuct1J928rHJZ(dhnLaD#@=^#@11Z~RaNlj;fEjA_U+qe{&per@$=6= z7rcG;*=Myo@4Qnx_uO+$KE{KGJZ?_c@xY3=F7IFCyED`l-;M0eRETdmA|Wo&*WZa@ z-eO!o{P05_M$7rK%Px!CP7}ji+i;(jPK=wbt}fShGE67gy!qyvwYT1S%L%M!-p3z* ztbPCc-`CpP+u63qgoBI^Uo&kuJMl9fUNS6<4fIM*@4owPLhLX1!DsN`p@$yQz>|0r zcz^x%*9#uTYR|Y|jJs1}zV_Cc-&=*wQy=T-=&eNI{i_9u{qY@k<}-A}Ej|ADF7?$fEiSoGYkD-W`LvEkw;>ZQTtfQxB-S! z`t5Ij8#5o7PY*u$pc5z!eb{k`^`2ql41eK?C!TQZqq~_H6Ua<=sLy-{mK2y*G#7y z4szYzy5?^@82)r`?6H}9X~z1%l^=(r;0o^v~#;j?-r z$k@+*_A?PnVqXOEhU<$ix+tbK=Hyz{i_)29o((eA9X&eE>B>M9ZIcW)qno;pH9t1-t*5t zFXYgRm(Y2{oDh3(OVMOhhA+>NZazEr1KpC_I$bl5ZoTzZZsvH7H+CZ1_v@~^&JiYO zB9_3q?Sv!pfM>M$2-YfYa|F}bpLz~D`27~+In+eP<8I<_xEkN6i#qmhyzWju^ViAu zMJ(6J&c`cLZg_FuEKl;;P0zUv&Q7>7jCj|qfQNb8EyYT+jGvd!j(*^Wd-<}m&2W={ z#ut6XvJT*}U_8<0uYdh3gRz`p-{Of017E;{eRWH2@E9LAIvMZYKJy-%5s!P6`b$L0 zpx=V}l;dyxwU-7SgD!i59y$5N7=QMGi3#1dOFXvresLd7&(S~da7u1%y>Mlna+`x= zrI~4R;v42OdxAgih8M%aIhxG?TsIwZg3qwM_E%v0o!WZk0WNgi&Ci0IIoUSGr@!@F zj>j3lS(u1t-Z$}Ys~GkpZoYc)JX#s^7V9Rbgf$=PILR3N$Y}7Rm2>}2eY@!@w?RD6 zDM7xX`Iv5a0k)TnV!n54i+r{ffaBzAIIY*c_{g+6*$ns>c01?BGds=<7iYKqm3aLj zxevf~qLs(X$+j_0{jKMq1HavZWUNp3P+m{dy}Tai>u)v7GU*h5gKjhLo#wbi#N!w~ zkH36&l3A{gvzvT+=?x8*r=Fr5uwg?Gi@|ercvcSU*K^J}C#JTHBi1}}!ad6DF>@z6 z8Bd0V^|3vHPPGtX?(PjJ_jK=eEJ>5$mFh0A}`i$*4`0r+$dm4}9vE{Lp&rb5s_1$96uua{a z%M&3hjGxo|3x1;9ZZm)GcgwCSllFl?v(z4Y8IKHO7$ zdcs%PKXUTf`T07hcqiI3X;t=-4zJZgyi)H=Cu-%@CiD#W}$Gf}tjMG5TbJh#v z_ZK^fuI?t&XYcFxPnoAUJH_81M?{oG&)t0cSo}nWWj`|>b~(nqm!3QMv1kKbviH$f z_e=}UPBsxbi83d>b$SMt;W^m_es%|S?CY0U;)M*`zJ>q~k@~|YVw?twp3Cozk_>hC z-4^pX*ZzEG#VuwHotE_jV{pL*7wAG@`x}d&D8rJkd2DSU#jTf~yUjzuQHI}_*G!9( z&klV8E?md1Urx`!a$UQh59YvM=W-{T=QSp>-(ipA0XE~>m%NjCGf?y#IAMK`g!MYz zcgJ_H#_y^i^|j9~kF#6M+P>~)nX=Cvz#n-|>&sZ=gy8~?J$dQ5n=CNA-Z*>FDD%|G zXGfka%T9G*bD3u{{!YFD+cVU|SlQEa&pl_tVwilEVcXl`9=w(7B>Eb>VqD}i_v1FU za^1eVX5Za-uBAKgrC-9ad$;&wZ_&d1#MvqS=48(y;)Tq#ehl z6Y~Xq4J1A1x!CxATX&wBd4YX`{(3jfN!BpVZttmJ4BY&Dp0Dg<7ww*92>sd<#@pVW z>pSVWy?t-oJNehLj5^J&_B{Zm0r_%*elfjV$H}hByykjN{(;+GKeutRAu>L_dF_N7 z<28`<9M8<~Gi=6pBIEh?^BDe~L|;G8&b-7Kv1zA-Jyn)B`OIyd#sMC>bi!jG z>baAzBm3-5u}V7~OtYPjn3DmEeJ9j||7}mQZ@@OjY2Onz$;n4%`2DHpUU5e|UzmPb z7W?v=pKmdqcdw?tV@+G(t0UcZ+ii|IMSyxGpJmK#UiMno0VlNQH4F2f&t9<~H+mQ! zh9RHr`oaCX$-msTx2~P$bEW}jr*)A1xgFLsr#L$H#2Fs!raexEdwVRL>)ZVU@WAQ0 zGv*^?puf^!na`P5;FF=N@w}^g8-D|C)227tFcN+5g_D!dj{co=4Rkx{nH)!VnxmcUF!RtUF7LGlL%aS;axB6w z3vOc@uWT{go}T$#RpZ&Xcz$2?bv#pv)R(`1%JP7-Q`|hBeOD*{6!f_H{BFEvoY2;u zymZQGJ!)^?8~51HlWCD{rxQ<{{Cu=$y5S$l2{dz=(|(!LJjn2z{46)y%Y8V-?__*> z>l)8F$$VrQfR~$|!`HF5>8pF2zUEQC(NZCQFWRsVeTF-at=qigq*p{t1b%?ywzjkH zyF0a)^B5;5d2+&s>$~|Qz)OZ7?={26_a~f^eO<}*adz_A?e!TSZfB)I}E;On_-`e z00$}B8lU0d%y{W7t$)4r+->f1l4-d=uWMO8oz}X*&c4=W{GEJu@YJh6Zfo}gK!cP1 z%lmG2xI89Ku|3SscD?ng4?24?cQRc#JIR_;EEDu_J11KOobI{j9#4MSd6LL`et*r_ zN8d}Zqa}0S+;|VBPjF`*LI<6ayeCTpM8yg4ykhotxpITacsb$ZrRQkp^jto424!yj zdF3-MI6JLd?f$G>A7%FBhCk!L?d@|a^uXyov}p4g;JJ;7liqsOk9YmWG|9Ho&F6Bn z#mo;kJ%?|={q*%2`{hLK@nHCFXTWfZt2@a$bl43J z@);keb-k0`a($=15R;Af{c~Bz0ow^K_~K-9Wc=OQ!8d>(;>CmBEaTs1!ZUKzPdOcK zsoXaI_X*BCo^JApIgk*J`v6?07%#@sNv@pwVBFBgo-p1{ZIFj{@ZIe`FJM3(AfvI! zgk3h#&h2|gcH70cL;sypG`*DRu=}_6eRDToSLP4<;!eH*_~gV7(BL-jV*W(A+=tsW z_su+Uv%#2W++c89H$4ZB-C{^Qj`7-eH(Z?Z`5TS~Pc~5HpV-!fkq2YmDO<(FT! zqap6?Yh!MMvy;yri(WDffZ-+EKp@sJ0xZ}Ur{v_bF&$1m0AOGr5#xw@b{%5fVim_y070|VcNkPCw&Co_IZks zkE)-j!?4}#hnww{;WG^2VNbE>IoiAFCca0_zwyQWxScVl!8SN0@XhYSG8{J_DOSB? zd*c>2VSIp}%s01d#tU}Fp4?(EXahRjbo2kW_bt$M6i3=4%SJXhmTW9v+XAeJmw4DR zMiBF`C7YKBB5}mSCMbz5V`PJD%VR@$OAr!X31kTY68J*`yO7Q9CJP%NCoDlrIGcrK zA%9Lb{Dc$Gay9|N*^mu6A)90~e|_CuGd*+Xb?=?4d#}{3Gn%w>_MP@3-7?OKM*-N`_JKyr)H-;}N%~<#8U* zDjz>p-9?p~CZ73^(xW&(DlPt~cS_(@Z+FA+F?~Uu)==!yz&@Vc6bIKP?YhC8<}f>7-r>XwKt`reD*@@5&(54`^i3rT)+RJ#?1 zD{UO=1@*)9Mcr8rVRjxhu85)`jV~ERM_fGHuR8BJY+YOvw+BcYhbt=>%MG>`79jsL zb479Vu-_Thf1u2y`8cLAjJ`tj8+hPXgnc_E40oD1@D#>7(;Vfq2gmYZIP^Hi7j@=G zp=~ka3u}9mXhYsCZ5{o18XJc^nC>t;2Tg_0RjzXaaV89c^2fW0?qG1gt)$+yhw2bz z$|PQ&BZ(S6t8qrj<)MDiUWE0hQS-daC)ceIUf^FLb`E^N1)q|?V;w-3`X|Qe80RsK z!8_9&rFUU|eh^3SH*iL^8-=#TarC9}X^|iOeyMHd^Upt@=&S2;V7jC19Plt$Sj9pY z)2{o{X-InJHE!xW$BmRe7<#Zb4PheIyRyu14_osAI*QRpVk%GnxvZ$ML7Wf8?Gfk+ zhC=O}X#+hd6XWti0`wZTn?^rSMp%D|@(Q&}(9LoP)>Ybhd*+?*pf9T3h^r6I4|*{6 zg**zicgQ_%e86Rd-9dMlErSlwg!zDHo_Qv=T4Cep&(qXn7!7f8y#7_ay9oP!!`48W zJbQ`5UnmUn!i72w3uxD~ltWxuY3Ab!m!-gx7U;u{*=2En$+$HxT?#k8|&>w^1g z^wvFcNV_O`+wO^o7-nkyp0z;Qgndd+bX}j zm2kO%_pg?7jf`$9yaq7XpQEoOqRMuGhNySxm=g`og)+@SI`O;M_iE+j&)_bf?$nBG zd99547L&d|bz$Jl$g2>?xu@Fdtg33b30En{|5UB_NPQ(=Cr_eqs9%v`8Z?e*~`Bib!u>W^~7u9 z)R~YQNj4m)i|-cQRJp#H$o7JJ*xm{h9yUHE0?T6OSX&YGE?u9GW4eWK0{={Zo_*bv zqrRsaPJX8p@@>TlvvZ~)U^3!oA?GueQg>{-QSZ|AJqDaMj9z2s#?DL8!*b^xkKVX`%Gm6cVDos%oS zQK+)|MpLM5nEI=1{TcZi`KQqVW9LRs(&&jvQ`>rC?7X(?&)A=-zce}!W9PI*ZL9Iy zBgXP+WNXqG8>|)`h_Q1sJ~uXQ=42*`4j4N(eNMIXIfjn%>7udo^2yfdt&wfD=s=vE zV=XMgM4Sy*E%GpQ7~7nTIuK*$WnT|B8RcnsGVMe)>VUCxqnFjFmxiWn^^*5!Va+GW zc9bp--OHCR7k>LhoZU`^nz>yg1ET|F(t*H!wXJOAbf@j-t-{XL`EjNW%2WrYjWcb0 zxpm<2#~&BAtj=@QzmJUXFbSCY2Ai>SW9NxFz~^xBp1!y{_5+n$zYTubhVpqbI8%aT z(oL5h9R3CyMVdM>G6>ZH-oF=T(@8L+U*)wgJ_iy$I?1|SH*$J@BLEMrXH!Szt)ps| zZq8Ynqr(ZmujtjPFu>Jzy3(qnDAMhG|%f{aLoJY*LlT2R>8ae$Q<-MtQ-F26dyRmVh z1KgM6+{~wd-*zmVP?0h4yaaV1Dk^2<4b+&QbAAa~@Hp{#_=Gwmf z?Qe^36JuVE?G^9c@EhMO2AsbUoQHrSUViyy@$GQVYwpF_Jp1IzN4hP<&fPU}%C~px z%gDSqnb*49*v{j=tMSY;&p3U3eTlk)F*wHJPd@o%n3;<>e4o75WmakWd5%q;-9Ak8 z1VbynyN006)fu@@;Xa-1{Ej>B5PA{(_xK_gec9e(#_-mMv3V>^%X+2JD=YLko;ZA4f=n^GuFlit%+{uZkG=CS^5HD%)B z_7bm+#d+>VexCfMqAb`Z@jZ%Qc)?b>Uvbq+uL@S^LO+m9dp z=tp^`j&E`qJu1$Q0`urENs|u!Kg!=_G3Uw@C+msO(X?yKG2cBA^b}eK+xa)X@r^t? zM}%27Q=IPcT)X-{;6tGnE+g0RKJ=-yKQ*o0uzqHBFI1mPDYwwF(%Nnsnu29>9()5k zEWlq#TfRx>wF&$^WV}Nsxm-q9RA|TAcMh0;r-YOKV!f->JxRu4`#&)+ee12aI*&g3 zsPL(S@21~=`)vp7$T7E#cd5)SQ2f&_{A@rFMQz(!rs~5 zsJ08Xr?58Xnrp5R?FrUh@ZM&o2ki~^vSE!S-k&ocxJTJ}l1z%Bd$Q-j{5k^W+tog` zg~FPn|2@TXaZ_d8G3#EG-m%V>;~uBeOc&oDc;JD8?K?>GtFON5TzB1d!rltieWru& zz*EScHMC7w7svJst z{2is!OcU<#(Xs9tM_Da zb8u|`-MqIAKG;OkTB)*Fhokf^jqVnkCQPUGc|q9t3opD-Ec)1d7`ub_B)JFa345O& zTTloPZOtQ(JQ4zNg#9PcWZ?e3l+TV(W9_i@t|T&Fz`J!PFs4t`1>~vKtJ>_G>A^k8 zrr?KT?0faqSG)2@+kiQ1*zvpXz8h*w9Eo-&I3FIY$3o~~yrtYR4p0UTu5Mtzu=zM28~y6Y z$Vem}mJRN4^nj)x|MNSE9(m8XI+H!@YzY!sXt)jg zT@a?i9#z)mC_SD?J7-#8pHch05s!Iys<~7baNc?6osn~R&pr2?6Ez3V^k9ED_L+nQ z(38~W01w8FQ9S8*jh&~fSFZoS`k1FeEjm21J7k_dl}>TlwRC4)uC$%&<6z9KhXwS% zh1fXP1KWBSPQTyT%t%L2PidqxECAnog~zaB+~h&Og#n4RN&CW6|d7Pmeo zXzduIzxRV5{6Np|(*f3>$#7?VuC$#q9k~De=RX&+5B|eEc`-6)+)?|)@J>F6m-9sJ zKS!HW=$aPbjPnh^ud(y=cFuF=+I#b~V{@u*5uU>Pa|E?sHct;I)uf1HeXbTeXFp5` zU;78!FGc3yGisk0eDa|0&T@(JEsC*6_F2$gMTKJUmLiv0&dcXSsr@K#5HE#>VSLX4 zVX~hu!}?q;cK+al4~Cim?2Rh1=!^Lb+b4zsZ@TFw7dNNH9rF{xfW934d@=L@C*~ib z#{0(3)7LTYBUk6g+*hcPQ+o9O?zt1#+gePW)1wg_DBt?3tF9`k4w%oV{UiGO zEKZ9u!vfy-6^z;F>+jRlxe^p&In+9Y_zm^v)zXFRY>Fi#&Aik&9_E&T2fbM#@s*tu6BAL>&CD>kg8jIQslzQ35KJ4jQ@7wdF2*g4j*g$2E@Ek)MMEBu3C(ANoY zx~TPdrJN@N`Wb)N7~R-;vOQ(!vr~15;QH=i?^r2CP1`u=XPv7CJCB+V&r0{1*RZ*@ zFgyS0Pk$P04#aw!QtLgAj;wesmBwn$&+FKf&;B0KTCC4bSw)!izB}ujv2*WiHkL_J zdq5geR68Gs-`IJwOao`fgnf5KnQ!Ww&v#dAZi=egVs)b2`B>+Sof|tZx2|P@A9L$i z7lTX9vu_~0S%lYk?FPpFgm6+_#?GZ{9_F{3{=E8h9r}u(Y!N3ftx?6eI?M1aK7&dtqv*OO!m1`O>s__jdDJ?YQfv$IW4hoTrZp! zHWwD~UVzgUdS~2GYwe7kN81L!GlvXG?l01nb?704?m06(Jv~L&Gw@W?#d=pQc3$pv zuTgtQ^mVViX6^RdZx1tbv7f!zI!uzcvGZ{I2$_EyraCA`cnx)gp!Ua9mAw+fMbVR_ zcl!KPv1O#m$8<#PW6|v}4L&^$GZUeb95vzhOLGjxemR! zmlnjyatYhtR?L1iosOtI?V!!rd4B!E?)YqcWq0>ceU&R<{{9_qS0>9lHrD5Av2)N9 zb06P~kQ8yPE8r?IG%H2lTr*k0p(*Ghcja~A90lG+I0JGRMi)(q=klpRde_?+zw^rSfl z66u2W9<(W)x3G6u(4DwFGMqoE|Hb)m{Qb5dE$k044%}hmNoPSCJNMf;?>|-NxuQK@ zmt>?F!5`x9s!oP=GpvWzV&|}T&=j@z8@9>kIy3E2ceEFA=Q^i3#}T;W&U8ylOWc{W z;E98=bI;Dvm-D(9)t8s!U0PJLfU$v?b4T6OdY{fVQcZTw{c_Yg6}AcfP6N(>Wj}aW))t3`Q^}gL1X9A&O^rK6WN!uollxRy;|)Y_Rh9m zj_)XPds4_9vch=2)PQd(Vk{8muNXU*b`Du1RIo2+Tle+pwR%=$HQPDcAZWb%?z_df zyc8RQec^k?jJKFOXu!M2faw16t(Whg54nnQ2k*fte zCuxhm9p4Uz?~J*xLIUg??L?{PJ%J8fkQwF#o_+S&)MS8W(4gZmb{=l$yjH3T`f{o+ z5gy|A>8S8pT=!lpc23fEZ3N@?n{U3^dGygooj2cnGw-{oSUZJ&6F%_u*I)1E({W_+ zjCW^vzkdJy_d7rQ;SU|OCwjndv;~--%c_mZg6?X@q1%%>ld%%xauSg*i1+E3S4Gg; zpR(x|m7Xc?TD0@5Wnl1St5c=OllOmX{&6?qtA;SDk0)R^L{!aO#?EV}u4+lIilLRi zfuyZVnTWM-Y1Pw`2$~;^ z^P8$Uh&eePXJBnJ5nI)lvGeM#pK8~iQt9JwtKeOzn%8=$nhjjh24CYPUi*$Vs@lKH zX6)S9d8xKqY<}1^pA)0LVg3f;D%W{XggVo(lCX(6L)baiYp8jJs_fT|of|uczEAZgK98mR^`~mdz!j~+f7j>V zaV|!+>I7`P+V-VZtE>!N#o4tkH;iQi^Xu;ryp^t63}XJB-wR?Kg7*i+h`EdmrmPOY z&*d{>w0Y`{wP@fP&6mNhdCe}?(NyzT9kiOu$e^4$!23J3d8_-VyvY!r!uaF0*IvW4 zoH$2_m@@WcWH9A)fPGu|?CQLR*T@!{CWDa^53O{)qmN0{JA^4$&m;%K^AweVuK(Ix zRX6FxWC~c{if$E)`V#-2=@ zGHG=H^HIFN3-8O-{8TmVH!Vk7^DXen>jUt9-OS6GK9dw}(%LzH%UJ8zULt<+-gz*4v+wD1kXVyOapp2IsCgae?(TNiyJ_#1woWAj*Ld9k zyXNzz;NNI6srkA#ZPwImv*Dk!p9;TS>A?+}-cQBHQOJSU^c!2BnzjKQm<*S0 z$v(GERhKGYU%mLgF6=xoo|zQ&5B|(Gxn+R$ZQPG*XEOhQ>K${>CP+CvPJ%GDZrX#I zY!5M~jQ3^;cz>kc6~9P2Jz3VYX4Oui%@ekcJv<1eU!UClAKLZFaOpO#?bCXVcx$E0 zgnS90?L!;r@SYxH>yyJ4P^Xje!g!qfajf~mx)9>i*fs-jTaWL-X^Ce0oeL| zbcwSm*k{80ra4#A*gEv0oEQ9ZKHm`ijCK|b*1*8$G$C6Fh;u4n+k9Ro&gd}b(v(-v zsS3+#N7alUYuxx71n6HhUBenq^gkw)M*`UU@*aG4KC1$4EXGX~Z!RN)%ya`{G+$Kz% z1lp-6%z=n~t=#Uy$5Q9zmR#4sZLX;$1DsdLejYNnQbk{*=YChPCT(Qn|a2!$8@Nh@6@R8|7RRJ`!5cwIc&V!V4Z=gF3?|B&ru zzA)C~y;IN|^yix1nEAHK+IFz?Zi*0NcD-H3e7trx*QC~0;@|LBpbRj7uKR)7d-3;3 zo@OjgLa4%k^$KGB9NJ^_=NvFcr?t_>9tyMvlIx_B8TxR2t_`-1HS3Dcm*~EnE)%L- z0(j4k_E?P5d5#WuGj5+;_KG?#^uoBC`*8FFuy^e}&25Aa^FAijh6FGlk9Jw~<9gq2 z#_fgM2IN@l7v7EO^Ea?{ZQaWo#9t3xCe)q;&@SIVm(Wr4<=nSpP9E*J_FlB+^_clI z_xv^q<8Hm~@muS|?<1L+^{XU=8V^`kBl`AWn~r%pvz9L3E=XRJqTRzBtnQ;@E?rw+ zVfyeIH|z-V-ElkoHU738#%Neyqxo=?LdPeItro)vY*`;7Kd&J+Xg}q~qqc-nq?7hbNb*w?x$KdeQ13o(ZIx`NRB*vVAjdhgfHM+z&4P$kT z**O?{uPwhlXy2$utbNhmrDAOb)>D}<^(26KI{5NpeGPO1X9*a4uN@nQed}x4VBhG^ zwY_C{zlwKdW}c0NFvY_{;{PtXgr6Q}@0h*}h<{xP=F{qqp}MqPf3u2#BCFcQ!u z&`LkFk8<|f-V4(~$rcVmz>{3)z=(AK!1Uf`d1(`AB@Kq(Ty_Cwg79-Ay@rfC;R4s^$loyF{jc>mkCA!SxNx& z^Bd`Ui7sKk=vUB}2m2jk^YQk~^20sMw)MU{;3vICdGL=oAiA;=12@Q8Vjhe+0DeM{NZ+7u8W0rV?d z>2mvcdKT|*Ve|UhYUnWnbQ!)W{QE#(H7R|3_&n&dVZXsPkmZ4O3nA+ex$nlf$pj;T zYLP%Y5i&}b&*m{F9Myk8&(RjZ?vX}Y-%+zR4}Q^x!FGdlmf#lw;~cbuA^r{KK<=We zn=TWK1gc#Ep*BxMi~TbA4lLdS>uc|%1xP<1FxWocC!sG4yg#anHUPc|XoJ1Nra^Pi z4`-fW@957X)*2bxu6AuU^rewND@AI57Lw*A4gYQQJWAI(y1MB?TV#TffRR9DCD2X97jv0)W|gfsQ@W9Wk${mv zQ4&a)iy8C7|711zBmD4R6AAUc1U~qm1ci-y0v~)-axkJL(BZ$AU>^xOd`!Wu@ce&f zu%%I;P!N)xG%NK z`Ss#0%jM98`-=AnaN)kXCbDEJto_3lzY3O?$^^V5h(px_*--Mch+KKU$RnLnR= zW_cNgWsYgUTh*h#C~| zF!q%I1U!s=B>({*_tC{aga8D5jHCQ_m;OJ_^YiulpD=o^vHDQE2c8`TbYEcHR2_xjORQXJK z{TvSwsuorA?N@d85A|j4ACvpv^7;pj3I0tIymbGlH2*Ehza#jlW-WP-Bgycwyi8gI z<&T9s$?$OvUGOoDe;;Q+$R7t!GyaHkAk&P0;uJV(`~`TNgPt`013XT_FuqKLj|OYS z`#pmEN$@c*eelUa{_$X}_d5YD$M?|{OmmQgKM5XP!E*j0x&mp2jqoSIqbpF(zeHDn zn!g$K1mb^6f{zILqAk>s@Nqv@_ZQD!MF}tojwxW0Pvi^&&%Z?p5EGclA0@yg3LYiE zBzPC+A9Y#wJ&Z7X%opwcAh4h>LW3b52@e;bm>~y$5dwmEWd3jgdGovB0$Sqc4;N6E z2Oo8L(jG=U_?Q;$J_0Q13pFvpzJiCDn0!GX_zyK9!Jf(=#^4gI{4fT)ba)5@BRYKC z<%%C9`KtU71||6n&#xg-dn}(26<#8W=luB$bot?V3`nq>Kd54gd>0<90Y#n*4@!7R z0DrKR?+U^L1S+tLKOjLRJy$-#R#a9#A(8q4Y+Nzo-h~(h5AGvC0)22@0?fUhUzfm= zkoVmcMH4a_wbo`nQc6-!HB0P? zm^*i_*kiqD(ITzq%0>Qm13*I(~^`qQ5ld!=u@@kZySn{IM$zWHY7mRoLdKKHrLIk(<= ztJrIO`|YQ}$&+<*W5&I1oT z;5_)?gJR$5*T4RC=NsSnhVyrS_jk@WzxhpZp47t+KkPj6$Rp0Tzx{3J(MKP39((LD zv9I&H-~F!h#1l_APd@pi*iSMxHs<`(KmC*Q^wUo}-~ayiooAkTMx5jD?6c20&pr2? z^ZfJAJ1@NOf;h9~hd=zG^P?aA$ocV)f9(9^CqEHqS-kx6%g#@K`cvnXS6*>`_OqWk zufF=KINN4?eB62c_1B%B|NQ69FMjb0u{ZY3H{W#Ldh0Fc?YG}{e)X$giGAh2`OR;f zci(;2`Q7h+C-%?%@sEEL8bx&q^Ea1~K_NPzH3jC;NT6I2nA6ypYx9Mc#>U2Sl~xsa z>l>TfR`w219~cn^dsnsP8XKyD*zAay)7;)W$Q%#$_V%{>s=cj^qFkX2_jcqahZfW~ zwe=25wy9d18)rmIw7zjZDTYei*FG;MX*80mfi!ij7i_Oz*_K|HXEe5S_K9r$o%2Hd z(yHMvijal{Yeg0Iwl~#BrHPKOYi#Qg*?U@MMW?Dt$c&t*@cxdH40m>msQ>=9+F^gj zf?iVD;k64gXtL|)uN)#|{cRcGD!-OAtpek#=4WTA^91`n^UF_rNhLJ2p{vT0aY@d+ zm1O*bomH&+b5P~|EoJGO>YMurc~4VGRa3Ui^T^7FSI#LLerr}InSOtBcE*$ysm-M9 zLv3ZLa*xEi9F;Pdt1j-r`M`pSplLpJp4G&?;Jn$Zp7K65RT1}%M9aX0aSpl81NT+X zCDrZMrVGB>TkGJU_Bh=9%t5m47QY!A2i z$eF+&Gf3TgXHQ^(fud%twC%pil;1pL4^6nC``K@zuC;yQEpA4SZLh76x_bhsYbQ@{ zqT9TAL-t@*_||i%znf62pH7z6Q^ahHS7F&b)pd~7Pn-hI8L)>JWJi6en5efInkY|a z!LYr)sz%cF)b@0gD#0}Q>qy@_C%$csCoMN@_m*Gp8`j&y6QyAB{Q97C2JOLexA%=h zc7J8u2_LKZKW6mV!{zlhnuqPRRnorau}|$i*4>mVkS8%AZAx+UFQC!QwBoWR=9)%R zkyX^S<qzRzGP7l#SYKa$ze(qz=;y4NpWbh;uhwooPe^sEvaETs z_1a;bWUfjK>@XE4`@(b8_1Ob^6`n0WN2fhl1D%_n z?s~G)4BXomd$`<#LqFY_{Hha}}|ZtO{Gs%kDez*^!@YV3=h zW|}>0SK*9oBF9<+;-I)rs;<9iscFSm_OaO>D#|ZgX|J!gR}h5@a+TdzcqVIJjT^gU zxqi@YE13C)A-lX&{RLB0T!u#5E_fY#ZwCHwanxpgA==ar`#f% zV-N40wv2XrecGh8k#243PHV=nUFGi_3zc|!j?zo1P#P+hzAdFDlXXm@hE9r`TCh}8 zZ|lptbfZF5KhGXa;oYT6RUsCNFSaL5#jj73sCXJGm2zWP>Dw7^PvohVz>l(|7S7)cNMKi>CXwR_}bXMeJ+<7%|lLiAw=@F)f=|b z4rcqJ{xwJBaz0u?7>h?k$;Ie&%V&{z;Sr~9#(4m{ww`r-YkqlDXnsZ!GtVA~fFOES ze0z|~E!++^?88HFPLn4JN7oDeqp8RQ+TAGArQ6VE%34ltj~Efr~2 zdnh?d6NdnT^<#XTBj=_z7h@9dxtIy-x?wwRX&M!MzM#|Iwb-MSp8~vt^`lXJ!El;O zDsob?(?p8%7!Ra)l88FZi^3BjTzEzh8~xtZ!5EWxC$Bz|zg+wOG zvd$BwD>$|Peg>1O7?NgWFJzRIbEC+y-P2}*L6}md{pg7K6{;2C1dJ)~-X5*j>*MUf zq9&-Di#^{*mMFtt??mX~D)Ful9kJM&x%g1mP><6ZJl1d9Udoi_atElKZWKU-QL2M& z?^u1{K2~o3WgEDJ_shJAyf@fG5#1bha9n=aom)C#aqW32g1j%jSW2Hjp@2wYR%=fNEd3MdaS4x#cq#o+~lRIL^sZ%)ifz zXzl8U?Kp>*$m~NwCkb87Z|wrSFP7~bo4+7qrfS!`%*ry(1L6Z%hORht>va2=6*@<` zg;Klvgy52Sr`B$ko}ZtaBV?lB+|n(Tq#euI_#WW>1h8XY%<3sqF{#I?OjO50iVi}p4f?LB2%<<+f}EO*V^g4yOahclsjQ) z!$<3)zIWU=5igV4(f_>qOR;96@K1jn;c9Nz{)Crv~&f8AD7E5MlsuDN9Qga$mOJ4 zqcwB^Wb`u)?;T-pCVOH>uiVmYLkUv(U44{9_<0w4Yag9YpB_UJSZgH_@Iu7zEp{K1z1{yvtfTSm!kVS*iR+5+^)4 z;nu3=cpX9pAHjldQoKz}dT0#hN)TE;A(<1Q6F?%ZBoAPJn2BL>J zf=ub1%Q1}7f7c6DoXDDyTtSDUgB-NwWYwZGknSDz-Ksq&)JhkmE5N)*q7=ze@lJ!) zfD1P()|V$~pDv1(p13MQcR4|;NFjP@ZkeJ;-3S4Z%8N!5IV8qyGs$Z|8<|KIR9||Y zQ0KX-jfp~Nt9DYF8n8!)JfFVBUKyR5NRus{vOY`ocfQun&%59tl2X;GNjrl7GgtO< z2dXKXU1-jgt1n$$*%L$}wA0tSl?$@EHg0_l)sP&8FtduR^JNnwh34m7RzMW3N;yPp zrrc4{t5fT~6nTV`N)Sb4e|wF1Rs zF4rY6iX6;)u-HJRwf;eT>}(Y^K(eLt97?4KdTXciuKFx*E=HA3Q+R?>XebL*%}C0| z>~Jwiq#h1Iv7(wWp-I~V>P*VBPGHnCNCOZtq5oR^Ztcprm#;iwqm4|si{}PFP%4NJ zrfjJylXdD6K$Oaf$pb`sVK>_qRBFL$p-*a@sv1BssiB_jK$Vj6Y)7%8@nm7yC%Pqu zJ~aA!_<^v|4QJ$O1HC`zhTp3Pf4$3jjxGAMq)>C=uWTgDM78h%q^$586?>i-y@`ek zX=Lvr_1W{OnJ&?0NWX&(M>etRycA(ib+)a&j;^@o&i_Z-wg(o0rokn~L? z2w{jIdSe$ikl~h2Q*TL%l!)8*2YJs)Mt2@1Xu!Y2FA}V8$FvhGlgH;=e&MCP?NdFQ zY-n-^OGY=fGRB1`$QZV7mv{Tjg(A(7-J!fU=`)jkx&Z`|b4#c6%7w~-h%IMGDK@~n zmD^7eW?y*x5~5`P&QA!=ZFa%r?1uKvjonsm`2|klC#biQ?!5hmW&2Z&9JqRi#CS2! z;d#8<7j!JjwViH#IpA`GIb)W;I8T5=k3AM$3ZXV^nNkp9D+ zAaxrh1?4WjTm8=Con{~MUYgo+&_Ps6$58d;0tHWx=t5Qk=44^aU+l8ZyswrjC1eyn zW7zBI`5b>|ub2@xYEqg%~Ed~bUtZxgQC2aA6S%rxT-sI(Q2Lh3zapf0u}Ew7k)&^eAnrrytjD1iuS0G zxHq1f*8EuyCdOG_Yv%&=hg{q0ezfm9x1M@LC>?s@RL`{LWGh;^q5jp8TLN;2ZP;n= z+PvB)TMzquuTSsvRKSCaC%2_zi__t%iw|^udWvd&p5t|LJ)Y?YsCD0kYkiTMgqs36 zyWmFGz{3o0$lezfs=o+}&HWN7z)xDF-i}?k+o0IzP+{KHQ zh|*GU-FIKYs{1iu*DIQaT`2^JCLF}+r8UKSJHL>O=3Tx#2)=FB zB*0xf4H;^R_crET^YApbpwY6W3m*^2q^gUj)-Kea_v5RcUoP*>!5383Lu0upF}#yx zr*ge7Fgjl@+p0#q#@?s6z0ZrDuB%3U&4MOZ=cD|(EDEVo98;P14t^UsJ9>J)N~^78 zvfOc8F`8rxw-B2WsY_kcbTRw2sR=mL7x%I=Hi_69Rpv`M+dSllSXUksE#Fv>-m)w{fapcAfwU}(Xh&kb%dOnS4pqnh>Y&~mYJTo zT@x9Vmw-mC6H?2^IdRBxEC!Wu_iYa9@YddxfU>l#xihwYu#?U+@P()?1HMEB|M0c# zF$=8Qh(kPWga5kW5{eS*mRe~N6du9kdzX*M0?8>S)6LE1oW*C~t2!TUV_dV~4? zpQ-sq!c@EySMEYjk9T|5u^RJWT`t~rQ(V-(LOf?$?}1*84!tReUp;Xe-l=`(<5*n2 zWZI_+6W-$nAH5Op$55_iKYV$zxw$Om@5z zUvgQlz8wU{BKNY2eH}c0_jbQf`K$_A^4{R@-N9v>et1+`wne(+dgpDw!PVGmlqPnB zuxj|UdnRv<^2HWJU0&h^`EQ-)6g_v7hW8VN?gkgy^Uf$*oKLDD)-k$U>?O^7KxT%# z=NSFlKxB0p;|VaneTr?nNU^cnFknt76fKV;3j zZ^}k1YOpx>rj~f05p`NyySH0VlStxYE%6?C$N~BEGZHz?PmsvFm5XTW$j@g@SEm}} zb%Pn}e7-Nw{H!hNU33cGBl8@&;XTTy7020N3));^*aJEdnHlgcQ8bRC89__j8#izIbj@o|M9S zYY%1S!MbbpST<%#3(X`N`Y#A5)bwNY6W^*A68*#4kerHFxpx8*mWPMQ0tA zFB(o%=$&{<_dV>E-DVRME}prQ1!ew6vB;VwG<$!s^`785G}T>y7lR|kyJbH z&Gt|MtrzL@Y&&I#SoLk)j3IB6glDL+PwjTUzVI?8ZI#!1Z~Sac7-OXMabKX&vQ#(k z)N&Q3@!*Ww`uQ4%F^@^_-(#|t9WV`-#$eIw zB|&_LJy3WLQF*Qf1$BLPZz=6nU9Y{ql>C(x!>Us2t$v_zx2Tc~du6xTLxsOr^|Irs zVW=dd@gtkSU-RwZrjm=J##sUDQ0g_IkS6L&dHR4v4;`=9nkeQx3!e ztmgl0%ffc@(UvV{)=+`3SK=tCE#@1jZ_2P^?yRAjC)TqagRQI?=4TJs>-~HG;xsxH zjF?YawvY->xf4+{*OxKt*hp0iT^+HWrLA*K5%X2=VIeT z+rw2gcTK(eP-C=YGKJKywC$d%nZK>;wC&yrq=qCtSo(BWCKWP=w6J`=dKif_dZ@{p zKw*c`fVetpWUv&DD@2cbkaroL6*p)it(5g!Vwk1bdCKjHLsrIhIF;oj?G&bhiddPPXVW_8Vq9$H-Qp@sO*O=>+8laf#^#!3D3evZ-EuDsx zh0yXLZES37>+S7RT>5V7dwbj4ni`948Ouj>=9n9Op_;w5%vm=GjRYzv0Vh6;`N4m( z8vGG{_^*kPdS3z`{7-_QKJ}Tufq9xGbzn5Si2|9dC!L9K8e`c_yQK01q@iNqT z2sHR8gDuOW(1T0nWE!sk5ALDYW#qxfJoJ|365zpgu(gB}xNyCATKb;{*Ndn3S$S|@ z@g4y#eqZsH)uj+H++V!qikRVCcZ`O$gyG{1PJtQhYE~`HxN9!`cQ$%@aXDA1&_s4zl4voFhcHil)n_XMft}<@VZec;G=Hh zkcW}6IQ1Y$DH$Gu)r;yHi&GzRLlWRi#^ThA6s%-;ocfUhj+GbQFczo2q`+l{*N?@i zKPh;H;dNut3{y}4cf0G0+-9IYLe@pW32tKM=OWxy1GJGsAlNLewW8qFRd|X2p zd`#ot#~Bdv$HCK#KjIw7G~=H*1x^}&0Uqa|CyoCAk5e#=FB9RT!CLWtk05^%e9TK9 zd~%R~JQ(Z!PJqkteRKuW93!K$>AA{7LZW3Y7CN(G{TPZ$>?V_@9#C zBZ9tY3w0!X+>h1$#q(ED0!)Hq3Yg>*IfKCSZ&3oo1SaxF32=#mM+qTzg4j*^9;s;5-DnEol zNj}5#Ye>`{%O^yImx$sye?9|Ues~@O671#=s+c0*g$HXuk>|pL5?&I(A8h5jg75%= z3hd$!NKi@7l~1r0m6cCOq<#P!SB$uKAqK&N`v{OgA6%CJbFb&uC9otUzut_xV6A+O zLzg=pzor8odOg3}jBwqd6pueoM6PfGa7KW99Q6E3hD#WRyB`iU*0BfSdQSQ5&mRK! zRa+51zVr4z*4LZ7jP3N;N>?{sb>fL0TIni1tQ;O5cHVpMJ?CHl^!A|1YKR%)0wGBT2?Oe!cZ-L`Gp5LeW~tLv`2?%gn) z#l+on&pooo=9_Qk@j^LDiu>g+e~J8wL8U9HEGi^4e-aH>Uw!p&qVi@H|K%@# z`Mn4sV7Xc--DQZ+)5*_$?sF4WwsZdZ=c6n=ETJE6`HL1Uas~$n-QQ?$7=G`)_d4JG z?swhaIxP5%Hsd27`G`oX!xXN=n1GjFddbBH7-WIKWpdl2$MN$Y|M*Ae-~R32oDY5I zLx^(A`qi&~C7%E5zy8aaF=K`cW1Ro|&;JZK2e&MW5NW~x`t|EYyk0)|;EU5D!xdLt z;e7n#A9v==nd3b6*kf)Qq}_Y(z4OXPUR5~SNw@qhTedh)KmD}$jZA>)<#SrVfcxZ= zPj*PB@zc%o+0TB~#fLP=!*I^8?kg|6@Iv@xZu+<1e%pP1<&{^&GnaqaWtTbs`@jDy zuJ-nJ=hwgfwSX^NxKPCD<)FMj{NWF7xp+X{OE10D#edB;*Eqqp4(XU4$nAgr=YQOK z;P|ZW=r><}`DM4fLk>B_S+;DM`y1uxdXQDQj0gSqfBeUP_{wA0MBGvSzyJHcms~#E z7wT^H>eZ?7{qA?abJnd}_eQC_UVH7eZkd1n^Pk=4B)lK{*vH^a9}t%g_M-=+ee%gC z-Kdo-S2_(1o}>Qy>#wISpKu*T7eZtnlpmBS3g+_10SxaTH7AU;Wiz0e52f z%x6B6ISpU>(w9<|&BRTgKK(6v&V-J=_S)-LjJMD`{HtQ=P!hqHY7a%aVg70%H|AMJE@b~?u#bBuHB zvBx?e_`nAo^x4N9cbs$l@y9zSo_M0OYSk*y$F5nk##y^|t?;SQo}YHwY0l}VpYD9{ zgCBIxIO7aa&lqQX_`@HD-y+5~eSLk-S!bQ)oPGA$&N=6tR{gDqKhta zF249;XJ}~1*|B4XvvcQ8(chu3qupiB?%lhcJ$v>zmt1m*@TuXOUwP$~&Irwy(A6z1XAFH!w4_Vf!l;_fW z_qDD(=8GqtaLx43?p$+U<2lzIbalsW_T+WX*QJ$~(P@ zkncmNPdmx7mL5l+S39pe^knKa1dj`A2){oZdei66@?uW=gnFJmZ{EDUX14BY^{iQN zr+41&`NMn51Q*;jI=b?zPyIzt`yID@`|u!;d=F zI!!(UzHHQ*`^9V9t*cx()!ilxIV=nCId`9M;T7jzw(2VkZyq4&Nd$mf`)}R6&$P3) zowBdUVp*p&(8D?CDy>cZDo(o{vO)Yfhm&g{JT{#pBc`9_(|u00&so5Z(9johkj}n+ zZf#l9){&O@!;v5HDSg*ztvYA%Ov$C1_zG%t1u{Yaf3Y01p)aS;@lS1ZdRSyAI3UC zNgamqIWELuE&_M_M$pq~&*y8;Zn|Ll;BVw1-+C9_5nSAQI)26-K~JZikrx5Yvw*`_ z=I4a_9)i2!D_{9a+I)^0kGXlZ2XvxIcs6S3qaM$B=%I&PJn&g5;U~fp|9**OjZ*_V zM$P0{on?*U3P~v92`17}+Fw(5{--X>`syrdceIAk-|naeN3^GTNMpxK!LicZxpO1O zM*HozpP1{y_z2@7jEVFy5RY##w!z$CcXzkLW1EvsI!TOgPC4ZihsQWQJw0NKLx*;V zF^)dA!5F5$zu$=)ztB4bF>b+lW&8H+Vm>Zxe1diYW0b3|y2`=aKiUe6RWLrmybsz5 zj7KmIp?9VZbPQt*yiXx%n#;(bmUX~7`Jjcl+`)djfI{#(s_sO><_q&upGwf8gAG=bUn|wPN+s(~mv!LuW2ud(3gxL5u6w9JAtt zo-;Z=aM}mEdgm_6%{%CQD`$}>Z&`cQ)z{_Ni{JaGxrobQa%|br2OQtB7EQ3V_z?Qn zZLQkp!wXKt?}Lt?hu=$1ICxbj{hWKeMW+tBgRvRZ>P>GI$dP!jCGc3M9iqI|`G-<_ ziEzXri*vcfhX}8_)OL4a<814r60Q1QXYFPE;SbW=JNDQ0a&PNX2H+YkXL0o4PfUq@IsSvKL>W(`?e2>3`292 z_awr%o&L5^?mbkBW%W|bpw&s-ZK0S}YlC$r#kH#VR-$+tK|V>BEy!4I&2;e$3tBIy zyqg40Bsj%dDt=!^c!B>S>;06TIX;>2?6x)w`iFh|1?kYsZKeD>DNn1lUhsVZ{rV)~ zX%(^nWQ#@{mvye7dABCRqpf8m3%+PjY|SCsPz!rR+8xBlkj9OqNvC8PrMpa&cDHpr z4^D8|o8E8!g?oR`vtT4}XTrqnVA=``Wf>5>|SGPhGI+qziPiX|xALlo~O zK04?RRPLeJOGsaq2|Bk^EU0DN9ZDy3dB}S4*PTW5K(0aVxn3Y;XdvsJj?a^Cr?ofX zSVt6thD(T|JzC9#<+VtQp_~3Ze%V=8PzP3uJZne}yM>GfNVb>f$vi*b*uJx^U)Bk= z6aU_M;;9q6F55oTdg&H>_qLroR<#|qY^Ti5FM?ft&JPu#S7_m=GgLzlM_iXFRGwOwNGIDYr$ty{Kl+P!r9 zw$1j=-8(Pbvvl*$?Z(~L zZQ6bMj!So5yv1&7y=2>(&6~IECNW;PX=wKr#gstO5kd`<-r=MD#12;ol;Fe;uA$Xl YooD(qwwHwiG5`MfOtBhdH6nrk51*aNfdBvi literal 0 HcmV?d00001 diff --git a/bin/Release/LogViewer.exe.config b/bin/Release/LogViewer.exe.config new file mode 100644 index 0000000..8269f7d --- /dev/null +++ b/bin/Release/LogViewer.exe.config @@ -0,0 +1,39 @@ + + + + +