Forráskód Böngészése

Refactoring Certificate Handling

Frank van den Bos 2 éve
szülő
commit
e3ed0d39b4

+ 9 - 14
prs.classes/Server/Properties/DatabaseServerProperties.cs

@@ -52,28 +52,23 @@ namespace PRSServer
         [EditorSequence(3)]
         public int RPCPort { get; set; }
 
-        [IntegerEditor]
-        [EditorSequence(4)]
-        [Caption("Socket Port")]
-        public int WebSocketPort { get; set; }
-
         [TextBoxEditor]
-        [EditorSequence(5)]
+        [EditorSequence(4)]
         public string GoogleAPIKey { get; set; }
 
         [CodeEditor(Editable = Editable.Enabled)]
-        [EditorSequence(6)]
+        [EditorSequence(5)]
         public string JobPrefix { get; set; }
 
         [CodeEditor(Editable = Editable.Enabled)]
-        [EditorSequence(7)]
+        [EditorSequence(6)]
         public string PurchaseOrderPrefix { get; set; }
 
-        [EditorSequence(8)]
+        [EditorSequence(7)]
         [IntegerEditor]
         public int PasswordExpiryTime { get; set; }
 
-        [EditorSequence(9)]
+        [EditorSequence(8)]
         [IntegerEditor]
         [Caption("Login Expiry Time (mins)")]
         public int SessionExpiryTime { get; set; }
@@ -81,20 +76,20 @@ namespace PRSServer
         [NullEditor]
         public Dictionary<SMSProviderType, string>? SMSProviderProperties { get; set; }
 
-        [EditorSequence(10)]
+        [EditorSequence(9)]
         [FileNameEditor("Certificate Files (*.pfx)|*.pfx")]
         public string CertificateFile { get; set; }
 
-        [EditorSequence(11)]
+        [EditorSequence(10)]
         [TextBoxEditor]
         public string CertificateExpirationSubscriber { get; set; }
         
-        [EditorSequence(12)]
+        [EditorSequence(11)]
         [ColorEditor]
         public string ColorScheme { get; set; }
         
         [EmbeddedImageEditor(MaximumHeight = 450, MaximumWidth = 450)]
-        [EditorSequence(13)]
+        [EditorSequence(12)]
         public byte[] Logo { get; set; }
         
         public override ServerType Type()

+ 880 - 0
prs.desktop/PRSDesktop_uzba11nz_wpftmp.csproj

@@ -0,0 +1,880 @@
+<Project>
+  <PropertyGroup>
+    <AssemblyName>PRSDesktop</AssemblyName>
+    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
+    <BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
+    <MSBuildProjectExtensionsPath>E:\Development\prs\prs.desktop\obj\</MSBuildProjectExtensionsPath>
+    <_TargetAssemblyProjectName>PRSDesktop</_TargetAssemblyProjectName>
+  </PropertyGroup>
+  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>disable</Nullable>
+    <UseWPF>true</UseWPF>
+    <ApplicationIcon>solid.ico</ApplicationIcon>
+    <LangVersion>default</LangVersion>
+    <AssemblyVersion>1.0</AssemblyVersion>
+    <FileVersion>1.0</FileVersion>
+    <IsPackable>false</IsPackable>
+    <Nullable>enable</Nullable>
+    <Configurations>Debug;Release;Debug - DB</Configurations>
+    <PreserveCompilationContext>true</PreserveCompilationContext>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug - DB|AnyCPU'">
+    <NoWarn />
+  </PropertyGroup>
+  <ItemGroup>
+    <None Remove="Resources\001-box.png" />
+    <None Remove="Resources\add.png" />
+    <None Remove="Resources\add.wav" />
+    <None Remove="Resources\anonymous.png" />
+    <None Remove="Resources\appicon.png" />
+    <None Remove="Resources\archive.png" />
+    <None Remove="Resources\assignments.png" />
+    <None Remove="Resources\attachment.png" />
+    <None Remove="Resources\attendance.png" />
+    <None Remove="Resources\audiorecording.png" />
+    <None Remove="Resources\autoupdate.png" />
+    <None Remove="Resources\back.png" />
+    <None Remove="Resources\barcode.png" />
+    <None Remove="Resources\beach.png" />
+    <None Remove="Resources\bill.png" />
+    <None Remove="Resources\bookmark.png" />
+    <None Remove="Resources\box.png" />
+    <None Remove="Resources\box-sml.png" />
+    <None Remove="Resources\certificate.png" />
+    <None Remove="Resources\change.wav" />
+    <None Remove="Resources\checklist.png" />
+    <None Remove="Resources\circle.png" />
+    <None Remove="Resources\clock.png" />
+    <None Remove="Resources\clock-sml.png" />
+    <None Remove="Resources\clone.png" />
+    <None Remove="Resources\consignment.png" />
+    <None Remove="Resources\consignmenttype.png" />
+    <None Remove="Resources\contacttype.png" />
+    <None Remove="Resources\contract.png" />
+    <None Remove="Resources\copy.png" />
+    <None Remove="Resources\costcentre.png" />
+    <None Remove="Resources\costsheet.png" />
+    <None Remove="Resources\costsheetbrand.png" />
+    <None Remove="Resources\costsheetsection.png" />
+    <None Remove="Resources\costsheettype.png" />
+    <None Remove="Resources\customer.png" />
+    <None Remove="Resources\delete.png" />
+    <None Remove="Resources\delete-sml.png" />
+    <None Remove="Resources\design.png" />
+    <None Remove="Resources\disabled.png" />
+    <None Remove="Resources\disk.png" />
+    <None Remove="Resources\disk-sml.png" />
+    <None Remove="Resources\doc-bmp.png" />
+    <None Remove="Resources\doc-jpg.png" />
+    <None Remove="Resources\doc-misc.png" />
+    <None Remove="Resources\doc-pdf.png" />
+    <None Remove="Resources\doc-png.png" />
+    <None Remove="Resources\doc-rtf.png" />
+    <None Remove="Resources\doc-txt.png" />
+    <None Remove="Resources\doc-xls.png" />
+    <None Remove="Resources\downarrow.png" />
+    <None Remove="Resources\download.png" />
+    <None Remove="Resources\draw.png" />
+    <None Remove="Resources\edit.png" />
+    <None Remove="Resources\email.png" />
+    <None Remove="Resources\employee.png" />
+    <None Remove="Resources\employeerole.png" />
+    <None Remove="Resources\employees.png" />
+    <None Remove="Resources\error.wav" />
+    <None Remove="Resources\everyone.png" />
+    <None Remove="Resources\factory.png" />
+    <None Remove="Resources\factorysetup.png" />
+    <None Remove="Resources\finger.png" />
+    <None Remove="Resources\fireworks.png" />
+    <None Remove="Resources\first.png" />
+    <None Remove="Resources\fontsize.png" />
+    <None Remove="Resources\forklift.png" />
+    <None Remove="Resources\forward.png" />
+    <None Remove="Resources\fullpage.png" />
+    <None Remove="Resources\glcode.png" />
+    <None Remove="Resources\go.png" />
+    <None Remove="Resources\grouped.png" />
+    <None Remove="Resources\hand.png" />
+    <None Remove="Resources\help.png" />
+    <None Remove="Resources\ink.png" />
+    <None Remove="Resources\invoice.png" />
+    <None Remove="Resources\kanban.png" />
+    <None Remove="Resources\kanbantype.png" />
+    <None Remove="Resources\key.png" />
+    <None Remove="Resources\kit.png" />
+    <None Remove="Resources\kitcondition.png" />
+    <None Remove="Resources\kitformula.png" />
+    <None Remove="Resources\kitgroup.png" />
+    <None Remove="Resources\kpi.png" />
+    <None Remove="Resources\last.png" />
+    <None Remove="Resources\leave.png" />
+    <None Remove="Resources\leftarrow.png" />
+    <None Remove="Resources\lifter.png" />
+    <None Remove="Resources\lightbulb.png" />
+    <None Remove="Resources\line.png" />
+    <None Remove="Resources\link.png" />
+    <None Remove="Resources\localfile.png" />
+    <None Remove="Resources\lock.png" />
+    <None Remove="Resources\lock-sml.png" />
+    <None Remove="Resources\manufacturing.png" />
+    <None Remove="Resources\map.png" />
+    <None Remove="Resources\mapmarker.png" />
+    <None Remove="Resources\milestone.png" />
+    <None Remove="Resources\minus.png" />
+    <None Remove="Resources\next.png" />
+    <None Remove="Resources\next1.png" />
+    <None Remove="Resources\orgchart.png" />
+    <None Remove="Resources\overtime.png" />
+    <None Remove="Resources\pagewidth.png" />
+    <None Remove="Resources\palette.png" />
+    <None Remove="Resources\parcel.png" />
+    <None Remove="Resources\password.png" />
+    <None Remove="Resources\payment.png" />
+    <None Remove="Resources\pencil.png" />
+    <None Remove="Resources\pin.png" />
+    <None Remove="Resources\plus.png" />
+    <None Remove="Resources\position.png" />
+    <None Remove="Resources\prev.png" />
+    <None Remove="Resources\print.png" />
+    <None Remove="Resources\printer.png" />
+    <None Remove="Resources\product.png" />
+    <None Remove="Resources\productgroup.png" />
+    <None Remove="Resources\project.png" />
+    <None Remove="Resources\purchase.png" />
+    <None Remove="Resources\quality.png" />
+    <None Remove="Resources\quotation.png" />
+    <None Remove="Resources\quotestatus.png" />
+    <None Remove="Resources\rack.png" />
+    <None Remove="Resources\receipt.png" />
+    <None Remove="Resources\refresh.png" />
+    <None Remove="Resources\remotefile.png" />
+    <None Remove="Resources\remove.wav" />
+    <None Remove="Resources\reply.png" />
+    <None Remove="Resources\report.png" />
+    <None Remove="Resources\requisition.png" />
+    <None Remove="Resources\rightarrow.png" />
+    <None Remove="Resources\ruler.png" />
+    <None Remove="Resources\schedule - disabled.png" />
+    <None Remove="Resources\schedule - enabled.png" />
+    <None Remove="Resources\script.png" />
+    <None Remove="Resources\securitygroup.png" />
+    <None Remove="Resources\service.png" />
+    <None Remove="Resources\shared.png" />
+    <None Remove="Resources\sick.png" />
+    <None Remove="Resources\small_add.png" />
+    <None Remove="Resources\small_delete.png" />
+    <None Remove="Resources\small_edit.png" />
+    <None Remove="Resources\smiley.png" />
+    <None Remove="Resources\spanner.png" />
+    <None Remove="Resources\specifications.png" />
+    <None Remove="Resources\speechbubble.png" />
+    <None Remove="Resources\splash-small.png" />
+    <None Remove="Resources\split.png" />
+    <None Remove="Resources\square.png" />
+    <None Remove="Resources\star.png" />
+    <None Remove="Resources\stop.png" />
+    <None Remove="Resources\supplier.png" />
+    <None Remove="Resources\target.png" />
+    <None Remove="Resources\taxcode.png" />
+    <None Remove="Resources\team.png" />
+    <None Remove="Resources\template.png" />
+    <None Remove="Resources\text.png" />
+    <None Remove="Resources\tick.png" />
+    <None Remove="Resources\tick-sml.png" />
+    <None Remove="Resources\time.png" />
+    <None Remove="Resources\trolley.png" />
+    <None Remove="Resources\truck.png" />
+    <None Remove="Resources\unitofmeasure.png" />
+    <None Remove="Resources\uparrow.png" />
+    <None Remove="Resources\upload.png" />
+    <None Remove="Resources\user.png" />
+    <None Remove="Resources\videorecording.png" />
+    <None Remove="Resources\view.png" />
+    <None Remove="Resources\viewpage.png" />
+    <None Remove="Resources\warehouse.png" />
+    <None Remove="Resources\warning.png" />
+    <None Remove="Resources\wrench.png" />
+    <None Remove="Resources\zoomin.png" />
+    <None Remove="Resources\zoomout.png" />
+    <None Remove="Panels\Schedule\**" />
+    <None Remove=".gitignore" />
+    <None Remove="prsdesktop.iss" />
+    <None Remove="Resources\revision.png" />
+    <None Remove="Resources\caelndar.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Update="Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Remove="Panels\Schedule\**" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Update="Properties\Settings.Designer.cs">
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Update="Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Remove="Panels\Schedule\**" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Update="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\InABox\InABox.Client.IPC\InABox.Client.IPC.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Client.Local\InABox.Client.Local.csproj" />
+    <ProjectReference Include="..\..\inabox\inabox.client.rest\InABox.Client.Rest\InABox.Client.Rest.csproj" />
+    <ProjectReference Include="..\..\inabox\InABox.Client.RPC\InABox.Client.RPC.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Configuration\InABox.Configuration.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Core\InABox.Core.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Database.SQLite\InABox.Database.SQLite.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.DatabaseProxy\InABox.DatabaseProxy.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Database\InABox.Database.csproj" />
+    <ProjectReference Include="..\..\InABox\inabox.dxf\InABox.Dxf.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Logging\InABox.Logging.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Mailer.Exchange\InABox.Mailer.Exchange.csproj" />
+    <ProjectReference Include="..\..\InABox\inabox.mailer.imap\InABox.Mailer.IMAP.csproj" />
+    <ProjectReference Include="..\..\InABox\InABox.Scripting\InABox.Scripting.csproj" />
+    <ProjectReference Include="..\..\InABox\inabox.wpf\InABox.Wpf.csproj" />
+    <ProjectReference Include="..\PRS.Classes\PRSClasses.csproj" />
+    <ProjectReference Include="..\PRS.Shared\PRS.Shared.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="DeviceId.Windows.Wmi" Version="6.2.0" />
+    <PackageReference Include="Dirkster.AvalonDock" Version="4.70.3" />
+    <PackageReference Include="Dirkster.AvalonDock.Themes.Metro" Version="4.70.3" />
+    <PackageReference Include="Fluent.Ribbon" Version="9.0.4" />
+    <PackageReference Include="Geocoding.Core" Version="4.0.1" />
+    <PackageReference Include="Geocoding.Google" Version="4.0.1" />
+    <PackageReference Include="gmaps-api-net" Version="0.33.0" />
+    <PackageReference Include="Microsoft.Office.Interop.Outlook" Version="15.0.4797.1004" />
+    <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.39" />
+    <PackageReference Include="MotorolaCoreScannerNetStandard" Version="1.1.5" />
+    <PackageReference Include="NAudio" Version="2.1.0" />
+    <PackageReference Include="NDesk.Options.Core" Version="1.2.5" />
+    <PackageReference Include="net.sf.mpxj" Version="10.9.0" />
+    <PackageReference Include="Scriban" Version="5.5.0" />
+    <PackageReference Include="SharpAvi" Version="3.0.1" />
+    <PackageReference Include="Syncfusion.DataGridExcelExport.Wpf" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Gantt.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Licensing" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfBarcode.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfChart.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfDiagram.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfKanban.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfMaps.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfSchedule.WPF" Version="18.3.0.53" />
+    <PackageReference Include="Syncfusion.SfScheduler.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.SfSpreadsheet.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Themes.FluentLight.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Themes.MaterialLight.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Themes.Office2019White.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Themes.SystemTheme.WPF" Version="20.2.0.46" />
+    <PackageReference Include="Syncfusion.Tools.WPF" Version="20.2.0.46" />
+    <PackageReference Include="System.IO.Ports" Version="6.0.0" />
+    <PackageReference Include="WindowsShortcutFactory" Version="1.1.0" />
+  </ItemGroup>
+  <ItemGroup>
+  </ItemGroup>
+  <ItemGroup>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Dashboards\Projects\Planner" />
+    <Folder Include="Grids\Meeting" />
+  </ItemGroup>
+  <Import Project="..\PRS.Stores\PRSStores.projitems" Label="Shared" />
+  <Import Project="..\PRS.Scheduler\Comal.TaskScheduler.Shared.projitems" Label="Shared" />
+  <Import Project="..\..\InABox\InABox.DeviceIdentifier\InABox.DeviceIdentifier.projitems" Label="Shared" />
+  <ItemGroup>
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\Accessibility.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\dirkster.avalondock\4.70.3\lib\net5.0-windows7.0\AvalonDock.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\dirkster.avalondock.themes.metro\4.70.3\lib\net5.0-windows7.0\AvalonDock.Themes.Metro.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\portable.bouncycastle\1.9.0\lib\netstandard2.0\BouncyCastle.Crypto.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\ceras\4.1.7\lib\netstandard2.0\Ceras.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\colorhelper\1.8.0\lib\netstandard2.0\ColorHelper.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\commons-collections4-4.4.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\commons-io-2.11.0.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\commons-lang3-3.10.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\commons-logging-1.2.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\commons-math3-3.6.1.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\controlzex\5.0.2\lib\net5.0-windows7.0\ControlzEx.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\deviceid\6.2.0\lib\net6.0\DeviceId.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\deviceid.windows\6.2.0\lib\net6.0\DeviceId.Windows.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\deviceid.windows.wmi\6.2.0\lib\net6.0\DeviceId.Windows.Wmi.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\expressiveparser\2.5.0\lib\netstandard2.0\Expressive.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.net.pro\2023.1.13\lib\net5.0-windows7.0\FastReport.Bars.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.compat\2023.1.8\lib\net5.0-windows7.0\FastReport.Compat.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.datavisualization\2023.1.0\lib\net5.0-windows7.0\FastReport.DataVisualization.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.net.pro\2023.1.13\lib\net5.0-windows7.0\FastReport.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.net.pro\2023.1.13\lib\net5.0-windows7.0\FastReport.Editor.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fastreport.net.pro\2023.1.13\lib\net5.0-windows7.0\FastReport.VSDesign.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\fluent.ribbon\9.0.4\lib\net5.0-windows7.0\Fluent.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\geocoding.core\4.0.1\lib\netstandard1.3\Geocoding.Core.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\geocoding.google\4.0.1\lib\netstandard1.3\Geocoding.Google.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\ghostscript.netcore\1.0.1\lib\netcoreapp3.1\GhostScript.Net.Core.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\gmaps-api-net\0.33.0\lib\netstandard1.3\Google.Maps.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\h.formatters.binaryformatter\2.0.51\lib\net6.0\H.Formatters.BinaryFormatter.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\h.formatters.ceras\2.0.42\lib\netstandard2.0\H.Formatters.Ceras.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\h.formatters\2.0.51\lib\net6.0\H.Formatters.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\h.pipes\2.0.51\lib\net6.0\H.Pipes.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\avalonedit\6.1.2.30\lib\net5.0-windows7.0\ICSharpCode.AvalonEdit.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\sharpziplib\1.3.3\lib\netstandard2.1\ICSharpCode.SharpZipLib.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.AWT.WinForms.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Beans.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Charsets.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Cldrdata.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Corba.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Core.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Jdbc.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Localedata.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Management.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Media.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Misc.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Naming.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Nashorn.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Remoting.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Security.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.SwingAWT.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Text.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Tools.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.Util.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.API.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.Bind.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.Crypto.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.Parse.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.Transform.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.WebServices.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.OpenJDK.XML.XPath.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.Reflection.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.Runtime.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-ikvm\10.9.0\lib\netcoreapp3.1\IKVM.Runtime.JNI.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Client.IPC\bin\Debug\net6.0\InABox.Client.IPC.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Client.Local\bin\Debug\net6.0\InABox.Client.Local.dll" />
+    <ReferencePath Include="E:\Development\inabox\inabox.client.rest\InABox.Client.Rest\bin\Debug\netstandard2.1\InABox.Client.Rest.dll" />
+    <ReferencePath Include="E:\Development\inabox\InABox.Client.RPC\bin\Debug\netstandard2.1\InABox.Client.RPC.dll" />
+    <ReferencePath Include="E:\Development\inabox\inabox.client.websocket\bin\Debug\netstandard2.1\InABox.Client.WebSocket.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Configuration\bin\Debug\netstandard2.1\InABox.Configuration.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Core\bin\Debug\netstandard2.1\InABox.Core.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Database\bin\Debug\net6.0\InABox.Database.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Database.SQLite\bin\Debug\net6.0\InABox.Database.SQLite.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.DatabaseProxy\bin\Debug\net6.0\InABox.DatabaseProxy.dll" />
+    <ReferencePath Include="E:\Development\InABox\inabox.dxf\bin\Debug\net6.0\InABox.Dxf.dll" />
+    <ReferencePath Include="E:\Development\inabox\inabox.ipc.shared\bin\Debug\net6.0\InABox.IPC.Shared.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Logging\bin\Debug\net6.0\InABox.Logging.dll" />
+    <ReferencePath Include="E:\Development\inabox\inabox.logging.shared\bin\Debug\netstandard2.1\InABox.Logging.Shared.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Mailer.Exchange\bin\Debug\net6.0\InABox.Mailer.Exchange.dll" />
+    <ReferencePath Include="E:\Development\InABox\inabox.mailer.imap\bin\Debug\net6.0\InABox.Mailer.IMAP.dll" />
+    <ReferencePath Include="E:\Development\inabox\InABox.RPC.Shared\bin\Debug\netstandard2.1\InABox.RPC.Shared.dll" />
+    <ReferencePath Include="E:\Development\InABox\InABox.Scripting\bin\Debug\net6.0\InABox.Scripting.dll" />
+    <ReferencePath Include="E:\Development\inabox\inabox.websocket.shared\bin\Debug\netstandard2.1\InABox.WebSocket.Shared.dll" />
+    <ReferencePath Include="E:\Development\InABox\inabox.wpf\bin\Debug\net6.0-windows\InABox.Wpf.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\inflector.netstandard\1.2.2\lib\netstandard2.0\Inflector.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\motorolacorescannernetstandard\1.1.5\lib\netstandard2.0\Interop.CoreScanner.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\jackcess-4.0.1.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\jsoup-1.15.1.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\log4j-api-2.17.2.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\mailkit\3.3.0\lib\net6.0\MailKit.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.bcl.asyncinterfaces\5.0.0\lib\netstandard2.1\Microsoft.Bcl.AsyncInterfaces.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.analyzerutilities\3.3.0\lib\netstandard2.0\Microsoft.CodeAnalysis.AnalyzerUtilities.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.csharp\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.csharp.features\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.Features.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.csharp.scripting\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.Scripting.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.csharp.workspaces\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.CSharp.Workspaces.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.common\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.features\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.Features.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.scripting.common\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.Scripting.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.visualbasic\3.3.1\lib\netstandard2.0\Microsoft.CodeAnalysis.VisualBasic.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.workspaces.common\4.0.1\lib\netcoreapp3.1\Microsoft.CodeAnalysis.Workspaces.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\Microsoft.CSharp.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.diasymreader\1.3.0\lib\netstandard1.1\Microsoft.DiaSymReader.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.exchange.webservices.netstandard\1.1.3\lib\netstandard2.0\Microsoft.Exchange.WebServices.NETStandard.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.office.interop.outlook\15.0.4797.1004\lib\netstandard2.0\Microsoft.Office.Interop.Outlook.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\Microsoft.VisualBasic.Core.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\Microsoft.VisualBasic.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\Microsoft.VisualBasic.Forms.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\Microsoft.Win32.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\Microsoft.Win32.Registry.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\Microsoft.Win32.Registry.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\Microsoft.Win32.SystemEvents.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.39\lib\net5.0-windows7.0\Microsoft.Xaml.Behaviors.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\mimekit\3.3.0\lib\net6.0\MimeKit.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\motorolacorescannernetstandard\1.1.5\lib\netstandard2.0\Motorola.Snapi.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj\10.9.0\lib\netcoreapp3.1\mpxj.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\MpxjUtilities.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\mscorlib.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.asio\2.1.0\lib\netstandard2.0\NAudio.Asio.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.core\2.1.0\lib\netstandard2.0\NAudio.Core.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio\2.1.0\lib\net6.0-windows7.0\NAudio.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.midi\2.1.0\lib\netstandard2.0\NAudio.Midi.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.wasapi\2.1.0\lib\netstandard2.0\NAudio.Wasapi.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.winforms\2.1.0\lib\netcoreapp3.1\NAudio.WinForms.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\naudio.winmm\2.1.0\lib\netstandard2.0\NAudio.WinMM.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\ndesk.options.core\1.2.5\lib\netcoreapp3.0\NDesk.Options.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\netdxf.netstandard\2.4.0\lib\netcoreapp3.1\netDxf.netstandard.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\netstandard.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\newtonsoft.json\13.0.3\lib\net6.0\Newtonsoft.Json.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\npoi\2.5.6\lib\netstandard2.1\NPOI.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\npoi\2.5.6\lib\netstandard2.1\NPOI.OOXML.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\npoi\2.5.6\lib\netstandard2.1\NPOI.OpenXml4Net.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\npoi\2.5.6\lib\netstandard2.1\NPOI.OpenXmlFormats.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\poi-5.2.2.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationCore.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.Aero.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.Aero2.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.AeroLite.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.Classic.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.Luna.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationFramework.Royale.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\PresentationUI.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\propertychanged.fody\3.4.1\lib\netstandard2.1\PropertyChanged.dll" />
+    <ReferencePath Include="E:\Development\prs\PRS.Shared\bin\Debug\net6.0-windows\PRS.Shared.dll" />
+    <ReferencePath Include="E:\Development\prs\PRS.Classes\bin\Debug\netstandard2.1\PRSClasses.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\ReachFramework.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\restsharp\110.2.0\lib\net6.0\RestSharp.dll" />
+    <ReferencePath Include="E:\Development\3rdpartylibs\roslynpad\src\RoslynPad.Editor.Windows\bin\Debug\net6.0-windows\RoslynPad.Editor.Windows.dll" />
+    <ReferencePath Include="E:\Development\3rdpartylibs\roslynpad\src\RoslynPad.Roslyn\bin\Debug\netstandard2.0\RoslynPad.Roslyn.dll" />
+    <ReferencePath Include="E:\Development\3rdpartylibs\roslynpad\src\RoslynPad.Roslyn.Windows\bin\Debug\net6.0-windows\RoslynPad.Roslyn.Windows.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\rtfparserkit-1.16.0.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\scriban\5.5.0\lib\net6.0\Scriban.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\sharpavi\3.0.1\lib\net5.0-windows7.0\SharpAvi.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\net.sf.mpxj-common\10.9.0\lib\netcoreapp3.1\sqlite-jdbc-3.36.0.3.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.compression.base\20.2.0.46\lib\net5.0\Syncfusion.Compression.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.data.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Data.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.docio.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.DocIO.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.gantt.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Gantt.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.grid.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Grid.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.gridcommon.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.GridCommon.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.licensing\20.2.0.46\lib\net6.0\Syncfusion.Licensing.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.linq.base\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Linq.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.officechart.base\20.2.0.46\lib\net5.0\Syncfusion.OfficeChart.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.pdf.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Pdf.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.pdfviewer.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.PdfViewer.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.projio.base\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.ProjIO.Base.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfbarcode.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfBarcode.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfbusyindicator.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfBusyIndicator.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfcellgrid.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfCellGrid.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfchart.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfChart.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfdiagram.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfDiagram.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfgrid.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfGrid.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfgridcommon.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfGridCommon.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.datagridexcelexport.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfGridConverter.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfimageeditor.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfImageEditor.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfinput.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfInput.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfkanban.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfKanban.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfmaps.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfMaps.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfradialmenu.wpf\18.3.0.53\lib\netcoreapp5.0\Syncfusion.SfRadialMenu.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfrichtextboxadv.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfRichTextBoxAdv.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfschedule.wpf\18.3.0.53\lib\netcoreapp5.0\Syncfusion.SfSchedule.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfscheduler.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfScheduler.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfshared.wpf\18.3.0.53\lib\netcoreapp5.0\Syncfusion.SfShared.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfskinmanager.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfSkinManager.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.sfspreadsheet.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.SfSpreadsheet.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.shared.wpf.classic\19.4.0.56\lib\net5.0-windows7.0\Syncfusion.Shared.WPF.Classic.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.shared.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Shared.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.themes.fluentlight.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Themes.FluentLight.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.themes.materiallight.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Themes.MaterialLight.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.themes.office2019white.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Themes.Office2019White.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.themes.systemtheme.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Themes.SystemTheme.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.tools.wpf.classic\19.4.0.56\lib\net5.0-windows7.0\Syncfusion.Tools.WPF.Classic.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.tools.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.Tools.WPF.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\syncfusion.xlsio.wpf\20.2.0.46\lib\net5.0-windows7.0\Syncfusion.XlsIO.Base.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.AppContext.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Buffers.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.CodeDom.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Collections.Concurrent.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Collections.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.collections.immutable\7.0.0\lib\net6.0\System.Collections.Immutable.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Collections.NonGeneric.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Collections.Specialized.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.Annotations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.DataAnnotations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.EventBasedAsync.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ComponentModel.TypeConverter.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.composition.attributedmodel\6.0.0\lib\net6.0\System.Composition.AttributedModel.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.composition.convention\6.0.0\lib\net6.0\System.Composition.Convention.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.composition.hosting\6.0.0\lib\net6.0\System.Composition.Hosting.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.composition.runtime\6.0.0\lib\net6.0\System.Composition.Runtime.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.composition.typedparts\6.0.0\lib\net6.0\System.Composition.TypedParts.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Configuration.ConfigurationManager.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Configuration.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Console.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Core.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Data.Common.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Data.DataSetExtensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Data.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.data.odbc\4.7.0\ref\netstandard2.0\System.Data.Odbc.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.data.oledb\4.7.0\ref\netstandard2.0\System.Data.OleDb.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.data.sqlclient\4.8.0\ref\netcoreapp2.1\System.Data.SqlClient.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\stub.system.data.sqlite.core.netstandard\1.0.117\lib\netstandard2.1\System.Data.SQLite.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Design.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.Contracts.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.Debug.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.DiagnosticSource.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.EventLog.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.FileVersionInfo.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.PerformanceCounter.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.Process.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.StackTrace.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.TextWriterTraceListener.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.Tools.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.TraceSource.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Diagnostics.Tracing.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.DirectoryServices.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Drawing.Common.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Drawing.Design.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Drawing.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Drawing.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Dynamic.Runtime.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Formats.Asn1.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Globalization.Calendars.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Globalization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Globalization.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Compression.Brotli.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Compression.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Compression.FileSystem.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Compression.ZipFile.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.FileSystem.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.FileSystem.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.FileSystem.DriveInfo.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.FileSystem.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.FileSystem.Watcher.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.IsolatedStorage.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.MemoryMappedFiles.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.IO.Packaging.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.io.pipelines\5.0.1\ref\netcoreapp2.0\System.IO.Pipelines.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Pipes.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.Pipes.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.io.ports\6.0.0\lib\net6.0\System.IO.Ports.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.IO.UnmanagedMemoryStream.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Linq.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Linq.Expressions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Linq.Parallel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Linq.Queryable.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.management\6.0.0\lib\net6.0\System.Management.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Memory.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Http.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Http.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.HttpListener.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Mail.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.NameResolution.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.NetworkInformation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Ping.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Requests.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Security.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.ServicePoint.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.Sockets.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.WebClient.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.WebHeaderCollection.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.WebProxy.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.WebSockets.Client.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Net.WebSockets.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Numerics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Numerics.Vectors.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ObjectModel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Printing.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.reactive\5.0.0\lib\net5.0\System.Reactive.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.reactive.linq\5.0.0\lib\netstandard2.0\System.Reactive.Linq.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.DispatchProxy.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Emit.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Emit.ILGeneration.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Emit.Lightweight.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Metadata.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Reflection.TypeExtensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Resources.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Resources.Reader.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Resources.ResourceManager.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Resources.Writer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.CompilerServices.Unsafe.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.CompilerServices.VisualC.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Handles.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.InteropServices.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.InteropServices.RuntimeInformation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Intrinsics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Loader.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Numerics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Serialization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Serialization.Formatters.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Serialization.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Serialization.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Runtime.Serialization.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Claims.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Algorithms.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Cng.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Csp.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Encoding.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.OpenSsl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Pkcs.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.ProtectedData.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.X509Certificates.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Security.Cryptography.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Security.Permissions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Principal.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.Principal.Windows.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Security.SecureString.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ServiceModel.Web.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ServiceProcess.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Text.Encoding.CodePages.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Text.Encoding.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Text.Encoding.Extensions.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.text.encodings.web\7.0.0\lib\net6.0\System.Text.Encodings.Web.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\system.text.json\7.0.2\lib\net6.0\System.Text.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Text.RegularExpressions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Threading.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Channels.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Overlapped.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Tasks.Dataflow.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Tasks.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Tasks.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Tasks.Parallel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Thread.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.ThreadPool.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Threading.Timer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Transactions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Transactions.Local.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.ValueTuple.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Web.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Web.HttpUtility.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Controls.Ribbon.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Windows.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Forms.Design.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Forms.Design.Editors.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Forms.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Forms.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Input.Manipulations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Windows.Presentation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\System.Xaml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.Linq.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.ReaderWriter.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.Serialization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.XDocument.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.XmlDocument.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.XmlSerializer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.XPath.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.11\ref\net6.0\System.Xml.XPath.XDocument.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\textfieldparserstandard\1.0.0\lib\netstandard2.0\TextFieldParserStandard.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\UIAutomationClient.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\UIAutomationClientSideProviders.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\UIAutomationProvider.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\UIAutomationTypes.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\websocketsharp.core\1.0.0\lib\netstandard2.0\websocket-sharp-core.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\WindowsBase.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\ref\net6.0\WindowsFormsIntegration.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\windowsshortcutfactory\1.1.0\lib\net6.0-windows7.0\WindowsShortcutFactory.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\extended.wpf.toolkit\4.4.0\lib\net5.0\Xceed.Wpf.AvalonDock.NET5.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\extended.wpf.toolkit\4.4.0\lib\net5.0\Xceed.Wpf.AvalonDock.Themes.Aero.NET5.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\extended.wpf.toolkit\4.4.0\lib\net5.0\Xceed.Wpf.AvalonDock.Themes.Metro.NET5.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\extended.wpf.toolkit\4.4.0\lib\net5.0\Xceed.Wpf.AvalonDock.Themes.VS2010.NET5.dll" />
+    <ReferencePath Include="C:\Users\Fiona\.nuget\packages\extended.wpf.toolkit\4.4.0\lib\net5.0\Xceed.Wpf.Toolkit.NET5.dll" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\Calendar\Calendar.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\Calendar\CalendarBlock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\EmployeeSelector\EmployeeSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\JobSelector\JobSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\ProductGroupSelector\ProductGroupSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\Spreadsheet\SpreadsheetWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Components\TeamSelector\TeamSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Configuration\CustomModuleManager.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Configuration\DataBaseConfiguration.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Common\DigitalFormsDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Common\IncompleteTasksDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Common\QADashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Common\TaskWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\DashboardContainer.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Equipment\EquipmentSchedulesDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\HumanResources\EmployeeQualificationDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\HumanResources\TimeSheetExceptionDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\HumanResources\TimesheetWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Logistics\ConsignmentsWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Logistics\DeliveredToSiteWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Logistics\RackListWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Logistics\ReadyToGoWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\FactoryAllocationWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\FactoryFloorAnalysis.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\FactoryProductivity.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\JobManufacturingSummary.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\ManufacturingStatusWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Manufacturing\ManufacturingTemplateAnalysis.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Projects\JobDocumentStatusChart.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\System\DatabaseActivityDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\System\UserActivity.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\UtilityDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\Warehousing\RequisitionsWidget.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Dashboards\WidgetDashboard.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\ConsignmentDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\ContactDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\DeletedFormWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\DeliveryDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\DigitalFormsDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\JobDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\DockPanels\ProductLookupDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\ChangePassword.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\Console.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\DataModelTemplateForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\DeliveryBuilder.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\DigitalKeyForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\DispatchConfirmation.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\EmailForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\EntitySelectionWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\Export\ExportForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\GenerateStickers.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\ImportBillWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\LocationForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\LoginScreen.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\MapForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\PinLogin.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Forms\RecordSelectionDialog.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\MainWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\ModuleConfigurationWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Attendance\AttendancePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Consignments\ConsignmentsPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Customers\CustomerDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Customers\CustomerPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DailyReports\DailyReport.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DailyReports\DailyReportFavouriteWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DailyReports\QuickTask.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DailyReports\WindowTrackerSetup.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DailyReports\WindowTrackerSummary.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DataEntry\DataEntryPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DataEntry\DocumentManipulationWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DataEntry\DocumentPage.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DataEntry\ScanPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DeliveredOnSite\DeliveredOnSitePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\DeliveryItems\ReadyToGoPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Delivery\DeliveryPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\EmployeePlanner\EmployeeResourcePlanner.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Employees\EmployeeDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Employees\EmployeePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Equipment\EquipmentPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Factory\FactoryLostTimeChooser.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Factory\FactoryPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Factory\ManufacturingTreatmentWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\GPSTrackers\GPSTrackerDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\GPSTrackers\GPSTrackers.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Invoices\InvoiceCalculationSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Invoices\InvoicePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\JobPlanner\JobResourcePlanner.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\DocumentSets\JobDocumentSetPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\DocumentSets\JobDocumentSetTree.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\EmailInterfaceForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobAssignmentPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobBillOfMaterialsPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobDesignImportWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobDesignList.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobDesignSetDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobDocuments.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobEmployeePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobRequisitionPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobStagesPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobStockPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Jobs\JobSummaryPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\LeaveRequests\LeaveCalendar.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\LeaveRequests\LeaveRequestPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Manufacturing\ManufacturingAllocationPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Manufacturing\ManufacturingPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Manufacturing\ManufacturingPanelColumn.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Manufacturing\ManufacturingPanelJobColumn.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Maps\MapsPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Meeting\MeetingPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Notifications\NotificationForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Notifications\NotificationPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Notifications\NotificationsDock.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\OrgChart\OrgChartPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Cost Sheets\CostSheetPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Kits\KitPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Locations\StockLocationPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Locations\StockTakeWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Locations\StockTreatmentWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Master List\ProductPricingForm.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Master List\ProductsPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Movements\StockMovementPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\ProductPricing.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Reservation Management\JobRequisitionHoldingsReview.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Reservation Management\JobRequisitionPurchasing.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Reservation Management\JobRequisitionsPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Products\Reservation Management\JobRequisitionStockSelectionPage.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\CostSheetPricingSelection.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteContracts.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteCostSheets.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteDesigns.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteDiagramControl.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteDiagrams.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuotePanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteProposalDetails.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\QuoteProposals.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Quotes\StencilDesigner.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Requisitions\RequisitionItemHoldingSelector.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Requisitions\RequisitionPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Security\Global\GlobalTokenWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Security\Groups\GroupTokenPage.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Security\User\UserSecurityTokenPage.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Shipments\EditShipment.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Shipments\ShippingPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\StockSummary\StockSummaryControl.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Suppliers\SupplierBillPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Suppliers\SupplierPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Suppliers\SupplierPurchaseOrderPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Tasks\KanbanNotes.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Tasks\TaskPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Tasks\TaskPlannerControl.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Tasks\TasksByStatusControl.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Tasks\TasksByUserControl.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Timesheets\TimeSheetLeaveProcessor.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Timesheets\TimesheetPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Users\QR2FAWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Panels\Users\UserPanel.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\PreviewWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\SecondaryWindow.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\Utils\SelectDatabase.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\App.g.cs" />
+    <Compile Include="E:\Development\prs\prs.desktop\obj\Debug\net6.0-windows\GeneratedInternalTypeHelper.g.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Analyzer Include="C:\Program Files\dotnet\sdk\6.0.403\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\sdk\6.0.403\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll" />
+    <Analyzer Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.2\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
+    <Analyzer Include="C:\Users\Fiona\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.2\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" />
+    <Analyzer Include="C:\Users\Fiona\.nuget\packages\system.text.json\7.0.2\analyzers\dotnet\roslyn4.4\cs\System.Text.Json.SourceGeneration.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\analyzers/dotnet/System.Windows.Forms.Analyzers.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.11\analyzers/dotnet/cs/System.Windows.Forms.Analyzers.CSharp.dll" />
+  </ItemGroup>
+  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+</Project>

+ 9 - 2
prs.desktop/Utils/SelectDatabase.xaml.cs

@@ -140,9 +140,16 @@ namespace PRSDesktop
                                 DatabaseInfo? info = new DatabaseInfo(db.ColorScheme, db.Logo, CoreUtils.GetVersion(), true);
 
                                 if (db.DatabaseType == DatabaseType.Local)
-                                    info = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(db.LocalServerName,false)).Info();
+                                {
+                                    info = new IPCClient<User>(DatabaseServerProperties.GetPipeName(db.LocalServerName, false)).Info();
+                                    //info = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(db.LocalServerName, true)).Info();
+                                }
                                 else if (db.DatabaseType == DatabaseType.Networked)
-                                    info = new RpcClientSocketTransport(db.URLs).Info();
+                                {
+                                    //info = new RpcClientSocketTransport(db.URLs).Info();
+                                    RestClient<User>.Ping(db.URLs, out DatabaseInfo i);
+                                    info = i;
+                                }
 
                                 UpdateInfo(key, db, info, border, image, dbver);
                                 Task.Delay(1000).Wait();

+ 1 - 1
prs.desktop/prsdesktop.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Desktop"
-#define MyAppVersion "7.17i"
+#define MyAppVersion "7.17k"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSDesktop.exe"

+ 105 - 139
prs.server/Engines/Database/DatabaseEngine.cs

@@ -22,13 +22,15 @@ namespace PRSServer
 {
     public class DatabaseEngine : Engine<DatabaseServerProperties>
     {
-        private Timer? CertificateRefreshTimer;
-        private Timer? CertificateHaltTimer;
-        private string IpcPipeName;
-        private string RpcPipeName;
-        private IPCServer? PipeServer;
-
+        private Timer? _certificateRefreshTimer;
+        private Timer? _certificateHaltTimer;
+        
+        private string _ipcPipeName = "";
+        private IPCServer? _ipcServer;
+        
+        private string _rpcPipeName = "";
         private IRpcServer? _pipeserver;
+
         private IRpcServer? _socketserver;
 
         public override void Configure(Server server)
@@ -36,8 +38,8 @@ namespace PRSServer
             base.Configure(server);
             Logger.Send(LogType.Information, "", "Configuring...");
 
-            IpcPipeName = DatabaseServerProperties.GetPipeName(server.Key, false);
-            RpcPipeName = DatabaseServerProperties.GetPipeName(server.Key, true);
+            _ipcPipeName = DatabaseServerProperties.GetPipeName(server.Key, false);
+            _rpcPipeName = DatabaseServerProperties.GetPipeName(server.Key, true);
 
             MoveUpdateFiles();
         }
@@ -47,17 +49,16 @@ namespace PRSServer
             var result = new List<PortStatus>();
             if (Properties.Port != 0)
             {
-                if (RestListener.Certificate != null)
-                    result.Add(new PortStatus(Properties.Port, PortType.Database, PortState.Secure));
-                else
-                    result.Add(new PortStatus(Properties.Port, PortType.Database, PortState.Available));
+                result.Add(RestListener.Certificate != null
+                    ? new PortStatus(Properties.Port, PortType.Database, PortState.Secure)
+                    : new PortStatus(Properties.Port, PortType.Database, PortState.Available));
             }
-            if (Properties.WebSocketPort != 0)
-                result.Add(new PortStatus(Properties.WebSocketPort, PortType.Session, PortState.Available));
+            if (Properties.RPCPort != 0)
+                result.Add(new PortStatus(Properties.RPCPort, PortType.Session, PortState.Available));
             return result.ToArray();
         }
 
-        private void ConfigureSMSProviders()
+        private void ConfigureSmsProviders()
         {
             if (Properties.SMSProviderProperties == null) return;
             if (Properties.SMSProviderProperties.Count == 0)
@@ -70,7 +71,7 @@ namespace PRSServer
                 switch (provider)
                 {
                     case ExchangeProviderProperties exchange:
-                        Logger.Send(LogType.Information, "", string.Format("Initializing Exchange Mailer", Properties.Port));
+                        Logger.Send(LogType.Information, "", "Initializing Exchange Mailer");
                         CredentialsCache.AddSMSProvider(new ExchangeProvider(
                             exchange.Host,
                             exchange.Port,
@@ -79,7 +80,7 @@ namespace PRSServer
                         ));
                         break;
                     case IMAPProviderProperties imap:
-                        Logger.Send(LogType.Information, "", string.Format("Initializing IMAP Mailer", Properties.Port));
+                        Logger.Send(LogType.Information, "", "Initializing IMAP Mailer");
                         CredentialsCache.AddSMSProvider(new IMAPProvider(
                             imap.Host,
                             imap.Port,
@@ -88,14 +89,14 @@ namespace PRSServer
                         ));
                         break;
                     case ASPSMSProviderProperties asp:
-                        Logger.Send(LogType.Information, "", string.Format("Initializing ASPSMS", Properties.Port));
+                        Logger.Send(LogType.Information, "", "Initializing ASPSMS");
                         CredentialsCache.AddSMSProvider(new ASPSMSProvider(
                             asp.Userkey,
                             asp.APIPassword
                         ));
                         break;
                     case TwilioProviderProperties tw:
-                        Logger.Send(LogType.Information, "", string.Format("Initializing Twilio", Properties.Port));
+                        Logger.Send(LogType.Information, "", "Initializing Twilio");
                         CredentialsCache.AddSMSProvider(new TwilioSMSProvider(
                             tw.AccountSID,
                             tw.AuthToken,
@@ -135,11 +136,8 @@ namespace PRSServer
                     x => x.Closed
                 )).Rows.Select(x => x.ToObject<Notification>());
         }
-
-        private void ConfigurePusher()
-        {
-            PushManager.AddPollHandler(PollNotifications);
-        }
+        
+        #region Run/Stop Functionality
 
         public override void Run()
         {
@@ -167,9 +165,7 @@ namespace PRSServer
             DbFactory.Stores = CoreUtils.TypeList(
                 AppDomain.CurrentDomain.GetAssemblies(),
                 myType =>
-                    myType.IsClass
-                    && !myType.IsAbstract
-                    && !myType.IsGenericType
+                    myType is { IsClass: true, IsAbstract: false, IsGenericType: false } 
                     && myType.GetInterfaces().Contains(typeof(IStore))
             ).ToArray();
 
@@ -189,9 +185,8 @@ namespace PRSServer
                 var user = new User { UserID = "ADMIN", Password = "admin" };
                 DbFactory.Provider.Save(user);
 
-                var employee = DbFactory.Provider.Load(new Filter<Employee>(x => x.Code).IsEqualTo("ADMIN")).FirstOrDefault();
-                if (employee == null)
-                    employee = new Employee { Code = "ADMIN", Name = "Administrator Account" };
+                var employee = DbFactory.Provider.Load(new Filter<Employee>(x => x.Code).IsEqualTo("ADMIN")).FirstOrDefault() 
+                               ?? new Employee { Code = "ADMIN", Name = "Administrator Account" };
                 employee.UserLink.ID = user.ID;
                 DbFactory.Provider.Save(employee);
             }
@@ -200,26 +195,47 @@ namespace PRSServer
             PurchaseOrderStore.AutoIncrementPrefix = Properties.PurchaseOrderPrefix;
             JobStore.AutoIncrementPrefix = Properties.JobPrefix;
 
-            ConfigureSMSProviders();
+            ConfigureSmsProviders();
             CredentialsCache.SetCacheFile(Path.Combine(AppDataFolder, "session_cache.json"));
             CredentialsCache.LoadSessionCache();
             CredentialsCache.SetSessionExpiryTime(TimeSpan.FromMinutes(Properties.SessionExpiryTime));
 
-            // if (Properties.WebSocketPort != 0)
-            // {
-            //     // Put a log saying to start the web socket listener.
-            //     Logger.Send(LogType.Information, "", string.Format("Starting Web Socket Listener: Port={0}", Properties.WebSocketPort));
-            // }
-            // // This should be out of the if-statement, since the listener needs to be initialised, even if the web socket port is 0.
+            Start();
+
+        }
+
+        private void Start()
+        {
+            var certificate = LoadCertificate(CertificateFileName());
+            if (certificate != null)
+            {
+                // Once every day, check certificate expiry
+                if (_certificateRefreshTimer == null)
+                {
+                    _certificateRefreshTimer = new Timer(1000 * 60 * 60 * 24);
+                    _certificateRefreshTimer.Elapsed += CertificateTimer_Elapsed;
+                    _certificateRefreshTimer.AutoReset = true;
+                }
+                _certificateRefreshTimer.Start();
+            }
+
+            // Older Style Rest-Listener
+            if (Properties.Port != 0)
+            {
+                RestListener.Init((ushort)Properties.Port, certificate);
+                RestListener.Start();
+                Logger.Send(LogType.Information, "", $"- Rest Listener Started: Port={Properties.Port}");
+            }
             
-            RestListener.Init(0); //this used to be Properties.WebSocketPort, however we are temporarily using this port to configure the RPCSocket connection
-            InitialisePort();
-            RestListener.Start();
-            Logger.Send(LogType.Information, "", $"- Rest Listener Started: Port={Properties.Port}");
+            // Older-Style Pipe (IPC Server)
+            _ipcServer = new IPCServer(_ipcPipeName);
+            _ipcServer.Start();
+            Logger.Send(LogType.Information, "", $"- IPC Pipe Listener started: Name=[{_ipcPipeName}]");
 
+            // New Style Socket Listenet
             if (Properties.RPCPort != 0)
             {
-                var sockettransport = new RpcServerSocketTransport(Properties.RPCPort, CertificateFileName());
+                var sockettransport = new RpcServerSocketTransport(Properties.RPCPort, certificate);
                 _socketserver = new RpcServer<RpcServerSocketTransport>(sockettransport);
                 _socketserver.OnLog += (type, userid, message, parameters) => Logger.Send(type, userid, $"[S] {message}", parameters);
                 _socketserver.Start();
@@ -227,84 +243,56 @@ namespace PRSServer
                 Logger.Send(LogType.Information, "", $"- RPC Listener Started: Port={Properties.RPCPort}");
             }     
             
-            PipeServer = new IPCServer(IpcPipeName);
-            PipeServer.Start();
-            Logger.Send(LogType.Information, "", $"- IPC Pipe Listener started: Name=[{IpcPipeName}]");
-            
-            var pipetransport = new RpcServerPipeTransport(RpcPipeName);
+            // New Style Pipe (RPC) Listener
+            var pipetransport = new RpcServerPipeTransport(_rpcPipeName);
+            PushManager.AddPusher(pipetransport);
             _pipeserver = new RpcServer<RpcServerPipeTransport>(pipetransport);
             _pipeserver.OnLog += (type, userid, message, parameters) => Logger.Send(type, userid, $"[P] {message}", parameters);
             _pipeserver.Start();
-            Logger.Send(LogType.Information, "", $"- RPC Pipe Listener started: Name=[{RpcPipeName}]");
+            Logger.Send(LogType.Information, "", $"- RPC Pipe Listener started: Name=[{_rpcPipeName}]");
             
-            PushManager.AddPusher(pipetransport);
-            ConfigurePusher();
+            PushManager.AddPollHandler(PollNotifications);
             Logger.Send(LogType.Information, "", $"- Push Notifications Configured");
+        }
+        
+        public override void Stop()
+        {
+            Logger.Send(LogType.Information, "", "Stopping..");
+            
+            _socketserver?.Stop();
+            _socketserver = null;
+
+            _pipeserver?.Stop();
+            _pipeserver = null;
+            
+            _ipcServer?.Dispose();
+
+            RestListener.Stop();
+            CredentialsCache.SaveSessionCache();
 
+            _certificateRefreshTimer?.Stop();
+            _certificateRefreshTimer = null;
+            
+            _certificateHaltTimer?.Stop();
+            _certificateHaltTimer = null;
         }
 
+        #endregion
+        
         #region Certificate Management
 
         private string CertificateFileName() =>
             !string.IsNullOrWhiteSpace(Properties.CertificateFile)
             ? Properties.CertificateFile
             : CertificateEngine.CertificateFile;
-
-        private void InitialisePort()
-        {
-            var useHTTP = true;
-            if (File.Exists(CertificateFileName()))
-            {
-                Logger.Send(LogType.Information, "", "Certificate found; verifying HTTPS Certificate");
-                try
-                {
-                    var certificate = new X509Certificate2(CertificateFileName());
-                    if (certificate.NotAfter > DateTime.Now)
-                    {
-                        RestListener.InitCertificate((ushort)Properties.Port, certificate);
-
-                        var names = CertificateEngine.GetDnsNames(certificate);
-                        Logger.Send(LogType.Information, "", $"Certificate valid for {string.Join(',', names)}");
-                        useHTTP = false;
-                    }
-                    else
-                    {
-                        Logger.Send(LogType.Error, "", "HTTPS Certificate has expired, using HTTP instead");
-                    }
-                }
-                catch (Exception)
-                {
-                    Logger.Send(LogType.Error, "", "Error validating HTTPS Certificate, using HTTP instead");
-                }
-            }
-            if (useHTTP)
-            {
-                RestListener.InitPort((ushort)Properties.Port);
-            }
-            else
-            {
-                // Once every day, check certificate expiry
-                if (CertificateRefreshTimer == null)
-                {
-                    CertificateRefreshTimer = new Timer(1000 * 60 * 60 * 24);
-                    CertificateRefreshTimer.Elapsed += CertificateTimer_Elapsed;
-                    CertificateRefreshTimer.AutoReset = true;
-                }
-                CertificateRefreshTimer.Start();
-            }
-        }
+        
 
         private void SendCertificateExpiryNotification(DateTime expiry)
         {
-            string message;
-            if (expiry.Date == DateTime.Now.Date)
-            {
-                message = $"HTTPS Certificate for Database Engine will expire today at {expiry.TimeOfDay:hh\\:mm}";
-            }
-            else
-            {
-                message = $"HTTPS Certificate for Database Engine will expire in {(expiry - DateTime.Now).Days} at {expiry:dd/MM/yyyy hh:mm}";
-            }
+            var message = expiry.Date == DateTime.Now.Date 
+                ? $"HTTPS Certificate for Database Engine will expire today at {expiry.TimeOfDay:hh\\:mm}" 
+                : $"HTTPS Certificate for Database Engine will expire in {(expiry - DateTime.Now).Days} at {expiry:dd/MM/yyyy hh:mm}";
+            
             Logger.Send(LogType.Information, "DATABASE", message);
             if (!string.IsNullOrWhiteSpace(Properties.CertificateExpirationSubscriber))
             {
@@ -317,7 +305,8 @@ namespace PRSServer
                     notification.Employee.ID = employee.ID;
                     notification.Title = "HTTPS Certificate expires soon";
                     notification.Description = message;
-                    DbFactory.FindStore<Notification>(employee.UserLink.ID, employee.UserLink.UserID, Platform.DatabaseEngine, "").Save(notification, "");
+                    DbFactory.FindStore<Notification>(employee.UserLink.ID, employee.UserLink.UserID, Platform.DatabaseEngine, "")
+                        .Save(notification, "");
                 }
                 else
                 {
@@ -339,7 +328,8 @@ namespace PRSServer
                 if (cert != null && cert.NotAfter > RestListener.Certificate.NotAfter && cert.NotAfter > DateTime.Now)
                 {
                     Logger.Send(LogType.Information, "DATABASE", "HTTPS Certificate with greater expiry date found; restarting HTTPS listener...");
-                    RestartListener();
+                    Stop();
+                    Start();
                 }
 
                 var expiry = RestListener.Certificate.NotAfter;
@@ -349,12 +339,12 @@ namespace PRSServer
                     SendCertificateExpiryNotification(expiry);
                     if (untilExpiry.TotalDays <= 1)
                     {
-                        CertificateRefreshTimer?.Stop();
+                        _certificateRefreshTimer?.Stop();
 
-                        CertificateHaltTimer = new Timer(untilExpiry.TotalMilliseconds);
-                        CertificateHaltTimer.Elapsed += HTTPS_Halt_Elapsed;
-                        CertificateHaltTimer.AutoReset = false;
-                        CertificateHaltTimer.Start();
+                        _certificateHaltTimer = new Timer(untilExpiry.TotalMilliseconds);
+                        _certificateHaltTimer.Elapsed += HTTPS_Halt_Elapsed;
+                        _certificateHaltTimer.AutoReset = false;
+                        _certificateHaltTimer.Start();
                     }
                 }
             }
@@ -367,11 +357,12 @@ namespace PRSServer
         /// <param name="e"></param>
         private void HTTPS_Halt_Elapsed(object? sender, ElapsedEventArgs e)
         {
-            CertificateHaltTimer?.Dispose();
-            CertificateHaltTimer = null;
+            _certificateHaltTimer?.Dispose();
+            _certificateHaltTimer = null;
 
             Logger.Send(LogType.Information, "", "Expiry of certificate reached; restarting HTTPS listener...");
-            RestartListener();
+            Stop();
+            Start();
         }
 
         #endregion
@@ -416,31 +407,6 @@ namespace PRSServer
         }
 
         #endregion
-
-        private void RestartListener()
-        {
-            RestListener.Clear();
-            RestListener.Init(Properties.WebSocketPort);
-            InitialisePort();
-            RestListener.Start();
-        }
-
-        public override void Stop()
-        {
-            Logger.Send(LogType.Information, "", "Stopping..");
-
-            _socketserver?.Stop();
-            _socketserver = null;
-
-            //_pipeserver?.Stop();
-            //_pipeserver = null;
-            PipeServer?.Dispose();
-
-            RestListener.Stop();
-            CredentialsCache.SaveSessionCache();
-
-            CertificateRefreshTimer?.Stop();
-            CertificateHaltTimer?.Stop();
-        }
+        
     }
 }

+ 36 - 0
prs.server/Engines/Engine.cs

@@ -1,6 +1,7 @@
 using System;
 using System.IO;
 using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
 using InABox.Core;
 using InABox.IPC;
 using InABox.Logging;
@@ -69,5 +70,40 @@ namespace PRSServer
                 key
             );
         }
+        
+        public static X509Certificate2? LoadCertificate(string filename)
+        {
+            if (!String.IsNullOrWhiteSpace(filename))
+            {
+                Logger.Send(LogType.Information, "", "Certificate FileName is {0}", filename);
+                if (File.Exists(filename))
+                {
+                    Logger.Send(LogType.Information, "", "Certificate found; verifying HTTPS Certificate");
+                    try
+                    {
+                        var certificate = new X509Certificate2(filename);
+                        if (certificate.NotAfter > DateTime.Now)
+                        {
+                            
+                            var names = CertificateEngine.GetDnsNames(certificate);
+                            Logger.Send(LogType.Information, "", $"Certificate valid for {string.Join(',', names)}");
+                            return certificate;
+                        }
+                        else
+                        {
+                            Logger.Send(LogType.Error, "", "HTTPS Certificate has expired, using HTTP instead");
+                        }
+                    }
+                    catch (Exception)
+                    {
+                        Logger.Send(LogType.Error, "", "Error validating HTTPS Certificate, using HTTP instead");
+                    }
+                }
+                else
+                    Logger.Send(LogType.Error, "", "Certificate File does not exist!");
+            }
+            return null;
+        }
+
     }
 }

+ 4 - 2
prs.server/Engines/GPS/GPSEngine.cs

@@ -279,8 +279,10 @@ namespace PRSServer
 
             CoreUtils.RegisterClasses();
             ComalUtils.RegisterClasses();
-
-            ClientFactory.SetClientType(typeof(IPCClient<>), Platform.GPSEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server,false));
+            
+            //ClientFactory.SetClientType(typeof(IPCClient<>), Platform.GPSEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server,false));
+            var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server, true));
+            ClientFactory.SetClientType(typeof(RpcClient<>), Platform.GPSEngine, Version, transport);
             CheckConnection();
 
             UpdateQueue.InitQueueFolder();

+ 4 - 5
prs.server/Engines/Scheduler/ScheduleEngine.cs

@@ -34,11 +34,10 @@ namespace PRSServer
                     Logger.Send(LogType.Error, "", "Server is blank!");
                     return;
                 }
-                ClientFactory.SetClientType(typeof(IPCClient<>), Platform.SchedulerEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server, false));
-
-                //var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server));
-                //ClientFactory.SetClientType(typeof(RpcClient<>), Platform.SchedulerEngine, Version, transport);
-
+                
+                //ClientFactory.SetClientType(typeof(IPCClient<>), Platform.SchedulerEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server, false));
+                var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server, true));
+                ClientFactory.SetClientType(typeof(RpcClient<>), Platform.SchedulerEngine, Version, transport);
                 CheckConnection();
 
                 Logger.Send(LogType.Information, "", "Starting Scheduler: ");

+ 19 - 15
prs.server/Engines/WebEngine/WebEngine.cs

@@ -30,11 +30,11 @@ namespace PRSServer
                 Logger.Send(LogType.Error, "", "Server is blank!");
                 return;
             }
-            ClientFactory.SetClientType(typeof(IPCClient<>), Platform.WebEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server, false));
-
-            //var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server));
-            //ClientFactory.SetClientType(typeof(RpcClient<>), Platform.WebEngine, Version, transport);
-
+            //ClientFactory.SetClientType(typeof(IPCClient<>), Platform.WebEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server, false));
+            var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server, true));
+            ClientFactory.SetClientType(typeof(RpcClient<>), Platform.WebEngine, Version, transport);
+            CheckConnection();
+            
             Logger.Send(LogType.Information, "", "Registering Classes");
 
             StoreUtils.RegisterClasses();
@@ -42,16 +42,7 @@ namespace PRSServer
             ComalUtils.RegisterClasses();
             ReportUtils.RegisterClasses();
             ConfigurationUtils.RegisterClasses();
-
-            while (!Client.Ping())
-            {
-                Logger.Send(LogType.Error, "", "Database server unavailable. Trying again in 30 seconds...");
-                await Task.Delay(30_000);
-                Logger.Send(LogType.Information, "", "Retrying connection...");
-            }
-
-            ClientFactory.SetBypass();
-
+            
             try
             {
                 listener?.Stop();
@@ -67,6 +58,19 @@ namespace PRSServer
             }
         }
 
+        private void CheckConnection()
+        {
+            // Wait for server connection
+            while (!Client.Ping())
+            {
+                Logger.Send(LogType.Error, "", "Database server unavailable. Trying again in 30 seconds...");
+                Task.Delay(30_000).Wait();
+                Logger.Send(LogType.Information, "", "Retrying connection...");
+            }
+
+            ClientFactory.SetBypass();
+        }
+
         public override void Stop()
         {
             Logger.Send(LogType.Information, "", "Stopping..");

+ 18 - 6
prs.server/Forms/ServerGrid.cs

@@ -284,7 +284,7 @@ namespace PRSServer
         }
 
         private Dictionary<String, ServiceControllerStatus> _serviceStatuses = new Dictionary<string, ServiceControllerStatus>();
-        private Dictionary<string, bool> _secureConnections { get; set; } = new Dictionary<string, bool>();
+        private Dictionary<string, bool> _secureConnections = new Dictionary<string, bool>();
         private Dictionary<String,RpcClientPipeTransport> _pipemonitors = new Dictionary<string, RpcClientPipeTransport>();
         private Dictionary<String,HttpClient> _webmonitors = new Dictionary<string, HttpClient>();
 
@@ -749,19 +749,31 @@ namespace PRSServer
                 Task? task;
                 if (service.Status == ServiceControllerStatus.Running)
                 {
-                    task = Task.Run(() => { service.Stop(); });
+                    task = Task.Run(
+                        () =>
+                        {
+                            service.Stop();
+                            Dispatcher.Invoke(()=> Refresh(false, false));
+                        });
                     //StopConsole(key);
                 }
                 else if (service.Status == ServiceControllerStatus.Stopped)
                 {
-                    task = Task.Run(() => {
-                        service.Start();
-                    });
+                    task = Task.Run(
+                        () => 
+                        {
+                            service.Start();
+                            Dispatcher.Invoke(()=> Refresh(false, false));
+                        });
                     StartConsole(arg,key);
                 }
                 else if (service.Status == ServiceControllerStatus.Paused)
                 {
-                    task = Task.Run(() => { service.Continue(); });
+                    task = Task.Run(() =>
+                    {
+                        service.Continue();
+                        Dispatcher.Invoke(()=> Refresh(false, false));
+                    });
                 }
                 else
                 {

+ 1 - 1
prs.server/PRSServer.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Server"
-#define MyAppVersion "7.17i"
+#define MyAppVersion "7.17k"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSServer.exe"