This commit is contained in:
Kim 2023-02-16 13:57:06 +01:00
commit d3be39d265
8915 changed files with 1018331 additions and 0 deletions

View File

@ -0,0 +1 @@
InnovEnergy

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal" created-in="RD-223.8617.53">
<data-source name="db" uuid="1079175c-be79-4df9-abc2-f2a94bc35f84">
<database-info product="SQLite" version="3.39.2" jdbc-version="2.1" driver-name="SQLite JDBC" driver-version="3.39.2.0" dbms="SQLITE" exact-version="3.39.2" exact-driver-version="3.39">
<identifier-quote-string>&quot;</identifier-quote-string>
</database-info>
<case-sensitivity plain-identifiers="mixed" quoted-identifiers="mixed" />
<secret-storage>master_key</secret-storage>
<auth-provider>no-auth</auth-provider>
<schema-mapping>
<introspection-scope>
<node kind="schema" qname="@" />
</introspection-scope>
</schema-mapping>
</data-source>
</component>
</project>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="db" uuid="1079175c-be79-4df9-abc2-f2a94bc35f84">
<driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/app/Backend/db.sqlite</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EfCoreCommonOptions">
<option name="migrationsToStartupProjects">
<map>
<entry key="8d7c028f-e864-4853-9957-1823ba57b7d0" value="8d7c028f-e864-4853-9957-1823ba57b7d0" />
</map>
</option>
<option name="startupToMigrationsProjects">
<map>
<entry key="8d7c028f-e864-4853-9957-1823ba57b7d0" value="8d7c028f-e864-4853-9957-1823ba57b7d0" />
</map>
</option>
</component>
</project>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EfCoreDialogsState">
<option name="keyValueStorage">
<map>
<entry key="Common:8d7c028f-e864-4853-9957-1823ba57b7d0:dbContext" value="Backend.Context.ApplicationDbContext" />
<entry key="Common:buildConfiguration" value="Debug" />
<entry key="Common:noBuild" value="false" />
<entry key="Common:outputFolder" value="Migrations" />
<entry key="Common:useDefaultConnection" value="true" />
</map>
</option>
</component>
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RiderProjectSettingsUpdater">
<option name="vcsConfiguration" value="2" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,959 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoGeneratedRunConfigurationManager">
<projectFile>BmsTunnel/BmsTunnel.csproj</projectFile>
<projectFile>Meiringen/Meiringen.csproj</projectFile>
<projectFile>RemoteSupportConsole/RemoteSupportConsole.csproj</projectFile>
<projectFile>S3/S3.csproj</projectFile>
<projectFile profileName="Backend">app/Backend/Backend.csproj</projectFile>
<projectFile>app/CsController/CsController.csproj</projectFile>
<projectFile>app/EmuMeterDriver/EmuMeterDriver.csproj</projectFile>
<projectFile>app/FossilTui/FossilTui.csproj</projectFile>
<projectFile>app/GuiFeeder/GuiFeeder.csproj</projectFile>
<projectFile>app/TestBatteryDbus/TestBatteryDbus.csproj</projectFile>
<projectFile>app/Trumpf/SaliMax.csproj</projectFile>
<projectFile>app/Trumpf/Trumpf.Client.csproj</projectFile>
</component>
<component name="ChangeListManager">
<list default="true" id="6c592741-41e1-4ea7-be7b-2610d55779c1" name="Changes" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="DisabledMethodsStorage">
<option name="disabledMethods">
<set>
<option value="VeDBus : InnovEnergy.VeDBus.VeDBus : GetAllValues (InnovEnergy.DBus.DBusConnection, string)" />
<option value="System.Private.CoreLib : System.Threading.Tasks.Task&lt;TResult&gt; : get_Result ()" />
</set>
</option>
</component>
<component name="HighlightingSettingsPerFile">
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/01c96d411fe34bd5940c99a56515582b18c00/17/1fc9d684/SQLiteAsyncConnection.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/01c96d411fe34bd5940c99a56515582b18c00/8f/c7372752/SQLiteConnection.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/0606c4c5316b4c32aeb1854799d93db514600/d6/980d26e7/ClaimsPrincipal.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/08391eadc0c74477a3a01bf5c519fbd0b2a00/5a/b97137f5/EndpointMiddleware.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/12e9da477be44d4e9044c2348c470d43c000/c9/cc411b29/IHeaderDictionary.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/187bc9dae33848f8acf2e1fd1e275a4a1a8c00/04/72f85977/HttpResponseMessage.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/187bc9dae33848f8acf2e1fd1e275a4a1a8c00/c9/914c08b2/HttpMethod.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/1cb4873f9128498fbde3df7f6f5e9ea45f200/3a/0a16c3a7/DeveloperExceptionPageMiddleware.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/1dd9e5cfb1174bdd8b4714bb774bd9143e400/55/72b97cb6/DefaultHttpContext.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/1dd9e5cfb1174bdd8b4714bb774bd9143e400/5f/9849a094/HttpServiceCollectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/1e0d3ddd482142fdafc905175ee48f863d400/28/32356ee3/Process.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/32560edb7aab49dd85467b75e25ced432a588/c1/a92cf0da/CoordinateSpace.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/35f04ad5c8c344b590a0bf93aa0529f91a000/1b/1e7e1ebc/SQLiteConnection.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/35f04ad5c8c344b590a0bf93aa0529f91a000/1d/9baaebfb/SQLite3.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/35f04ad5c8c344b590a0bf93aa0529f91a000/47/3d160a75/PreparedSqlLiteInsertCommand.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/35f04ad5c8c344b590a0bf93aa0529f91a000/b9/0e6a2ae7/SQLiteAsyncConnection.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3683cdfd749a4986811b9ba13401aa89c800/29/ca9faf4c/JsonDocument.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/06/46ccd377/RuntimeType.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/1b/f6055ef6/IDictionary`2.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/24/22861cd2/ThrowHelper.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/4d/df5997d9/PortableThreadPool.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/51/6155b0b3/EventArgs.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/92/2dbae1d5/Guid.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/b3/a4e641c4/ExceptionDispatchInfo.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/bf/c7360a1b/PropertyInfo.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/d1/2294a667/StreamReader.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/d6/11133568/Task`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/de/be06d543/AsyncValueTaskMethodBuilder`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/e0/f2576aa2/Thread.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/3a55740e78404477a8c7d10d13c3b33394de00/fd/8d5acc31/IntrospectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/469ece4c5e50469a945a25a6befb4ee56f5e8/01/361ca127/HttpResponseException.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/469ece4c5e50469a945a25a6befb4ee56f5e8/b7/3d98c372/OkResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/49e174f39b994f14802ab7d8bdd045531a400/94/2b8b4ba8/IOptionsMonitor`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/4bc558a104cf4dafa818f34a7805767e21400/b2/21f10122/Results.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/5ee9a30f14564f10b4c66d95fef7e11c1fd600/88/9576ce73/HttpProtocol.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/55/3430994f/InvalidOperationException.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/5d/8e5dae63/Task.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/61/18ff2403/Directory.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/80/93a7e547/DefaultInterpolatedStringHandler.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/9e/d692fa3b/Task`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/bd/d43f4c53/Object.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/c5/399724b4/CastHelpers.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/c5/9f5aa39f/ExecutionContext.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/c7/d79ddfe0/IReadOnlyList`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/d9/81940e3e/Nullable`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6818c1ae16684bb6a6533b1e52073ad994de00/e5/5bb2126f/ExceptionDispatchInfo.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6e3e999f274f4d8d975f3e72241aee2fc600/00/df1f6ff5/ISQLite3Provider.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6e3e999f274f4d8d975f3e72241aee2fc600/7d/0469de50/sqlite3_context.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6e3e999f274f4d8d975f3e72241aee2fc600/f9/3e6e0fe5/raw.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/6eb76ff6c6784c7db859585bb02b75c05800/f4/02cf4052/MvcServiceCollectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/7f6718e374054660921ac6e547f169c13d400/65/1aa01b41/Process.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/811c87ebac0e4ae8a81b5df1d7aaf3576e200/bd/08da29f3/Enumerable.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/86208e725d1545df881eb64d336c7ce26e200/7c/9d745a5b/ThrowHelper.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/86208e725d1545df881eb64d336c7ce26e200/ec/8106e9c7/Enumerable.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8e81c61540a647fba61810023ddca2a010200/1a/38300036/StringValues.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/99b833e144fd49e88e700126d0ceb4e21cc600/04/f9182900/ResourceInvoker.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/99b833e144fd49e88e700126d0ceb4e21cc600/38/9d33a2cc/HttpGetAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/99b833e144fd49e88e700126d0ceb4e21cc600/89/00eff84f/ActionMethodExecutor.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/99b833e144fd49e88e700126d0ceb4e21cc600/c3/335f95aa/ControllerEndpointRouteBuilderExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/99b833e144fd49e88e700126d0ceb4e21cc600/ea/0470114e/ControllerActionInvoker.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/a67613d88a964a0e8636c568fa41b03a21200/70/c375ae0b/AuthenticationBuilder.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/a67613d88a964a0e8636c568fa41b03a21200/87/8d247dba/AuthenticationSchemeOptions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/a67613d88a964a0e8636c568fa41b03a21200/da/3b7426c3/AuthenticationHandler`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/a67613d88a964a0e8636c568fa41b03a21200/f2/62d837e3/AuthenticationServiceCollectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/b747f4c508d04bfc99765cb97239801611600/3c/a518d6b6/AuthenticationCoreServiceCollectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c01ac06c398b4220b2bd4a68153abf1abc00/cc/6d98f969/AuthorizationAppBuilderExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c01ac06c398b4220b2bd4a68153abf1abc00/da/5dd5ad79/AuthorizationMiddleware.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c2586f96ec8d4558a1a474ec6e6e8f8034600/09/0a26e933/HttpRequest.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c2586f96ec8d4558a1a474ec6e6e8f8034600/52/043232bb/HttpResponse.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c2586f96ec8d4558a1a474ec6e6e8f8034600/a3/5c365c05/RequestDelegate.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/c2586f96ec8d4558a1a474ec6e6e8f8034600/cd/200bb0d7/HttpContext.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/d1edc9ef2b6545bfaca5143dd43a36de9c200/4a/d807cfea/JObject.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/3d/798f3797/SocketPal.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/ac/4b4abb9e/Socket.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/e91256da152d4e849ea796b0997ae1868a000/76/42ef60e8/ImmutableDictionary`2.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f237a55ab16d4649b96170604924f6b94bf450/85/9f4f52ed/DbQuery.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f49a090c77734952b7a1e43d9af6f18a5600/8f/d23e2223/FeatureReferences`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/3b/d719c999/Utf8JsonReader.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/3e/715ef200/JsonDocument.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/6b/5bc89889/JsonElement.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/bf/8499ff74/JsonNode.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f913db5f05474346a2624ce5b68da801166000/4c/f0efbcd2/JsonUnknownTypeHandling.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f913db5f05474346a2624ce5b68da801166000/99/35966430/JsonSerializerOptions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f913db5f05474346a2624ce5b68da801166000/eb/10702b22/ThrowHelper.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/17e74ab61fe0ba52377e6be4626e748b457547f6bc2e4353acda3221accd0/Subject.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/18117059223528dcae312eec75311fb192d0b0775226906ec09d98af8bf4e1c0/BufferedCommandExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/19ce9f54c189edd1a124573cf32e91321c48bf8645fee9991328b38453da7e/TaskPoolScheduler.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/1b62c7a0723c7bc40e0efcca2d0af15afaf33572d507c2fba5b555d9af5fafc/Dematerialize.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/1ecab6ba5e8f446c75c7ea0819f7bfd191afa76aa953f354eb50d25014ac/IdentitySink.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/225bcfb08ea3eeaced68336cc29bff88a8b545dee74b8c626cbf65a752b416/Cli.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/37d3a8d52d7795db3e1f3487de9c881f6451d3a671e296ec9c49a4dfc5902116/PullEventStreamCommandExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/3b113fb47d5fe36ed688b56c465cfe2738fca0ea3df9ed5a9683d7b49836b7/SwaggerUIMiddleware.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/3c43165337758f2c98a965c1524e4d2624f95e6c8f71241413519047a76262/CommandResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/408d436c67cab0511bb819ed68740706526cb243789c3d87c1bb1695549/SwaggerGenServiceCollectionExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/41c42a1e5c9a977a37ed49d42753e238fa7b9b5aabab11fc19d2344f5c856ee/Command.Execution.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/43b4ad93abe11addf8612c9062329263cbf2efdf172ae22d0bda4e4d1717c/Repeat.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/43c4ac653824846234d07b16eeab1df4319a41567f72c88a71289e2ab1897f9/Do.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/452572c25f6143f46899c1d02ae6645f61025cf4dd76bb9e01096d8fbb71a/ArgumentsBuilder.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/4a88ec0fdb53eae6ab56fcd129ea5d75f4eea8f9456ea861ec32e6f9a4da128/Merge.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/5028320658ac437c327e7d57cfe06dfc5a791c618d8c2bb0545639ff987b/Sink.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/536fe327804b8d35c7efb3a395c1ddd8e291936981ce8567f437fe19910b159/Database.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/5565cc2c2b34a66bfbd375f541a50e550709076b0831bf4dae5dec3850843f/CommandTask.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/568b9c987fd965268168d03776869d3763a082eda1256ebdc37ae875eb236ab4/Command.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/56bee9138caeac1154b9e7ca4238a8b22acd21e658e469860f3123e6e49e8/BufferedCommandResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/5cccf0eaf9dd3ca556eba34186f8c413faaf2a7dcbb8a842abf3e6fcaf123/CommandResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/5e5416516bbe32d90b39ecefafb545d9dc44be8a58a7b9b5b8c4d62feb9c2b9/SwaggerUIOptionsExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/5f47183247b53f3c2f836d70fe62231aad7be53d768444ab9fdfeeef8b32777/CommandTask.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/72832e242b1b5b2b5f2cfe23f68fbfedefd417121b74c7b4f76b514a1c40/Observable.Extensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/74d1dea0891bd9f3515fc4d4fd5570c65da55efb64d7e992e68fd5821ebc24c0/AnonymousSafeObserver.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/76c0e4122422fa498e2c6d284ca4ce48027c1d21d7b596dc50cbd9baa05b49/SwaggerBuilderExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/80b15f2d608534da9f5aab25658043be68149611d0b6273818c29fb89a174d87/Select.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/80fad1abc6a0b19dbe738ff7fdc6d92da5bf128839240743dd9c1d3e274cf/SwaggerMiddleware.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/8e567a2c849474f850ef716e79b921b1581f49eeaf9de36136cda15f53c2f4/Where.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/983b7a4ee61edf6364848e7b8d0dd33c8457e5d30ede2678477684c82187a5/ProcessEx.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/a1a59674744830c52bb8ec2c75c1a5b1b21ec7b871acd25d24a346472da73b/DbContext.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/b3c9911bbc1b1d7557fdfc2225811bdc2427afddf5f3e59e53b128cde1483cd/EventStreamCommandExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/b42861e221c0fde5c45f857f38f4a9e2a5fa8a7f9ed9453a15c1f5509eb69d/Observable.Aggregates.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/b42d26359c6bfbf591ff62b4b4b9e34e4aab9c151474a86329df7372921574/AsyncExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/b4f6fffb9bd58144dfd819e5d3bcb2313d2de94c1336555bf76c652fc9e49f/BufferedCommandExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/b7ee537db3be7868b8650c0b8d4ecd6c5d081eb408ac8fe459ca9474358a6/BufferedCommandExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/bce01e78b1581ef4ea9e89b53cefa56286e87ebc/JObject.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/ce719136c12653cd464ae0b247771f618b92f8beec14c1010b5278a7d0fd1f/DbContextServices.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/db54797680857c5550381b42a132c12a5609ae4fa1ec7403133608c2ae168/CommandTask.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/ec9cbb41e7c431e6de747cc3eb514627fd64fb0a57fae8952b4a2d5573/System.IO.Ports.notsupported.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/f73958bdc401691bb667ebb73ebf28cf6a7bad520ed4cedaca5a8a3dc54b0/BufferedCommandResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/f73b747d8126a37ac83820b537c76ca04de76354f169d94c4ab293bc535fbb2/QueryParamCollection.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/f9daeeaab8409865442b5e80e634dc64dae9a14892fe81e0f17b46f51b2c48f8/DbSet.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/fc44e6c2c8173b199eaf5a6b7073cd693f50af701cdcf751c8da5e1541e17eb6/Cli.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/fd2e372dd4288d2bca15417b23931e4998b26559de29da8d55e3a3c797ed9e62/Cli.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/fd57c21597f9cf6de3e278256cd23f8e6cab94f24ae518365ff65894297a331/Materialize.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$USER_HOME$/.nuget/packages/microsoft.net.test.sdk/16.7.1/build/netcoreapp2.1/Microsoft.NET.Test.Sdk.Program.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/Backend/Controllers/Controller.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/BmsTunnel/Program.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/CsController/Program.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/GuiFeeder/Utils.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/TestBatteryDbus/Program.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/VenusLogger/Program.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/app/VenusLogger/VeService.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/lib/Wireformat/package-lock.json" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/DBus/Bus.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/DBus/DBusMessageStream.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/DBus/DBusService.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/DBus/Daemon/DBusDaemonConnection.Resolver.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/VeDBus/VeDBus.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/../../server/VeDBus/VeDbusService.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file:///tmp/JetBrainsPerUserTemp-1000-1/Duponil.cs" root0="SKIP_HIGHLIGHTING" />
</component>
<component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" />
</component>
<component name="ProblemsViewState">
<option name="selectedTabId" value="Toolset" />
</component>
<component name="ProjectId" id="2Fi0d09FXV1Qd2VdtWvbFUU8PjB" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false",
"XThreadsFramesViewSplitterKey": "0.030162413",
"last_opened_file_path": "/home/kim/code/innovenergy/new/csharp/app/Backend/Backend.csproj",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "preferences.pluginManager",
"vue.rearranger.settings.migration": "true"
},
"keyToStringList": {
"DatabaseDriversLRU": [
"sqlite"
],
"rider.external.source.directories": [
"/home/kim/.config/JetBrains/Rider2022.3/resharper-host/DecompilerCache",
"/home/kim/.config/JetBrains/Rider2022.3/resharper-host/SourcesCache",
"/home/kim/.local/share/Symbols/src"
]
}
}]]></component>
<component name="RunManager" selected=".NET Launch Settings Profile.Backend">
<configuration name="API" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/API/API.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Backend" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/Backend/Backend.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="Unloaded" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="BmsTunnel" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="$PROJECT_DIR$/app/BmsTunnel/bin/Debug/net6.0/BmsTunnel" />
<option name="PROGRAM_PARAMETERS" value="192.168.178.20" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/BmsTunnel/bin/Debug/net6.0" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/BmsTunnel/BmsTunnel.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="net6.0" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Collector" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Collector/Collector.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Controller" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/CsController/CsController.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="CsController" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/CsController/CsController.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="EmuMeter" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/EmuMeter/EmuMeter.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="EmuMeterDriver" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/EmuMeterDriver/EmuMeterDriver.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="FirmwareCiDaemon" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/VenusFirmwareCiDaemon/FirmwareCiDaemon.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="FossilTui" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/FossilTui/FossilTui.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="GuiFeeder" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/GuiFeeder/GuiFeeder.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Logging" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Logging/Logging.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Meiringen" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Meiringen/Meiringen.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="OpenVpnCertificatesServer" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="RemoteSupportConsole" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/RemoteSupportConsole/RemoteSupportConsole.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="Unloaded" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="S3" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/S3/S3.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="SaliMax" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/Trumpf/SaliMax.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="TestBatteryDbus" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="$PROJECT_DIR$/app/TestBatteryDbus/bin/Debug/net6.0/TestBatteryDbus" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/TestBatteryDbus/bin/Debug/net6.0" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/TestBatteryDbus/TestBatteryDbus.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="net6.0" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Trumpf.Client" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/Trumpf/Trumpf.Client.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="VenusLogger" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/VenusLogger/VenusLogger.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="app\RemoteSupportConsole" type="DotNetProject" factoryName=".NET Project" temporary="true">
<option name="EXE_PATH" value="$PROJECT_DIR$/app/RemoteSupportConsole/bin/Debug/net6.0/RemoteSupportConsole" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/RemoteSupportConsole/bin/Debug/net6.0" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/app/RemoteSupportConsole/RemoteSupportConsole.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="net6.0" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Backend (1)" type="LaunchSettings" factoryName=".NET Launch Settings Profile" temporary="true">
<option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/Backend/Backend.csproj" />
<option name="LAUNCH_PROFILE_TFM" value="net6.0" />
<option name="LAUNCH_PROFILE_NAME" value="Backend" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" />
<option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" />
<option name="SEND_DEBUG_REQUEST" value="1" />
<option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Backend" type="LaunchSettings" factoryName=".NET Launch Settings Profile">
<option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/app/Backend/Backend.csproj" />
<option name="LAUNCH_PROFILE_TFM" value="net6.0" />
<option name="LAUNCH_PROFILE_NAME" value="Backend" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" />
<option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" />
<option name="SEND_DEBUG_REQUEST" value="1" />
<option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<list>
<item itemvalue=".NET Launch Settings Profile.Backend" />
<item itemvalue=".NET Launch Settings Profile.Backend (1)" />
<item itemvalue=".NET Project.FossilTui" />
<item itemvalue=".NET Project.Backend" />
<item itemvalue=".NET Project.EmuMeterDriver" />
<item itemvalue=".NET Project.GuiFeeder" />
<item itemvalue=".NET Project.SaliMax" />
<item itemvalue=".NET Project.API" />
<item itemvalue=".NET Project.BmsTunnel" />
<item itemvalue=".NET Project.Collector" />
<item itemvalue=".NET Project.Controller" />
<item itemvalue=".NET Project.CsController" />
<item itemvalue=".NET Project.EmuMeter" />
<item itemvalue=".NET Project.FirmwareCiDaemon" />
<item itemvalue=".NET Project.Logging" />
<item itemvalue=".NET Project.Meiringen" />
<item itemvalue=".NET Project.OpenVpnCertificatesServer" />
<item itemvalue=".NET Project.RemoteSupportConsole" />
<item itemvalue=".NET Project.S3" />
<item itemvalue=".NET Project.TestBatteryDbus" />
<item itemvalue=".NET Project.Trumpf.Client" />
<item itemvalue=".NET Project.VenusLogger" />
<item itemvalue=".NET Project.app\RemoteSupportConsole" />
</list>
<recent_temporary>
<list>
<item itemvalue=".NET Launch Settings Profile.Backend (1)" />
<item itemvalue=".NET Project.app\RemoteSupportConsole" />
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="6c592741-41e1-4ea7-be7b-2610d55779c1" name="Changes" comment="" />
<created>1664959681659</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1664959681659</updated>
<workItem from="1664959890177" duration="1035000" />
<workItem from="1664961135857" duration="2899000" />
<workItem from="1665399821332" duration="3389000" />
<workItem from="1665411287124" duration="10000" />
<workItem from="1665557336394" duration="4848000" />
<workItem from="1666005902488" duration="2565000" />
<workItem from="1666164087194" duration="8826000" />
<workItem from="1666607961300" duration="2486000" />
<workItem from="1666613899150" duration="3677000" />
<workItem from="1666624039305" duration="3458000" />
<workItem from="1666700519819" duration="11269000" />
<workItem from="1666712043066" duration="1022000" />
<workItem from="1667219468588" duration="60363000" />
<workItem from="1668428555581" duration="24641000" />
<workItem from="1669647185480" duration="172000" />
<workItem from="1674024157873" duration="44000" />
<workItem from="1674024215467" duration="288000" />
<workItem from="1674024520445" duration="17109000" />
<workItem from="1675353314946" duration="225000" />
<workItem from="1675353595164" duration="207000" />
<workItem from="1675749763186" duration="2564000" />
<workItem from="1675752345697" duration="101000" />
<workItem from="1675752455072" duration="53000" />
<workItem from="1675752613714" duration="146000" />
<workItem from="1675752778847" duration="21000" />
<workItem from="1675752808118" duration="98753000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="UnityUnitTestConfiguration" currentTestLauncher="NUnit" />
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/app/TestBatteryDbus/Program.cs</url>
<line>160</line>
<properties documentPath="$PROJECT_DIR$/app/TestBatteryDbus/Program.cs" initialLine="147" containingFunctionPresentation="method 'Main'">
<startOffsets>
<option value="6022" />
</startOffsets>
<endOffsets>
<option value="6031" />
</endOffsets>
</properties>
<option name="timeStamp" value="14" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="1" />
<url>file://$PROJECT_DIR$/lib/DBus/Transport/BufferedSocketReader.cs</url>
<line>35</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Transport/BufferedSocketReader.cs" initialLine="35" containingFunctionPresentation="method 'Read'" />
<option name="timeStamp" value="24" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="1" />
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/ac/4b4abb9e/Socket.cs</url>
<line>1543</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/ac/4b4abb9e/Socket.cs" initialLine="1543" containingFunctionPresentation="method 'Receive'">
<startOffsets>
<option value="98998" />
</startOffsets>
<endOffsets>
<option value="99035" />
</endOffsets>
</properties>
<option name="timeStamp" value="25" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="1" />
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/3d/798f3797/SocketPal.cs</url>
<line>1161</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/3d/798f3797/SocketPal.cs" initialLine="1161" containingFunctionPresentation="method 'Receive'">
<startOffsets>
<option value="41377" />
</startOffsets>
<endOffsets>
<option value="41517" />
</endOffsets>
</properties>
<option name="timeStamp" value="26" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="1" />
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/ac/4b4abb9e/Socket.cs</url>
<line>1556</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/db53ae57c8bf4a54b9178b6941e53ac288c00/ac/4b4abb9e/Socket.cs" initialLine="1556" containingFunctionPresentation="method 'Receive'">
<startOffsets>
<option value="99525" />
</startOffsets>
<endOffsets>
<option value="99549" />
</endOffsets>
</properties>
<option name="timeStamp" value="27" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="0" />
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/Message.cs</url>
<line>176</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/Message.cs" initialLine="176" containingFunctionPresentation="method 'ReadPayload'" />
<option name="timeStamp" value="42" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<condition expression="error" language="C#" />
<dependency id="0" />
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/Message.cs</url>
<line>158</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/Message.cs" initialLine="158" containingFunctionPresentation="method 'Read'" />
<option name="timeStamp" value="43" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency id="3" master-id="2" />
<url>file://$PROJECT_DIR$/lib/DBus/WireFormat/DBusWriter.cs</url>
<line>91</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/WireFormat/DBusWriter.cs" initialLine="91" containingFunctionPresentation="method 'WriteVariant'" />
<option name="timeStamp" value="45" />
</line-breakpoint>
<line-breakpoint suspend="NONE" type="DotNet Breakpoints">
<dependency id="2" />
<url>file://$PROJECT_DIR$/app/TestBatteryDbus/Program.cs</url>
<line>154</line>
<properties documentPath="$PROJECT_DIR$/app/TestBatteryDbus/Program.cs" initialLine="143" containingFunctionPresentation="method 'Main'">
<startOffsets>
<option value="5736" />
</startOffsets>
<endOffsets>
<option value="5780" />
</endOffsets>
</properties>
<option name="timeStamp" value="46" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="3" />
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/ArraySignature.cs</url>
<line>41</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/ArraySignature.cs" initialLine="41" containingFunctionPresentation="method 'Write'" />
<option name="timeStamp" value="48" />
</line-breakpoint>
<line-breakpoint suspend="NONE" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/CompositeSignature.cs</url>
<line>33</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/CompositeSignature.cs" initialLine="33" containingFunctionPresentation="method 'Write'" />
<option name="timeStamp" value="49" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<condition expression="sig == &quot;&quot;" language="C#" />
<dependency id="1" />
<url>file://$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs</url>
<line>93</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs" initialLine="93" containingFunctionPresentation="method 'ReadSignature'" />
<option name="timeStamp" value="52" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<condition expression="signature is null" language="C#" />
<url>file://$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs</url>
<line>101</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs" initialLine="101" containingFunctionPresentation="method 'ReadVariant'" />
<option name="timeStamp" value="54" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="1" />
<url>file://$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs</url>
<line>99</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/WireFormat/DBusReader.cs" initialLine="99" containingFunctionPresentation="method 'ReadVariant'" />
<option name="timeStamp" value="55" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<dependency master-id="2" />
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/ArraySignature.cs</url>
<line>38</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Signatures/Specialized/ArraySignature.cs" initialLine="38" containingFunctionPresentation="method 'Write'" />
<option name="timeStamp" value="60" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/Replies.cs</url>
<line>29</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/Replies.cs" initialLine="29" containingFunctionPresentation="method 'CreateErrorReply'" />
<option name="timeStamp" value="68" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/lib/DBus/Transport/DBusSocket.cs</url>
<line>72</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Transport/DBusSocket.cs" initialLine="72" containingFunctionPresentation="method 'SendMessage'" />
<option name="timeStamp" value="70" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<condition expression="type.Name == &quot;Message&quot;" language="C#" />
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Convert/TypeToSignature.cs</url>
<line>20</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/DataTypes/Convert/TypeToSignature.cs" initialLine="20" containingFunctionPresentation="method 'GetSignature'" />
<option name="timeStamp" value="77" />
</line-breakpoint>
<line-breakpoint type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/lib/DBus/Protocol/Replies.cs</url>
<line>19</line>
<properties documentPath="$PROJECT_DIR$/lib/DBus/Protocol/Replies.cs" initialLine="19" containingFunctionPresentation="method 'CreateErrorReply'" />
<option name="timeStamp" value="78" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/app/BmsTunnel/Program.cs</url>
<line>39</line>
<properties documentPath="$PROJECT_DIR$/app/BmsTunnel/Program.cs" initialLine="39" containingFunctionPresentation="method 'Main'">
<startOffsets>
<option value="1263" />
</startOffsets>
<endOffsets>
<option value="1317" />
</endOffsets>
</properties>
<option name="timeStamp" value="93" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/3e/715ef200/JsonDocument.cs</url>
<line>897</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/f6b53e22cc3b47ae9298001b4e574299166000/3e/715ef200/JsonDocument.cs" initialLine="897" containingFunctionPresentation="method 'ParseAsyncCore'">
<startOffsets>
<option value="35334" />
</startOffsets>
<endOffsets>
<option value="35457" />
</endOffsets>
</properties>
<option name="timeStamp" value="144" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file:///tmp/JetBrainsPerUserTemp-1000-1/Duponil.cs</url>
<line>16</line>
<properties documentPath="/tmp/JetBrainsPerUserTemp-1000-1/Duponil.cs" initialLine="16" containingFunctionPresentation="method 'GetUserById'">
<startOffsets>
<option value="303" />
</startOffsets>
<endOffsets>
<option value="348" />
</endOffsets>
</properties>
<option name="timeStamp" value="249" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/app/Backend/Database/User.cs</url>
<line>39</line>
<properties documentPath="$PROJECT_DIR$/app/Backend/Database/User.cs" initialLine="39" containingFunctionPresentation="method 'CreateUser'">
<startOffsets>
<option value="949" />
</startOffsets>
<endOffsets>
<option value="992" />
</endOffsets>
</properties>
<option name="timeStamp" value="256" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/app/Backend/Database/User.cs</url>
<line>48</line>
<properties documentPath="$PROJECT_DIR$/app/Backend/Database/User.cs" initialLine="48" containingFunctionPresentation="method 'UpdateUser'">
<startOffsets>
<option value="1212" />
</startOffsets>
<endOffsets>
<option value="1232" />
</endOffsets>
</properties>
<option name="timeStamp" value="258" />
</line-breakpoint>
<breakpoint type="DotNet Exception Breakpoints">
<properties exception="System.Net.Sockets.SocketException" isInternal="false" displayValue="SocketException" namespaceName="System.Net.Sockets">
<option name="internal" value="false" />
</properties>
<option name="timeStamp" value="69" />
</breakpoint>
</breakpoints>
</breakpoint-manager>
<watches-manager>
<configuration name="DotNetProject">
<watch expression="dbus.GetAllValues(name)" language="C#" />
</configuration>
</watches-manager>
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>

15
csharp/InnovEnergy.props Normal file
View File

@ -0,0 +1,15 @@
<Project>
<PropertyGroup>
<Company>InnovEnergy</Company>
<Nullable>enable</Nullable>
<LangVersion>default</LangVersion>
<IsTrimmable>true</IsTrimmable>
<RootNamespace>InnovEnergy</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<TargetFramework>net6.0</TargetFramework>
<InvariantGlobalization>true</InvariantGlobalization>
<SuppressTrimAnalysisWarnings>false</SuppressTrimAnalysisWarnings>
</PropertyGroup>
</Project>

288
csharp/InnovEnergy.sln Normal file
View File

@ -0,0 +1,288 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Collector", "app/Collector/Collector.csproj", "{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API", "app/API/API.csproj", "{5ED621C2-D249-411D-8332-8A1774B706BA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenVpnCertificatesServer", "app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj", "{CF4834CB-91B7-4172-AC13-ECDA8613CD17}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteSupportConsole", "app/RemoteSupportConsole/RemoteSupportConsole.csproj", "{B1268C03-66EB-4486-8BFC-B439225D9D54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SysTools", "lib/SysTools/SysTools.csproj", "{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logging", "app/Logging/Logging.csproj", "{F162D50B-4B99-496D-8354-1FB68E992B2D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebServer", "lib/WebServer/WebServer.csproj", "{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Time", "lib/Time/Time.csproj", "{442A8366-C177-48FE-84A7-BDF6470A09FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "S3.Tests", "lib/S3.Tests/S3.Tests.csproj", "{B9C85AE0-E820-4656-9C00-B130B3B1BC73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirmwareCiDaemon", "app/VenusFirmwareCiDaemon/FirmwareCiDaemon.csproj", "{E058CD50-5B6E-4F86-8A43-A3BC8C705464}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WireFormat", "lib/Wireformat/WireFormat.csproj", "{A6F1763E-8CA4-427E-B349-2E19ED2C64D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VenusLogger", "app/VenusLogger/VenusLogger.csproj", "{F60D08CA-76B2-43B8-8551-FFFC2997C4DE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Meiringen", "app/Meiringen/Meiringen.csproj", "{4C816420-FD19-47BF-87FE-599210CA8384}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EmuMeterDriver", "app\EmuMeterDriver\EmuMeterDriver.csproj", "{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BmsTunnel", "app/BmsTunnel/BmsTunnel.csproj", "{40B45363-BE34-420B-8F87-775EE6EE3513}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{145597B4-3E30-45E6-9F72-4DD43194539A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "S3", "lib\S3\S3.csproj", "{C3639841-13F4-4F24-99C6-7D965593BF89}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deprecated", "deprecated", "{D846B46B-46FF-4EF7-9B9D-DDBEF9533C56}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deprecated", "deprecated", "{46DE03C4-52D1-47AA-8E60-8BB15361D723}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsController", "app\CsController\CsController.csproj", "{72DBBE42-A09F-43C0-9613-331039857056}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestBatteryDbus", "app\TestBatteryDbus\TestBatteryDbus.csproj", "{CB226D69-DD28-4AAF-8BBE-2488E37A0B8D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaliMax", "app\SaliMax\SaliMax.csproj", "{25073794-D859-4824-9984-194C7E928496}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GuiFeeder", "app\GuiFeeder\GuiFeeder.csproj", "{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StatusApi", "lib\StatusApi\StatusApi.csproj", "{9D17E78C-8A70-43DB-A619-DC12D20D023D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Devices", "Devices", "{4931A385-24DC-4E78-BFF4-356F8D6D5183}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Protocols", "Protocols", "{794FD07C-93E9-4803-982E-1CA261504AB5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Victron", "Victron", "{BD8CBC5C-0B9E-48A3-BC4E-725E3FAB2348}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Trumpf", "Trumpf", "{DDDBEFD0-5DEA-4C7C-A9F2-FDB4636CF092}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TruConvert", "lib\Devices\Trumpf\TruConvert\TruConvert.csproj", "{EF46CF7B-823E-4CB7-966F-EDDC144C7954}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TruConvertAc", "lib\Devices\Trumpf\TruConvertAc\TruConvertAc.csproj", "{1F4B445E-459E-44CD-813E-6D725EBB81E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TruConvertDc", "lib\Devices\Trumpf\TruConvertDc\TruConvertDc.csproj", "{F6F29829-C31A-4994-A698-E441BEA631C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DBus", "lib\Protocols\DBus\DBus.csproj", "{8C3C620A-087D-4DD6-B493-A47FC643F8DC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Modbus", "lib\Protocols\Modbus\Modbus.csproj", "{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VeDBus", "lib\Victron\VeDBus\VeDBus.csproj", "{50B26E29-1B99-4D07-BCA5-359CD550BBAA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VictronVRM", "lib\Victron\VictronVRM\VictronVRM.csproj", "{FE05DF69-B5C7-4C2E-8FB9-7776441A7622}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ampt", "lib\Devices\AMPT\Ampt.csproj", "{77AF3A64-2878-4150-BCD0-F16530783165}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Battery48TL", "lib\Devices\Battery48TL\Battery48TL.csproj", "{1C3F443A-B339-4B08-80E6-8A84817FFEC9}"
ProjectSection(ProjectDependencies) = postProject
{89A3E29C-4E57-47FE-A800-12AC68418264} = {89A3E29C-4E57-47FE-A800-12AC68418264}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EmuMeter", "lib\Devices\EmuMeter\EmuMeter.csproj", "{152A4168-F612-493C-BBEA-8EB26E6E2D34}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils", "lib\Utils\Utils.csproj", "{89A3E29C-4E57-47FE-A800-12AC68418264}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Adam6060", "lib\Devices\Adam6060\Adam6060.csproj", "{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Channels", "lib\Channels\Channels.csproj", "{AF7E8DCA-8D48-498E-AB3D-208061B244DC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Backend", "app\Backend\Backend.csproj", "{A56F58C2-B265-435B-A985-53B4D6F49B1A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FossilTui", "app\FossilTui\FossilTui.csproj", "{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1}.Release|Any CPU.Build.0 = Release|Any CPU
{5ED621C2-D249-411D-8332-8A1774B706BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ED621C2-D249-411D-8332-8A1774B706BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ED621C2-D249-411D-8332-8A1774B706BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ED621C2-D249-411D-8332-8A1774B706BA}.Release|Any CPU.Build.0 = Release|Any CPU
{CF4834CB-91B7-4172-AC13-ECDA8613CD17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF4834CB-91B7-4172-AC13-ECDA8613CD17}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF4834CB-91B7-4172-AC13-ECDA8613CD17}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF4834CB-91B7-4172-AC13-ECDA8613CD17}.Release|Any CPU.Build.0 = Release|Any CPU
{B1268C03-66EB-4486-8BFC-B439225D9D54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B1268C03-66EB-4486-8BFC-B439225D9D54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B1268C03-66EB-4486-8BFC-B439225D9D54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B1268C03-66EB-4486-8BFC-B439225D9D54}.Release|Any CPU.Build.0 = Release|Any CPU
{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3}.Release|Any CPU.Build.0 = Release|Any CPU
{F162D50B-4B99-496D-8354-1FB68E992B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F162D50B-4B99-496D-8354-1FB68E992B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F162D50B-4B99-496D-8354-1FB68E992B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F162D50B-4B99-496D-8354-1FB68E992B2D}.Release|Any CPU.Build.0 = Release|Any CPU
{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A}.Release|Any CPU.Build.0 = Release|Any CPU
{442A8366-C177-48FE-84A7-BDF6470A09FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{442A8366-C177-48FE-84A7-BDF6470A09FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{442A8366-C177-48FE-84A7-BDF6470A09FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{442A8366-C177-48FE-84A7-BDF6470A09FF}.Release|Any CPU.Build.0 = Release|Any CPU
{B9C85AE0-E820-4656-9C00-B130B3B1BC73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9C85AE0-E820-4656-9C00-B130B3B1BC73}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9C85AE0-E820-4656-9C00-B130B3B1BC73}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9C85AE0-E820-4656-9C00-B130B3B1BC73}.Release|Any CPU.Build.0 = Release|Any CPU
{E058CD50-5B6E-4F86-8A43-A3BC8C705464}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E058CD50-5B6E-4F86-8A43-A3BC8C705464}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E058CD50-5B6E-4F86-8A43-A3BC8C705464}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E058CD50-5B6E-4F86-8A43-A3BC8C705464}.Release|Any CPU.Build.0 = Release|Any CPU
{A6F1763E-8CA4-427E-B349-2E19ED2C64D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6F1763E-8CA4-427E-B349-2E19ED2C64D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A6F1763E-8CA4-427E-B349-2E19ED2C64D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6F1763E-8CA4-427E-B349-2E19ED2C64D3}.Release|Any CPU.Build.0 = Release|Any CPU
{F60D08CA-76B2-43B8-8551-FFFC2997C4DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F60D08CA-76B2-43B8-8551-FFFC2997C4DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F60D08CA-76B2-43B8-8551-FFFC2997C4DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F60D08CA-76B2-43B8-8551-FFFC2997C4DE}.Release|Any CPU.Build.0 = Release|Any CPU
{4C816420-FD19-47BF-87FE-599210CA8384}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C816420-FD19-47BF-87FE-599210CA8384}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C816420-FD19-47BF-87FE-599210CA8384}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C816420-FD19-47BF-87FE-599210CA8384}.Release|Any CPU.Build.0 = Release|Any CPU
{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7}.Release|Any CPU.Build.0 = Release|Any CPU
{40B45363-BE34-420B-8F87-775EE6EE3513}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{40B45363-BE34-420B-8F87-775EE6EE3513}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40B45363-BE34-420B-8F87-775EE6EE3513}.Release|Any CPU.ActiveCfg = Release|Any CPU
{40B45363-BE34-420B-8F87-775EE6EE3513}.Release|Any CPU.Build.0 = Release|Any CPU
{C3639841-13F4-4F24-99C6-7D965593BF89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3639841-13F4-4F24-99C6-7D965593BF89}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3639841-13F4-4F24-99C6-7D965593BF89}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3639841-13F4-4F24-99C6-7D965593BF89}.Release|Any CPU.Build.0 = Release|Any CPU
{72DBBE42-A09F-43C0-9613-331039857056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72DBBE42-A09F-43C0-9613-331039857056}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72DBBE42-A09F-43C0-9613-331039857056}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72DBBE42-A09F-43C0-9613-331039857056}.Release|Any CPU.Build.0 = Release|Any CPU
{25073794-D859-4824-9984-194C7E928496}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{25073794-D859-4824-9984-194C7E928496}.Debug|Any CPU.Build.0 = Debug|Any CPU
{25073794-D859-4824-9984-194C7E928496}.Release|Any CPU.ActiveCfg = Release|Any CPU
{25073794-D859-4824-9984-194C7E928496}.Release|Any CPU.Build.0 = Release|Any CPU
{CB226D69-DD28-4AAF-8BBE-2488E37A0B8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB226D69-DD28-4AAF-8BBE-2488E37A0B8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2}.Release|Any CPU.Build.0 = Release|Any CPU
{9D17E78C-8A70-43DB-A619-DC12D20D023D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D17E78C-8A70-43DB-A619-DC12D20D023D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D17E78C-8A70-43DB-A619-DC12D20D023D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D17E78C-8A70-43DB-A619-DC12D20D023D}.Release|Any CPU.Build.0 = Release|Any CPU
{EF46CF7B-823E-4CB7-966F-EDDC144C7954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF46CF7B-823E-4CB7-966F-EDDC144C7954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF46CF7B-823E-4CB7-966F-EDDC144C7954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF46CF7B-823E-4CB7-966F-EDDC144C7954}.Release|Any CPU.Build.0 = Release|Any CPU
{1F4B445E-459E-44CD-813E-6D725EBB81E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F4B445E-459E-44CD-813E-6D725EBB81E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F4B445E-459E-44CD-813E-6D725EBB81E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F4B445E-459E-44CD-813E-6D725EBB81E8}.Release|Any CPU.Build.0 = Release|Any CPU
{F6F29829-C31A-4994-A698-E441BEA631C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6F29829-C31A-4994-A698-E441BEA631C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6F29829-C31A-4994-A698-E441BEA631C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6F29829-C31A-4994-A698-E441BEA631C6}.Release|Any CPU.Build.0 = Release|Any CPU
{8C3C620A-087D-4DD6-B493-A47FC643F8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C3C620A-087D-4DD6-B493-A47FC643F8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C3C620A-087D-4DD6-B493-A47FC643F8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C3C620A-087D-4DD6-B493-A47FC643F8DC}.Release|Any CPU.Build.0 = Release|Any CPU
{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267}.Release|Any CPU.Build.0 = Release|Any CPU
{50B26E29-1B99-4D07-BCA5-359CD550BBAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50B26E29-1B99-4D07-BCA5-359CD550BBAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50B26E29-1B99-4D07-BCA5-359CD550BBAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50B26E29-1B99-4D07-BCA5-359CD550BBAA}.Release|Any CPU.Build.0 = Release|Any CPU
{FE05DF69-B5C7-4C2E-8FB9-7776441A7622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FE05DF69-B5C7-4C2E-8FB9-7776441A7622}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FE05DF69-B5C7-4C2E-8FB9-7776441A7622}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FE05DF69-B5C7-4C2E-8FB9-7776441A7622}.Release|Any CPU.Build.0 = Release|Any CPU
{77AF3A64-2878-4150-BCD0-F16530783165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77AF3A64-2878-4150-BCD0-F16530783165}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77AF3A64-2878-4150-BCD0-F16530783165}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77AF3A64-2878-4150-BCD0-F16530783165}.Release|Any CPU.Build.0 = Release|Any CPU
{1C3F443A-B339-4B08-80E6-8A84817FFEC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C3F443A-B339-4B08-80E6-8A84817FFEC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C3F443A-B339-4B08-80E6-8A84817FFEC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C3F443A-B339-4B08-80E6-8A84817FFEC9}.Release|Any CPU.Build.0 = Release|Any CPU
{152A4168-F612-493C-BBEA-8EB26E6E2D34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{152A4168-F612-493C-BBEA-8EB26E6E2D34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{152A4168-F612-493C-BBEA-8EB26E6E2D34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{152A4168-F612-493C-BBEA-8EB26E6E2D34}.Release|Any CPU.Build.0 = Release|Any CPU
{89A3E29C-4E57-47FE-A800-12AC68418264}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89A3E29C-4E57-47FE-A800-12AC68418264}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89A3E29C-4E57-47FE-A800-12AC68418264}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89A3E29C-4E57-47FE-A800-12AC68418264}.Release|Any CPU.Build.0 = Release|Any CPU
{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461}.Release|Any CPU.Build.0 = Release|Any CPU
{AF7E8DCA-8D48-498E-AB3D-208061B244DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF7E8DCA-8D48-498E-AB3D-208061B244DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF7E8DCA-8D48-498E-AB3D-208061B244DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF7E8DCA-8D48-498E-AB3D-208061B244DC}.Release|Any CPU.Build.0 = Release|Any CPU
{A56F58C2-B265-435B-A985-53B4D6F49B1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A56F58C2-B265-435B-A985-53B4D6F49B1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A56F58C2-B265-435B-A985-53B4D6F49B1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A56F58C2-B265-435B-A985-53B4D6F49B1A}.Release|Any CPU.Build.0 = Release|Any CPU
{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{CF4834CB-91B7-4172-AC13-ECDA8613CD17} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{B1268C03-66EB-4486-8BFC-B439225D9D54} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{442A8366-C177-48FE-84A7-BDF6470A09FF} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{40B45363-BE34-420B-8F87-775EE6EE3513} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{B2627B9F-41DF-44F7-A0D1-CA71FF4A007A} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{F65F33B0-3522-4008-8D1E-47EF8E4C7AC7} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{E3A5F3A3-72A5-47CC-85C6-2D8E962A0EC1} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{F60D08CA-76B2-43B8-8551-FFFC2997C4DE} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{D846B46B-46FF-4EF7-9B9D-DDBEF9533C56} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{5ED621C2-D249-411D-8332-8A1774B706BA} = {D846B46B-46FF-4EF7-9B9D-DDBEF9533C56}
{4C816420-FD19-47BF-87FE-599210CA8384} = {D846B46B-46FF-4EF7-9B9D-DDBEF9533C56}
{E058CD50-5B6E-4F86-8A43-A3BC8C705464} = {D846B46B-46FF-4EF7-9B9D-DDBEF9533C56}
{46DE03C4-52D1-47AA-8E60-8BB15361D723} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{4A67D79F-F0C9-4BBC-9601-D5948E6C05D3} = {46DE03C4-52D1-47AA-8E60-8BB15361D723}
{72DBBE42-A09F-43C0-9613-331039857056} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{25073794-D859-4824-9984-194C7E928496} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{CB226D69-DD28-4AAF-8BBE-2488E37A0B8D} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{5B953EC4-51F3-4A0A-ADF5-BAA3D1570CB2} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{9D17E78C-8A70-43DB-A619-DC12D20D023D} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{C3639841-13F4-4F24-99C6-7D965593BF89} = {46DE03C4-52D1-47AA-8E60-8BB15361D723}
{B9C85AE0-E820-4656-9C00-B130B3B1BC73} = {46DE03C4-52D1-47AA-8E60-8BB15361D723}
{A6F1763E-8CA4-427E-B349-2E19ED2C64D3} = {46DE03C4-52D1-47AA-8E60-8BB15361D723}
{4931A385-24DC-4E78-BFF4-356F8D6D5183} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{794FD07C-93E9-4803-982E-1CA261504AB5} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{BD8CBC5C-0B9E-48A3-BC4E-725E3FAB2348} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{DDDBEFD0-5DEA-4C7C-A9F2-FDB4636CF092} = {4931A385-24DC-4E78-BFF4-356F8D6D5183}
{EF46CF7B-823E-4CB7-966F-EDDC144C7954} = {DDDBEFD0-5DEA-4C7C-A9F2-FDB4636CF092}
{1F4B445E-459E-44CD-813E-6D725EBB81E8} = {DDDBEFD0-5DEA-4C7C-A9F2-FDB4636CF092}
{F6F29829-C31A-4994-A698-E441BEA631C6} = {DDDBEFD0-5DEA-4C7C-A9F2-FDB4636CF092}
{8C3C620A-087D-4DD6-B493-A47FC643F8DC} = {794FD07C-93E9-4803-982E-1CA261504AB5}
{E4AE6A33-0DEB-48EB-9D57-C0C7C63FC267} = {794FD07C-93E9-4803-982E-1CA261504AB5}
{50B26E29-1B99-4D07-BCA5-359CD550BBAA} = {BD8CBC5C-0B9E-48A3-BC4E-725E3FAB2348}
{FE05DF69-B5C7-4C2E-8FB9-7776441A7622} = {BD8CBC5C-0B9E-48A3-BC4E-725E3FAB2348}
{77AF3A64-2878-4150-BCD0-F16530783165} = {4931A385-24DC-4E78-BFF4-356F8D6D5183}
{1C3F443A-B339-4B08-80E6-8A84817FFEC9} = {4931A385-24DC-4E78-BFF4-356F8D6D5183}
{152A4168-F612-493C-BBEA-8EB26E6E2D34} = {4931A385-24DC-4E78-BFF4-356F8D6D5183}
{89A3E29C-4E57-47FE-A800-12AC68418264} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{4AFDB799-E6A4-4DCA-8B6D-8C0F98398461} = {4931A385-24DC-4E78-BFF4-356F8D6D5183}
{AF7E8DCA-8D48-498E-AB3D-208061B244DC} = {AD5B98A8-AB7F-4DA2-B66D-5B4E63E7D854}
{A56F58C2-B265-435B-A985-53B4D6F49B1A} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{C40264BB-C834-4C48-9B3F-6BEF8F37C0ED} = {145597B4-3E30-45E6-9F72-4DD43194539A}
{F162D50B-4B99-496D-8354-1FB68E992B2D} = {D846B46B-46FF-4EF7-9B9D-DDBEF9533C56}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,36 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeEditing/SuppressNullableWarningFix/Enabled/@EntryValue">False</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=Interfaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=AMPT/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=backfill/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=beaglebone/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=CCGX/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ccgxsupport/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cpio/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=dcdc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Dicts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=fslckout/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=gdiff/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Genset/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Hmmss/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ifconfig/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Innov/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Insts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Leds/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=lsdbus/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=maxdepth/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mbap/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Meiringen/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mktemp/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=MPPT/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mppts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=nanopi/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Prosumer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Prosumers/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=proxyport/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=resultset/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Salimax/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Trumpf/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ttyusb/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=tupled/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=victronenergy/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -0,0 +1,11 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">VISIBLE_FILES</s:String>
<s:String x:Key="/Default/Environment/Hierarchy/Build/BuildTool/CustomBuildToolPath/@EntryValue">/usr/lib/dotnet/sdk/6.0.113/MSBuild.dll</s:String>
<s:String x:Key="/Default/Environment/Hierarchy/Build/BuildTool/DotNetCliExePath/@EntryValue">/usr/lib/dotnet/dotnet</s:String>
<s:Boolean x:Key="/Default/Environment/Hierarchy/Build/BuildTool/RecentDotNetCliExePaths/=_002Fusr_002Fbin_002Fdotnet/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Innov/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

32
csharp/app/API/API.csproj Normal file
View File

@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../InnovEnergy.app.props" />
<PropertyGroup>
<RootNamespace>InnovEnergy.API</RootNamespace>
<StartupObject>InnovEnergy.API.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../lib/Utils/Utils.csproj" />
<ProjectReference Include="../../lib/VictronVRM/VictronVRM.csproj" />
<ProjectReference Include="../../lib/WebServer/WebServer.csproj" />
<ProjectReference Include="../OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj" />
<ProjectReference Include="../../lib/Victron/VictronVRM/VictronVRM.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
</ItemGroup>
<!-- <Target Name="sass" BeforeTargets="PreBuildEvent">-->
<!-- <Exec Command="find $(MSBuildProjectDirectory) -name '*.scss' | sed 's//.scss$//' | xargs -I{} $(MSBuildProjectDirectory)/../../tools/sass &#45;&#45;embed-source-map {}.scss {}.css" />-->
<!-- </Target>-->
</Project>

66
csharp/app/API/Api.cs Normal file
View File

@ -0,0 +1,66 @@
using Flurl;
using InnovEnergy.API.DataModel;
namespace InnovEnergy.API;
public static class Api
{
public static Result CreateUser(QueryParamCollection queryParams, LoginState loginState)
{
var parentPath = queryParams.FirstOrDefault("path") as String;
var userName = queryParams.FirstOrDefault("userName") as String;
var userType = queryParams.FirstOrDefault("userType") as String;
if (userName != null && Program.Data.Root.FindDescendantUser(userName) != null)
return Result.Failure("there is already another user with that name");
return loginState.CreateUser(parentPath, userName, userType);
}
public static Result EditUser(QueryParamCollection queryParams, LoginState loginState)
{
var userPath = queryParams.FirstOrDefault("path") as String;
var userType = queryParams.FirstOrDefault("userType") as String;
return loginState.EditUser(userPath, userType);
}
public static Result RenameInstallation(QueryParamCollection queryParams, LoginState loginState)
{
var userPath = queryParams.FirstOrDefault("path") as String;
var userType = queryParams.FirstOrDefault("name") as String;
return loginState.RenameInstallation(userPath, userType);
}
public static Result DeleteFolder(QueryParamCollection queryParams, LoginState loginState)
{
var path = queryParams.FirstOrDefault("path") as String;
return loginState.DeleteFolder(path);
}
public static Result DeleteInstallation(QueryParamCollection queryParams, LoginState loginState)
{
var path = queryParams.FirstOrDefault("path") as String;
return loginState.DeleteInstallation(path);
}
public static Result DeleteUser(QueryParamCollection queryParams, LoginState loginState)
{
var path = queryParams.FirstOrDefault("path") as String;
return loginState.DeleteUser(path);
}
// public static Result Rename(QueryParamCollection queryParams, LoginState loginState)
// {
// var path = queryParams.FirstOrDefault("path") as String;
// var name = queryParams.FirstOrDefault("name") as String;
//
// return loginState.Delete(path);
// }
}

View File

@ -0,0 +1,27 @@
namespace InnovEnergy.API.DataModel;
public static class DataExtensions
{
public static Folder GetOrCreateFolder(this Data data, IEnumerable<String> path)
{
var parent = data.Root;
var stack = new Stack<String>(path.Reverse());
while (stack.Count > 0)
{
var childFolderName = stack.Pop();
var childFolder = parent.Folders.FirstOrDefault(f => f.Name == childFolderName);
if (childFolder is null)
{
childFolder = new Folder { Name = childFolderName };
parent.Add(childFolder);
}
parent = childFolder;
}
return parent;
}
}

View File

@ -0,0 +1,83 @@
using InnovEnergy.Lib.Utils;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace InnovEnergy.API.DataModel;
public partial record Data
{
private static readonly JsonSerializerSettings PersistenceJsonSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Include,
ContractResolver = new CamelCasePropertyNamesContractResolver(),
TypeNameHandling = TypeNameHandling.Auto
};
public static readonly JsonSerializerSettings WireFormatJsonSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver(),
TypeNameHandling = TypeNameHandling.None
};
public static Data Load() => GetLastVersion().Apply(Load);
public static String LoadJson() => GetLastVersion().Apply(LoadJson);
public static Data Load(Int32 sequenceNb)
{
var json = LoadJson(sequenceNb);
return JsonConvert.DeserializeObject<Data>(json, PersistenceJsonSettings)!;
}
public static String LoadJson(Int32 sequenceNb)
{
var jsonFile = System.IO.Path.Combine(Program.RootDir, sequenceNb + ".json");
Console.WriteLine($"loaded {jsonFile}");
return jsonFile.Apply(File.ReadAllText);
}
public void Save(String editAction, String user)
{
var version = Edit.Version + 1;
Edit = new Edit(editAction, user, version);
var path = System.IO.Path.Combine(Program.RootDir, version + ".json");
var json = SerializeJson();
File.WriteAllText(path, json);
}
public String SerializeJson()
{
return JsonConvert.SerializeObject(this, PersistenceJsonSettings);
}
private static String Base64Hash(DataElement element)
{
return element
.GetHashCode()
.Apply(BitConverter.GetBytes)
.Apply(Convert.ToBase64String)
.Apply(TrimEq);
}
private static String TrimEq(String h) => h.TrimEnd('=');
private static Int32 GetLastVersion()
{
return Directory
.EnumerateFiles(Program.RootDir, "*.json")
.Select(System.IO.Path.GetFileNameWithoutExtension)
.Where(f => f!.All(Char.IsDigit))
.OrderBy(f => f)
.Last()
.Apply(Int32.Parse!);
}
//public override String ToString() => JsonConvert.SerializeObject(this, WireFormatJsonSettings);
}

View File

@ -0,0 +1,29 @@
namespace InnovEnergy.API.DataModel;
public partial record Data
{
public Edit Edit { get; set; }
public Folder Root { get; set; } = null!;
public Data(Folder root, Edit edit)
{
Root = root;
Edit = edit;
}
public static Data Origin
{
get
{
var root = new Folder { Name = "All Installations" };
var admin = new User { Name = "admin", UserType = UserType.Admin };
root.Add(admin);
return new Data(root, new Edit("ORIGIN", admin.Name, 0));
}
}
// https://vrmapi.victronenergy.com/v2/users/55450/addsite
// {"installation_identifier":"ertertertertertert","description":"___TEST"}
}

View File

@ -0,0 +1,17 @@
namespace InnovEnergy.API.DataModel;
public static class DataElementExtensions
{
public static IEnumerable<DataElement> GetChildren(this DataElement de)
{
return de switch
{
Folder f => f.Folders.Concat<DataElement>(f.Installations).Concat(f.Users),
Installation i => i.Users,
_ => Enumerable.Empty<DataElement>()
};
}
public static Path RelativePath(this DataElement root) => new Path(null, root);
}

View File

@ -0,0 +1,24 @@
using Newtonsoft.Json;
namespace InnovEnergy.API.DataModel;
public abstract record DataElement : IComparable<DataElement>
{
[JsonProperty(Order = Int32.MinValue + 0)] public String Name { get; set; } = "<no name>";
[JsonProperty(Order = Int32.MinValue + 1)] public String Type { get; set; }
protected DataElement()
{
Type = GetType().Name;
}
public override String ToString() => $"{Type.ToLower()} '{Name}'";
public Int32 CompareTo(DataElement? other)
{
if (ReferenceEquals(this, other)) return 0;
if (ReferenceEquals(null, other)) return 1;
return String.Compare(Name, other.Name, StringComparison.InvariantCultureIgnoreCase);
}
}

View File

@ -0,0 +1,21 @@
using System.Globalization;
namespace InnovEnergy.API.DataModel;
public record Edit
{
private static readonly String DateTimePattern = CultureInfo.CurrentCulture.DateTimeFormat.UniversalSortableDateTimePattern;
public String Action { get; set; } = "";
public String User { get; set; } = "";
public String TimeStamp { get; set; } = "";
public Int32 Version { get; set; }
public Edit(String action, String user, Int32 version)
{
Action = action;
User = user;
Version = version;
TimeStamp = DateTime.Now.ToString(DateTimePattern);
}
}

View File

@ -0,0 +1,23 @@
using System.Diagnostics.CodeAnalysis;
using InnovEnergy.Lib.Utils;
namespace InnovEnergy.API.DataModel;
public partial record Folder
{
public virtual Boolean Equals(Folder? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return base.Equals(other) &&
Folders.SequenceEqual(other.Folders) &&
Installations.SequenceEqual(other.Installations);
}
[SuppressMessage("ReSharper", "NonReadonlyMemberInGetHashCode")]
public override Int32 GetHashCode() => HashCode.Combine(base.GetHashCode(),
Folders.SequenceHash(),
Installations.SequenceHash());
}

View File

@ -0,0 +1,105 @@
namespace InnovEnergy.API.DataModel;
public static class FolderExtensions
{
public static IEnumerable<Path> DescendantUserParents(this Folder folder)
{
foreach (var path in folder.GetDescendantFolders())
{
yield return path;
var f = path.Folder()!;
foreach (var installation in f.Installations)
yield return new Path(path, installation);
}
}
public static IEnumerable<Path> DescendantFolders(this Folder folder) => folder.GetDescendantFolders();
public static IEnumerable<Path> DescendantInstallations(this Folder folder)
{
return from path in folder.DescendantFolders()
let f = path.Element as Folder
from installation in f.Installations
select new Path(path, installation);
}
public static IEnumerable<Path> DescendantUsers(this Folder folder)
{
IEnumerable<User> GetUsers(Folder f) => f
.Installations
.SelectMany(i => i.Users)
.Concat(f.Users);
return from path in folder.DescendantFolders()
from user in GetUsers(path.Folder())
select new Path(path, user);
}
public static Path? FindDescendantUser(this Folder folder, String userName)
{
return folder
.DescendantUsers()
.FirstOrDefault(f => f.Element.Name == userName);
}
private static IEnumerable<Path> GetDescendantFolders(this Folder folder, Path? parent = null)
{
var path = new Path(parent, folder);
yield return path;
var descendantFolders = from f in folder.Folders
from descendant in f.GetDescendantFolders(path)
select descendant;
foreach (var descendant in descendantFolders)
yield return descendant;
}
public static Boolean Remove(this Folder folder, Installation installation)
{
return folder.Installations.Remove(installation);
}
public static void Add(this Folder folder, Installation installation)
{
folder.Installations.Add(installation);
}
public static Boolean Remove(this Folder folder, Folder child)
{
return folder.Folders.Remove(child);
}
public static void Add(this Folder folder, Folder child)
{
folder.Folders.Add(child);
}
public static VrmInstallation GetOrCreateVrmInstallation(this Folder folder, String uniqueId)
{
var vrmInstallation = folder
.Installations
.OfType<VrmInstallation>()
.FirstOrDefault(i => i.UniqueId == uniqueId);
if (vrmInstallation is not null)
return vrmInstallation; // installation exist, return it
vrmInstallation = new VrmInstallation();
folder.Installations.Add(vrmInstallation);
return vrmInstallation;
}
public static Boolean IsEmpty(this Folder folder) => !folder.Folders.Any() && !folder.Installations.Any();
}

View File

@ -0,0 +1,7 @@
namespace InnovEnergy.API.DataModel;
public partial record Folder : UserParent
{
public List<Folder> Folders { get; set; } = new List<Folder>();
public List<Installation> Installations { get; set; } = new List<Installation>();
}

View File

@ -0,0 +1,24 @@
using System.Diagnostics.CodeAnalysis;
using InnovEnergy.Lib.Utils;
namespace InnovEnergy.API.DataModel;
public abstract partial record Installation
{
public virtual Boolean Equals(Installation? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return base.Equals(other) &&
VpnIp == other.VpnIp &&
IeSerial == other.IeSerial &&
Tags.SequenceEqual(other.Tags);
}
[SuppressMessage("ReSharper", "NonReadonlyMemberInGetHashCode")]
public override Int32 GetHashCode()
{
return HashCode.Combine(base.GetHashCode(), VpnIp, IeSerial, Tags.SequenceHash());
}
}

View File

@ -0,0 +1,8 @@
namespace InnovEnergy.API.DataModel;
public abstract partial record Installation : UserParent
{
public String? VpnIp { get; set; }
public String? IeSerial { get; set; }
public IReadOnlyList<String> Tags { get; set; } = Array.Empty<String>();
}

View File

@ -0,0 +1,159 @@
using static InnovEnergy.API.Result;
namespace InnovEnergy.API.DataModel;
public static class PathExtensions
{
public static Boolean IsRoot(this Path path) => path.Parent is null;
public static Installation? Installation(this Path? path) => path?.Element as Installation;
public static Folder? Folder (this Path? path) => path?.Element as Folder;
public static User? User (this Path? path) => path?.Element as User;
public static UserParent? UserParent (this Path? path) => path?.Element as UserParent;
public static Boolean IsInstallation(this Path? path) => path?.Element is Installation;
public static Boolean IsFolder (this Path? path) => path?.Element is Folder;
public static Boolean IsUser (this Path? path) => path?.Element is User;
public static Boolean Exists(this Path? path) => path?.Element is not null;
public static IEnumerable<Path> Children(this Path? path) => from child in path?.Element.GetChildren()
select new Path(path, child);
public static Result MoveTo(this Path sourcePath, Path targetPath)
{
var add = targetPath.AddChild(sourcePath.Element);
if (add.Succeeded)
{
var delete = sourcePath.Delete();
if (delete.Succeeded)
return Success($"moved {sourcePath} to {targetPath}");
var revert = targetPath.Delete();
if (revert.Failed)
throw new Exception($"failed to move {sourcePath} to {targetPath}");
}
return Failure($"failed to move {sourcePath} to {targetPath}");
}
public static Result Delete(this Path path)
{
var child = path.Element;
var parent = path.Parent?.Element;
if (parent is Folder folder)
{
if (child is Folder f)
{
if (!f.IsEmpty())
return Failure($"Cannot delete folder '{f.Name}'.\nFolder is not empty.");
if (folder.Remove(f))
return Success($"Deleted folder {path}");
}
if (child is User u)
{
if (folder.Remove(u))
return Success($"Deleted user {path}");
}
if (child is Installation i)
{
if (!i.IsEmpty())
return Failure($"Cannot delete installation '{i.Name}'.\nInstallation has active users.");
if (folder.Remove(i))
return Success($"deleted installation {path}");
}
}
else if (parent is Installation installation && child is User user)
{
installation.Remove(user);
return Success($"deleted user {path}");
}
return Failure($"cannot delete {path}");
}
public static Result AddChild(this Path path, DataElement child)
{
var parent = path.Element;
if (parent.GetChildren().Any(c => c.Name == child.Name))
return Failure($"{path} already has an element with name {child.Name}");
if (parent is Folder folder)
{
if (child is Folder f)
{
folder.Add(f);
return Success($"added folder {child.Name} to folder {path}");
}
if (child is User u)
{
folder.Add(u);
return Success($"added user {child.Name} to folder {path}");
}
if (child is Installation i)
{
folder.Add(i);
return Success($"added installation {child.Name} to folder {path}");
}
}
else if (parent is Installation installation && child is User user)
{
installation.Add(user);
return Success($"added user {child.Name} to installation {path}");
}
return Failure($"cannot add {child} to {path}");
}
public static Path? GetDescendant(this Path path, params String[] stringPath)
{
return path.GetDescendant((IEnumerable<String>)stringPath);
}
public static Path? GetDescendant(this Path path, IEnumerable<String> stringPath)
{
foreach (var childName in stringPath)
{
var child = path
.Element
.GetChildren()
.SingleOrDefault(c => c.Name == childName);
if (child is null) return null;
path = new Path(path, child);
}
return path;
}
// public static Path? GetDescendant(this Path path, String stringPath)
// {
// while (!stringPath.IsNullOrWhiteSpace())
// {
// var childName = stringPath.UntilFirst('|');
//
// var child = path
// .Head
// .GetChildren()
// .SingleOrDefault(c => c.Name == childName);
//
// if (child is null) return null;
//
// stringPath = stringPath.AfterFirst('|');
// path = new Path(path, child);
// }
//
// return path;
// }
}

View File

@ -0,0 +1,18 @@
namespace InnovEnergy.API.DataModel;
public record Path(Path? Parent, DataElement Element)
{
public override String ToString()
{
var path = Element.Name;
var parent = Parent;
while (parent is not null)
{
path = parent.Element.Name + "|" + path;
parent = parent.Parent;
}
return $"|{path}";
}
}

View File

@ -0,0 +1,8 @@
namespace InnovEnergy.API.DataModel;
public static class UserExtensions
{
public static Boolean CanEditUsers(this User user) => user.UserType == UserType.Admin;
public static Boolean CanEditFolders(this User user) => user.UserType != UserType.Viewer;
public static Boolean CanEditInstallations(this User user) => user.UserType != UserType.Viewer;
}

View File

@ -0,0 +1,6 @@
namespace InnovEnergy.API.DataModel;
public record User : DataElement
{
public UserType UserType { get;set; }
}

View File

@ -0,0 +1,20 @@
using InnovEnergy.Lib.Utils;
namespace InnovEnergy.API.DataModel;
public abstract partial record UserParent
{
public virtual Boolean Equals(UserParent? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return base.Equals(other) && Users.SequenceEqual(other.Users);
}
public override Int32 GetHashCode()
{
// ReSharper disable once NonReadonlyMemberInGetHashCode
return HashCode.Combine(base.GetHashCode(), Users.SequenceHash());
}
}

View File

@ -0,0 +1,19 @@
namespace InnovEnergy.API.DataModel;
public static class UserParentExtensions
{
public static Boolean Remove(this UserParent parent, User user)
{
return parent.Users.Remove(user);
}
public static void Add(this UserParent parent, User user)
{
parent.Users.Add(user);
}
public static Boolean IsEmpty(this UserParent parent)
{
return !parent.Users.Any();
}
}

View File

@ -0,0 +1,6 @@
namespace InnovEnergy.API.DataModel;
public abstract partial record UserParent : DataElement
{
public List<User> Users { get; set; } = new List<User>();
}

View File

@ -0,0 +1,13 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace InnovEnergy.API.DataModel;
[JsonConverter(typeof(StringEnumConverter))]
public enum UserType
{
Unknown ,
Viewer ,
Editor ,
Admin
}

View File

@ -0,0 +1,12 @@
namespace InnovEnergy.API.DataModel;
public record VrmInstallation : Installation
{
public String? UniqueId { get; set; }
public UInt64 VrmId { get; set; }
public String? MachineSerial { get; set; }
public String? SystemType { get; set; }
public String? FirmwareVersion { get; set; }
public Boolean? Online { get; set; }
public String? MachineName { get; set; }
}

View File

@ -0,0 +1,18 @@
namespace InnovEnergy.API;
public static class Extensions
{
public const String Installation = ".inst";
public const String Folder = ".folder";
public const String Viewer = ".viewer";
public const String Admin = ".admin";
public const String Editor = ".editor";
public static Boolean IsInstallation(this String path) => path.EndsWith(Installation);
public static Boolean IsFolder (this String path) => path.EndsWith(Folder);
public static Boolean IsViewer (this String path) => path.EndsWith(Viewer);
public static Boolean IsEditor (this String path) => path.EndsWith(Editor);
public static Boolean IsAdmin (this String path) => path.EndsWith(Admin);
public static Boolean IsUser (this String path) => path.IsViewer() || path.IsEditor() || path.IsAdmin();
}

View File

@ -0,0 +1,7 @@
namespace InnovEnergy.API;
public enum InstallationType
{
InnovEnergy,
Victron,
}

View File

@ -0,0 +1,259 @@
using InnovEnergy.API.DataModel;
using static InnovEnergy.API.Result;
using Path = InnovEnergy.API.DataModel.Path;
namespace InnovEnergy.API;
public static class LoginStateExtensions
{
// TODO: sync VRM
public static Boolean CanEdit(this LoginState uc, Path path) => uc.CanEdit(path.Element);
public static Boolean CanEdit(this LoginState uc, DataElement de)
{
var user = uc.LoginUser;
return de is Folder && user.CanEditFolders() ||
de is User && user.CanEditUsers() ||
de is Installation && user.CanEditInstallations();
}
public static Result Move(this LoginState ctx, String sourcePath, String targetPath)
{
var source = ctx.ParsePath(sourcePath);
if (source is null)
return Failure($"cannot find {sourcePath}");
if (!ctx.CanEdit(source))
return Failure($"operation not allowed for {ctx.LoginUser}");
var target = ctx.ParsePath(targetPath);
if (target is null)
return Failure($"cannot find folder {targetPath}");
return source.MoveTo(target);
}
public static Result DeleteInstallation(this LoginState ctx, String? pathToDelete)
{
var path = ctx.ParsePath(pathToDelete);
if (path?.Installation() is null)
return Failure($"cannot find {pathToDelete}");
if (!ctx.CanEdit(path))
return Failure($"operation not allowed for {ctx.LoginUser}");
return path.Delete();
}
public static Result RenameInstallation(this LoginState ctx, String? installationPath, String? newName)
{
var path = ctx.ParsePath(installationPath);
var installation = path?.Installation();
if (path is null || installation is null)
return Failure($"cannot find {installationPath}");
if (newName is null)
return Failure("no name supplied");
if (!ctx.CanEdit(path))
return Failure($"operation not allowed for {ctx.LoginUser}");
installation.Name = newName;
return path.Delete();
}
public static Result DeleteFolder(this LoginState ctx, String? pathToDelete)
{
var path = ctx.ParsePath(pathToDelete);
if (path?.Folder() is null)
return Failure($"cannot find {pathToDelete}");
if (!ctx.CanEdit(path))
return Failure($"operation not allowed for {ctx.LoginUser}");
return path.Delete();
}
public static Result DeleteUser(this LoginState ctx, String? pathToDelete)
{
var path = ctx.ParsePath(pathToDelete);
if (path?.User() is null)
return Failure($"cannot find {pathToDelete}");
if (!ctx.CanEdit(path))
return Failure($"operation not allowed for {ctx.LoginUser}");
return path.Delete();
}
public static Result Rename(this LoginState ctx, String pathToRename, String newName)
{
var path = ctx.ParsePath(pathToRename);
if (path is null)
return Failure($"cannot find {pathToRename}");
if (!ctx.CanEdit(path) || path.IsUser())
return Failure("operation not permitted");
if (String.IsNullOrWhiteSpace(newName))
return Failure($"{newName} is not a valid name");
path.Element.Name = newName;
return Success($"renamed {pathToRename} to {newName}");
}
// TODO: prevent folder cycles!
// public Result AddNewFolder(String parentFolderPath, String folderName)
// {
// if (!User.CanEditFolders())
// return Failure($"operation not allowed for {User}");
//
// var parent = ParsePath(parentFolderPath);
//
// if (parent is null)
// return Failure($"cannot find folder {parentFolderPath}");
//
// return parent.AddChild(new Folder { Name = folderName });
// }
// TODO: VRM
// public Result AddNewInstallation(Int32 parentFolderId, String installationName)
// {
// if (!User.CanEditInstallations())
// throw new ApiException($"operation not allowed for {User}");
//
// var parentPath = HomeFolder.FindDescendantFolder(parentFolderId);
// var parentFolder = parentPath?.Folder();
//
// if (parentFolder is null)
// return new Failure($"cannot find folder {parentFolderId}");
//
// var newInstallation = new Installation { Name = installationName };
// parentFolder.Add(newInstallation);
//
// return new Success($"added new {newInstallation} to {parentPath}");
// }
public static Result CreateUser(this LoginState loginState, String? parentPath, String? userName, String? userType)
{
const String allowedSpecialChars = "_-.@";
if (!loginState.LoginUser.CanEditUsers())
return Failure($"operation not allowed for {loginState.LoginUser}");
if (userName is null || userName.Length < 3)
return Failure("username must consist of at least 3 characters");
if (!userName.All(c => Char.IsLetter(c) || Char.IsDigit(c) || allowedSpecialChars.Contains(c)))
{
return Failure("Illegal character in username.\n" +
"The username can contain letters, digits and the following the following characters:\n" +
allowedSpecialChars);
}
var path = loginState.ParsePath(parentPath);
if (path is null)
return Failure($"cannot find parent {parentPath}");
var type = ParseUserType(userType);
if (type == UserType.Unknown)
return Failure($"unknown user type {type}");
var newUser = new User
{
Name = userName,
UserType = type
};
return path.AddChild(newUser);
}
public static Result EditUser(this LoginState loginState, String? userPath, String? userType)
{
if (!loginState.LoginUser.CanEditUsers())
return Failure($"operation not permitted for {loginState.LoginUser}");
var user = loginState.ParsePath(userPath).User();
if (user == loginState.LoginUser)
return Failure($"operation not permitted for {loginState.LoginUser}");
if (user is null)
return Failure($"cannot find user {userPath}");
var oldType = user.UserType;
var newType = ParseUserType(userType);
if (newType == UserType.Unknown)
return Failure($"unknown user type {newType}");
user.UserType = newType;
return Success($"Changed user type of user {userPath} from {oldType} to {newType}");
}
private static UserType ParseUserType(String? userType)
{
return userType switch
{
"Viewer" => UserType.Viewer,
"Editor" => UserType.Editor,
"Admin" => UserType.Admin,
_ => UserType.Unknown
};
}
// public Result ChangeUserType(Int32 userId, UserType userType)
// {
// if (!User.CanEditUsers() || userId == User.Id)
// return Failure($"operation not allowed for {User}");
//
// var userToEdit = HomeFolder.FindDescendantUser(userId)?.User();
//
// if (userToEdit is null)
// return Failure($"cannot find user {userId}");
//
// var oldUserType = userToEdit.UserType;
// userToEdit.UserType = userType;
//
// return Success($"changed type of user {userToEdit} from {oldUserType} to {userType}");
// }
private static Path? ParsePath(this LoginState uc, String? path)
{
if (path == null)
return null;
var splitPath = path
.Split("|", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
.Skip(1);
return uc
.HomeFolder
.RelativePath()
.GetDescendant(splitPath);
}
}

View File

@ -0,0 +1,30 @@
using InnovEnergy.API.DataModel;
namespace InnovEnergy.API;
public class LoginState
{
public static readonly Random Rng = new Random();
public User LoginUser { get; }
public Folder HomeFolder { get; }
public String Token { get; }
public String? Error { get; set; }
public Int32 DataVersion { get; set; }
public LoginState(User loginUser, Folder homeFolder, Int32 dataVersion)
{
LoginUser = loginUser;
HomeFolder = homeFolder;
DataVersion = dataVersion;
Token = GenerateToken();
}
private static String GenerateToken()
{
var buffer = new Byte[16];
Rng.NextBytes(buffer);
return Convert.ToBase64String(buffer);
}
}

View File

@ -0,0 +1,25 @@
using System.Runtime.CompilerServices;
using static System.Runtime.CompilerServices.MethodImplOptions;
namespace InnovEnergy.API;
public static class PathExtensions
{
[MethodImpl(AggressiveInlining)]
public static String GetFileNameWithoutExtension(this String path) => Path.GetFileNameWithoutExtension(path);
[MethodImpl(AggressiveInlining)]
public static String GetFileName(this String path) => Path.GetFileName(path);
[MethodImpl(AggressiveInlining)]
public static String GetExtension(this String path) => Path.GetExtension(path);
[MethodImpl(AggressiveInlining)]
public static IEnumerable<String> GetDirectories(this String path) => Directory.EnumerateDirectories(path);
[MethodImpl(AggressiveInlining)]
public static IEnumerable<String> GetFiles(this String path) => Directory.EnumerateFiles(path);
}

202
csharp/app/API/Program.cs Normal file
View File

@ -0,0 +1,202 @@
using Flurl;
using InnovEnergy.API.DataModel;
using InnovEnergy.Lib.WebServer;
using InnovEnergy.Lib.Utils;
using Newtonsoft.Json;
using static System.Text.Encoding;
using static InnovEnergy.Lib.WebServer.Default;
namespace InnovEnergy.API;
public static class Program
{
public static String RootDir { get; private set; } = "/home/eef/sync/work/Code/innovenergy/server/WebMonitoring/src";
public static Data Data { get; set; }
public static Dictionary<String, LoginState> LoggedInUsers { get; } = new Dictionary<String, LoginState>();
public static void Main(String[] args)
{
RootDir = args.FirstOrDefault() ?? RootDir;
Console.WriteLine("start");
#pragma warning disable 4014
SyncWithVrm();
#pragma warning restore 4014
Data = Data.Load();
WebServer.ServeOnLocalHost(8080, Serve);
Console.WriteLine("stop");
}
private static async Task SyncWithVrm()
{
Console.WriteLine("Starting VRM sync");
var vrmLink = await VrmLink.Login();
while (true)
{
try
{
var data = Data.Load();
var json = data.SerializeJson();
await vrmLink.SyncWithVrm(data);
var changed = json != data.SerializeJson();
if (changed)
{
data.Save("Synced from VRM", "system");
var edit = data.Edit;
Console.WriteLine($"{edit.TimeStamp} [{edit.Version}] {edit.Action}");
Data = data;
}
await Task.Delay(TimeSpan.FromMinutes(10));
}
catch (Exception e)
{
Console.WriteLine("Failed to sync with VRM:\n" + e);
}
}
}
public static HttpResponse Serve(HttpRequest request)
{
var pathSegments = request.Url.PathSegments;
var p0 = pathSegments.ElementAtOrDefault(0);
Console.WriteLine(p0);
return p0 switch
{
"api" => ServeApi(request),
_ => ServeAssets(request)
};
}
private static HttpResponse Login(QueryParamCollection query)
{
var userName = query.FirstOrDefault("username") as String;
var password = query.FirstOrDefault("password") as String;
// TODO: password check
if (String.IsNullOrEmpty(userName))
return HttpForbidden;
var userPath = Data.Root.FindDescendantUser(userName);
var user = userPath?.User();
var homeFolder = userPath?.Parent.Folder();
if (user is null || homeFolder is null)
return HttpForbidden;
var loginState = new LoginState(user, homeFolder, Data.Edit.Version);
LoggedInUsers[loginState.Token] = loginState; // TODO: remove stale tokens
return CreateJsonResponse(loginState);
}
private static HttpResponse ServeApi(HttpRequest request)
{
var url = request.Url;
var query = url.QueryParams;
var action = query.FirstOrDefault("action") as String;
Console.WriteLine(action);
if (action == "login")
return Login(query);
if (query.FirstOrDefault("token") is not String token ||
!LoggedInUsers.TryGetValue(token, out var loginState))
return HttpForbidden;
var result = action switch
{
"createUser" => Api.CreateUser(query, loginState),
"editUser" => Api.EditUser(query, loginState),
"renameInstallation" => Api.RenameInstallation(query, loginState),
// "deleteUser" => Api.DeleteUser(query, loginState),
// "deleteFolder" => Api.DeleteFolder(query, loginState),
// "deleteInstallation" => Api.DeleteInstallation(query, loginState),
//"rename" => Api.Delete(query, loginState),
_ => Result.Failure("unsupported api call")
};
return result
.WriteToDisk(loginState.LoginUser)
.CreateResponse(loginState);
}
private static HttpResponse ServeAssets(HttpRequest request)
{
var localPath = RootDir + request.Url.Path;
if (request.Url.PathSegments.Count == 0)
localPath = RootDir + "/index.html";
Console.WriteLine(request.Url + " => " + localPath + " | " + InferContentType.FromExtension(localPath));
if (!File.Exists(localPath))
{
Console.WriteLine("404");
return HttpNotFound;
}
return new HttpResponse
{
Content = File.ReadAllBytes(localPath), // TODO: cache?
ContentType = InferContentType.FromExtension(localPath)
};
}
private static Result WriteToDisk(this Result result, User loggedInUser)
{
if (result.Succeeded)
{
Data.Save(result.Message, loggedInUser.Name);
}
return result;
}
private static HttpResponse CreateResponse(this Result result, LoginState loginState)
{
loginState.DataVersion = Data.Edit.Version; // important!
loginState.Error = result.Succeeded ? null : result.Message;
return CreateJsonResponse(loginState);
}
private static HttpResponse CreateJsonResponse<T>(T payload)
{
var json = JsonConvert.SerializeObject(payload, Data.WireFormatJsonSettings);
return new HttpResponse
{
Content = json.Apply(UTF8.GetBytes),
ContentType = ContentType.ApplicationJson,
Headers = new[] { new HttpHeader("Access-Control-Allow-Origin", "*") }
};
}
}

17
csharp/app/API/Result.cs Normal file
View File

@ -0,0 +1,17 @@
namespace InnovEnergy.API;
public class Result
{
public String Message { get; }
public Boolean Succeeded { get; }
public Boolean Failed => !Succeeded;
public static Result Success(String message = "") => new Result(message, succeeded: true);
public static Result Failure(String message = "") => new Result(message, succeeded: false);
private Result(String message, Boolean succeeded)
{
Message = message;
Succeeded = succeeded;
}
}

146
csharp/app/API/VrmLink.cs Normal file
View File

@ -0,0 +1,146 @@
using System.Text.RegularExpressions;
using InnovEnergy.API.DataModel;
using InnovEnergy.Lib.Utils;
using InnovEnergy.Lib.Victron.VictronVRM;
namespace InnovEnergy.API;
public class VrmLink : IDisposable
{
private static readonly Regex RxSerial = new Regex(@"\s*\(\s*20\d\d-\d\d\d\d\d(\.\d)?\s*\)\s*", RegexOptions.Compiled | RegexOptions.Singleline);
private Vrm Vrm { get; }
private VrmLink(Vrm vrm)
{
Vrm = vrm;
}
public static async Task<VrmLink> Login()
{
const String vrmUser = "victron@innov.energy";
const String vrmPwd = "NnoVctr201002";
var vrm = await Vrm.Login(vrmUser, vrmPwd);
return new VrmLink(vrm);
}
public async Task SyncWithVrm(Data data)
{
var installationDetails = Vrm.GetInstallationDetailsAsync();
// var vpnIpLookup = Vpn.CreateVpnIpLookup();
// var vpnOnlineLookup = Vpn.CreateVpnOnlineLookup();
var vpnIpLookup = (String s) => "127.0.0.1";
var vpnOnlineLookup = (String s) => true;
var vrmInstallationsById = data
.Root
.DescendantInstallations()
.Where(d => (d.Element as VrmInstallation)?.UniqueId != null)
.ToDictionary(d => d.Element.CastTo<VrmInstallation>().UniqueId!);
List<User> DeleteExistingInstallation(InstallationDetails details)
{
vrmInstallationsById.TryGetValue(details.Identifier, out var existing);
if (existing is null)
return new List<User>();
// if it already exists, delete it, but keep its users
var installation = existing.Installation()!;
var users = installation.Users;
installation.Users = new List<User>();
existing.Delete();
return users;
}
// SYNC
await foreach (var i in installationDetails)
{
if (!i.IsActive) continue;
var (name, path, ieSerial) = ParseVrmName(i);
var users = DeleteExistingInstallation(i);
var installation = new VrmInstallation
{
Name = name,
Users = users,
IeSerial = ieSerial,
VrmId = i.IdSite,
UniqueId = i.Identifier,
FirmwareVersion = i.FirmwareVersion,
SystemType = i.SystemType,
MachineSerial = i.MachineSerial,
MachineName = i.MachineName, // type: VenusGx, CCGX, etc.
Tags = i.Tags,
VpnIp = vpnIpLookup(i.MachineSerial),
Online = vpnOnlineLookup(i.MachineSerial),
};
if (i.MachineName is not null)
await Vrm.AddTags(i.IdSite, i.MachineName);
var folder = data.GetOrCreateFolder(path);
folder.Add(installation);
}
// SORT
foreach (var folder in data.Root.DescendantFolders().Select(d => d.Element).OfType<Folder>())
{
folder.Folders.Sort();
folder.Installations.Sort();
folder.Users.Sort();
var grouped = folder.Installations.OfType<VrmInstallation>().GroupBy(i=>i.Name);
foreach (var g in grouped.Where(g => g.Count() > 1))
foreach (var (vrmInstallation, n) in g.OrderBy(i => i.UniqueId).Select((i, n) => (i, n)))
{
vrmInstallation.Name += $" ({n + 1})";
}
foreach (var installation in folder.Installations)
installation.Users.Sort();
}
}
private static (String name, IReadOnlyList<String> path, String? serial) ParseVrmName(InstallationDetails installationDetails)
{
var fullName = installationDetails.Name;
var match = RxSerial.Match(fullName); // extract IeSerial from _entire_ fullname
var serial = match.Success
? match.Value
: null;
fullName = RxSerial.Replace(fullName, "");
var split = fullName.Split('|', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
var path = split.Length > 1
? split.Skip(1).Reverse().ToArray(split.Length - 1)
: new[] { "ie" };
var name = split.Length >= 1
? split[0]
: installationDetails.Identifier;
return (name, path, serial);
}
public void Dispose() => Vrm.Dispose();
}

Binary file not shown.

View File

@ -0,0 +1,468 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"API/1.0.0": {
"dependencies": {
"Newtonsoft.Json": "13.0.1",
"OpenVpnCertificatesServer": "1.0.0",
"Utils": "1.0.0",
"VictronVRM": "1.0.0",
"WebServer": "1.0.0",
"sqlite-net-pcl": "1.8.116"
},
"runtime": {
"API.dll": {}
}
},
"BouncyCastle/1.8.9": {
"runtime": {
"lib/BouncyCastle.Crypto.dll": {
"assemblyVersion": "1.8.9.0",
"fileVersion": "1.8.20343.1"
}
}
},
"CliWrap/3.3.1": {
"runtime": {
"lib/netcoreapp3.0/CliWrap.dll": {
"assemblyVersion": "3.3.1.0",
"fileVersion": "3.3.1.0"
}
}
},
"Flurl/3.0.4": {
"runtime": {
"lib/netstandard2.0/Flurl.dll": {
"assemblyVersion": "3.0.4.0",
"fileVersion": "3.0.4.0"
}
}
},
"Flurl.Http/3.2.2": {
"dependencies": {
"Flurl": "3.0.4",
"Newtonsoft.Json": "13.0.1",
"System.Text.Encoding.CodePages": "4.5.1"
},
"runtime": {
"lib/netstandard2.0/Flurl.Http.dll": {
"assemblyVersion": "3.2.2.0",
"fileVersion": "3.2.2.0"
}
}
},
"Microsoft.NETCore.Platforms/2.1.2": {},
"Newtonsoft.Json/13.0.1": {
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {
"assemblyVersion": "13.0.0.0",
"fileVersion": "13.0.1.25517"
}
}
},
"SharpZipLib/1.3.3": {
"runtime": {
"lib/netstandard2.1/ICSharpCode.SharpZipLib.dll": {
"assemblyVersion": "1.3.3.11",
"fileVersion": "1.3.3.11"
}
}
},
"sqlite-net-pcl/1.8.116": {
"dependencies": {
"SQLitePCLRaw.bundle_green": "2.0.4"
},
"runtime": {
"lib/netstandard2.0/SQLite-net.dll": {
"assemblyVersion": "1.8.116.0",
"fileVersion": "1.8.116.0"
}
}
},
"SQLitePCLRaw.bundle_green/2.0.4": {
"dependencies": {
"SQLitePCLRaw.core": "2.0.4",
"SQLitePCLRaw.lib.e_sqlite3": "2.0.4",
"SQLitePCLRaw.provider.dynamic_cdecl": "2.0.4"
},
"runtime": {
"lib/netcoreapp3.1/SQLitePCLRaw.batteries_v2.dll": {
"assemblyVersion": "2.0.4.976",
"fileVersion": "2.0.4.976"
},
"lib/netcoreapp3.1/SQLitePCLRaw.nativelibrary.dll": {
"assemblyVersion": "2.0.4.976",
"fileVersion": "2.0.4.976"
}
}
},
"SQLitePCLRaw.core/2.0.4": {
"dependencies": {
"System.Memory": "4.5.3"
},
"runtime": {
"lib/netstandard2.0/SQLitePCLRaw.core.dll": {
"assemblyVersion": "2.0.4.976",
"fileVersion": "2.0.4.976"
}
}
},
"SQLitePCLRaw.lib.e_sqlite3/2.0.4": {
"runtimeTargets": {
"runtimes/alpine-x64/native/libe_sqlite3.so": {
"rid": "alpine-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-arm/native/libe_sqlite3.so": {
"rid": "linux-arm",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-arm64/native/libe_sqlite3.so": {
"rid": "linux-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-armel/native/libe_sqlite3.so": {
"rid": "linux-armel",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-mips64/native/libe_sqlite3.so": {
"rid": "linux-mips64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-musl-x64/native/libe_sqlite3.so": {
"rid": "linux-musl-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/libe_sqlite3.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x86/native/libe_sqlite3.so": {
"rid": "linux-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/libe_sqlite3.dylib": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm/native/e_sqlite3.dll": {
"rid": "win-arm",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/e_sqlite3.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/e_sqlite3.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/e_sqlite3.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
}
}
},
"SQLitePCLRaw.provider.dynamic_cdecl/2.0.4": {
"dependencies": {
"SQLitePCLRaw.core": "2.0.4"
},
"runtime": {
"lib/netstandard2.0/SQLitePCLRaw.provider.dynamic_cdecl.dll": {
"assemblyVersion": "2.0.4.976",
"fileVersion": "2.0.4.976"
}
}
},
"System.Memory/4.5.3": {},
"System.Reactive/5.0.0": {
"runtime": {
"lib/net5.0/System.Reactive.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.1"
}
}
},
"System.Reactive.Linq/5.0.0": {
"dependencies": {
"System.Reactive": "5.0.0",
"System.Threading.Tasks.Extensions": "4.5.4"
},
"runtime": {
"lib/netstandard2.0/System.Reactive.Linq.dll": {
"assemblyVersion": "3.0.6000.0",
"fileVersion": "0.0.0.0"
}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encoding.CodePages/4.5.1": {
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.2",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Encodings.Web/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Json/6.0.2": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "6.0.0"
},
"runtime": {
"lib/net6.0/System.Text.Json.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"System.Threading.Tasks.Extensions/4.5.4": {},
"OpenVpnCertificatesServer/1.0.0": {
"dependencies": {
"BouncyCastle": "1.8.9",
"Flurl.Http": "3.2.2",
"SharpZipLib": "1.3.3",
"Utils": "1.0.0",
"VictronVRM": "1.0.0"
},
"runtime": {
"OpenVpnCertificatesServer.dll": {}
}
},
"SysTools/1.0.0": {
"dependencies": {
"System.Reactive.Linq": "5.0.0"
},
"runtime": {
"SysTools.dll": {}
}
},
"Utils/1.0.0": {
"dependencies": {
"CliWrap": "3.3.1",
"System.Reactive.Linq": "5.0.0"
},
"runtime": {
"Utils.dll": {}
}
},
"VictronVRM/1.0.0": {
"dependencies": {
"Flurl.Http": "3.2.2",
"Newtonsoft.Json": "13.0.1",
"SysTools": "1.0.0",
"System.Reactive.Linq": "5.0.0",
"System.Text.Json": "6.0.2",
"Utils": "1.0.0"
},
"runtime": {
"VictronVRM.dll": {}
}
},
"WebServer/1.0.0": {
"dependencies": {
"Flurl": "3.0.4",
"Flurl.Http": "3.2.2",
"System.Reactive.Linq": "5.0.0",
"Utils": "1.0.0"
},
"runtime": {
"WebServer.dll": {}
}
}
}
},
"libraries": {
"API/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle/1.8.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-axnBgvdD5n+FnEG6efk/tfKuMFru7R/EoISH9zjh319yb3HD24TEHSAbNN/lTRT2ulOGRxDgOsCjkuk08iwWPg==",
"path": "bouncycastle/1.8.9",
"hashPath": "bouncycastle.1.8.9.nupkg.sha512"
},
"CliWrap/3.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yFJBBbDCSJ9ZgllaJub07K04EYf54V4jZ2Cm6Sg3KrGfiy27J4ed/os7UqqN7SXoIVL5ru442nPXe0sbsx2wVg==",
"path": "cliwrap/3.3.1",
"hashPath": "cliwrap.3.3.1.nupkg.sha512"
},
"Flurl/3.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2bgCzOs3TGwRkfcijCiH+7o9Pz4pyVnt4yyLX2vD3wlMSekpmGhqe2zA4988qSMmPa6AqeekX13CY4FvsjsDJQ==",
"path": "flurl/3.0.4",
"hashPath": "flurl.3.0.4.nupkg.sha512"
},
"Flurl.Http/3.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zVen69D8Qr1uZN4ua0ZnOMuDZol66w04AnwOSCyE5Kqy5GGbAtk0m7bKXaU+FJJ9R7ByVIKAG/kpGbGMGdt2/Q==",
"path": "flurl.http/3.2.2",
"hashPath": "flurl.http.3.2.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/2.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==",
"path": "microsoft.netcore.platforms/2.1.2",
"hashPath": "microsoft.netcore.platforms.2.1.2.nupkg.sha512"
},
"Newtonsoft.Json/13.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
"path": "newtonsoft.json/13.0.1",
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
},
"SharpZipLib/1.3.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-N8+hwhsKZm25tDJfWpBSW7EGhH/R7EMuiX+KJ4C4u+fCWVc1lJ5zg1u3S1RPPVYgTqhx/C3hxrqUpi6RwK5+Tg==",
"path": "sharpziplib/1.3.3",
"hashPath": "sharpziplib.1.3.3.nupkg.sha512"
},
"sqlite-net-pcl/1.8.116": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W0NuwAOVVAR9LP4eZwNBIrim1p3EN7t8iNfSHXEhtzKAd4YyItekoQ8NyWYs4faVSrN2KZr/P5u4hycCjKKexg==",
"path": "sqlite-net-pcl/1.8.116",
"hashPath": "sqlite-net-pcl.1.8.116.nupkg.sha512"
},
"SQLitePCLRaw.bundle_green/2.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ubFgOHDmtTcq2LU7Ss10yHnFVMm2rFVr65Ggi+Mh514KjGx4pal98P2zSvZtWf3wbtJw6G1InBgeozBtnpEfKQ==",
"path": "sqlitepclraw.bundle_green/2.0.4",
"hashPath": "sqlitepclraw.bundle_green.2.0.4.nupkg.sha512"
},
"SQLitePCLRaw.core/2.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4XlDZpDAsboMD6qZQcz9AaKblKDUTVHF+8f3lvbP7QjoqSRr2Xc0Lm34IK2pjRIYnyFLhI3yOJ5YWfOiCid2yg==",
"path": "sqlitepclraw.core/2.0.4",
"hashPath": "sqlitepclraw.core.2.0.4.nupkg.sha512"
},
"SQLitePCLRaw.lib.e_sqlite3/2.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oetvmtDZOE4Nnrtxd8Trapl9geBiu0rDCUXff46qGYjnUwzaU1mZ3OHnfR402tl32rx8gBWg3n5OBRaPJRbsGw==",
"path": "sqlitepclraw.lib.e_sqlite3/2.0.4",
"hashPath": "sqlitepclraw.lib.e_sqlite3.2.0.4.nupkg.sha512"
},
"SQLitePCLRaw.provider.dynamic_cdecl/2.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AY6+vv/4ji1mCkLrS6HP/88rHT9YFKRyg3LUj8RyIk6imJMUFdQDiP8rK8gq0a/0FbqspLjK1t7rtKcr7FXRYA==",
"path": "sqlitepclraw.provider.dynamic_cdecl/2.0.4",
"hashPath": "sqlitepclraw.provider.dynamic_cdecl.2.0.4.nupkg.sha512"
},
"System.Memory/4.5.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
"path": "system.memory/4.5.3",
"hashPath": "system.memory.4.5.3.nupkg.sha512"
},
"System.Reactive/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
"path": "system.reactive/5.0.0",
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
},
"System.Reactive.Linq/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IB4/qlV4T1WhZvM11RVoFUSZXPow9VWVeQ1uDkSKgz6bAO+gCf65H/vjrYlwyXmojSSxvfHndF9qdH43P/IuAw==",
"path": "system.reactive.linq/5.0.0",
"hashPath": "system.reactive.linq.5.0.0.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encoding.CodePages/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
"path": "system.text.encoding.codepages/4.5.1",
"hashPath": "system.text.encoding.codepages.4.5.1.nupkg.sha512"
},
"System.Text.Encodings.Web/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
"path": "system.text.encodings.web/6.0.0",
"hashPath": "system.text.encodings.web.6.0.0.nupkg.sha512"
},
"System.Text.Json/6.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0nE2gwXLn3PTBOPwORLqwuYvWB+Beomt9ZBX+6LmogMNKUvfD1SoDb/ycB1vBntT94rGaB/SvxEyeLu14H6aEg==",
"path": "system.text.json/6.0.2",
"hashPath": "system.text.json.6.0.2.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"path": "system.threading.tasks.extensions/4.5.4",
"hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
},
"OpenVpnCertificatesServer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"SysTools/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Utils/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"VictronVRM/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"WebServer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"configProperties": {
"System.Globalization.Invariant": true,
"System.Globalization.PredefinedCulturesOnly": true
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,272 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"OpenVpnCertificatesServer/1.0.0": {
"dependencies": {
"BouncyCastle": "1.8.9",
"Flurl.Http": "3.2.2",
"SharpZipLib": "1.3.3",
"Utils": "1.0.0",
"VictronVRM": "1.0.0"
},
"runtime": {
"OpenVpnCertificatesServer.dll": {}
}
},
"BouncyCastle/1.8.9": {
"runtime": {
"lib/BouncyCastle.Crypto.dll": {
"assemblyVersion": "1.8.9.0",
"fileVersion": "1.8.20343.1"
}
}
},
"CliWrap/3.3.1": {
"runtime": {
"lib/netcoreapp3.0/CliWrap.dll": {
"assemblyVersion": "3.3.1.0",
"fileVersion": "3.3.1.0"
}
}
},
"Flurl/3.0.4": {
"runtime": {
"lib/netstandard2.0/Flurl.dll": {
"assemblyVersion": "3.0.4.0",
"fileVersion": "3.0.4.0"
}
}
},
"Flurl.Http/3.2.2": {
"dependencies": {
"Flurl": "3.0.4",
"Newtonsoft.Json": "12.0.3",
"System.Text.Encoding.CodePages": "4.5.1"
},
"runtime": {
"lib/netstandard2.0/Flurl.Http.dll": {
"assemblyVersion": "3.2.2.0",
"fileVersion": "3.2.2.0"
}
}
},
"Microsoft.NETCore.Platforms/2.1.2": {},
"Newtonsoft.Json/12.0.3": {
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {
"assemblyVersion": "12.0.0.0",
"fileVersion": "12.0.3.23909"
}
}
},
"SharpZipLib/1.3.3": {
"runtime": {
"lib/netstandard2.1/ICSharpCode.SharpZipLib.dll": {
"assemblyVersion": "1.3.3.11",
"fileVersion": "1.3.3.11"
}
}
},
"System.Reactive/5.0.0": {
"runtime": {
"lib/net5.0/System.Reactive.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.1"
}
}
},
"System.Reactive.Linq/5.0.0": {
"dependencies": {
"System.Reactive": "5.0.0",
"System.Threading.Tasks.Extensions": "4.5.4"
},
"runtime": {
"lib/netstandard2.0/System.Reactive.Linq.dll": {
"assemblyVersion": "3.0.6000.0",
"fileVersion": "0.0.0.0"
}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encoding.CodePages/4.5.1": {
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.2",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Encodings.Web/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Json/6.0.2": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "6.0.0"
},
"runtime": {
"lib/net6.0/System.Text.Json.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"System.Threading.Tasks.Extensions/4.5.4": {},
"SysTools/1.0.0": {
"dependencies": {
"System.Reactive.Linq": "5.0.0"
},
"runtime": {
"SysTools.dll": {}
}
},
"Utils/1.0.0": {
"dependencies": {
"CliWrap": "3.3.1",
"System.Reactive.Linq": "5.0.0"
},
"runtime": {
"Utils.dll": {}
}
},
"VictronVRM/1.0.0": {
"dependencies": {
"Flurl.Http": "3.2.2",
"Newtonsoft.Json": "12.0.3",
"SysTools": "1.0.0",
"System.Reactive.Linq": "5.0.0",
"System.Text.Json": "6.0.2",
"Utils": "1.0.0"
},
"runtime": {
"VictronVRM.dll": {}
}
}
}
},
"libraries": {
"OpenVpnCertificatesServer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle/1.8.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-axnBgvdD5n+FnEG6efk/tfKuMFru7R/EoISH9zjh319yb3HD24TEHSAbNN/lTRT2ulOGRxDgOsCjkuk08iwWPg==",
"path": "bouncycastle/1.8.9",
"hashPath": "bouncycastle.1.8.9.nupkg.sha512"
},
"CliWrap/3.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yFJBBbDCSJ9ZgllaJub07K04EYf54V4jZ2Cm6Sg3KrGfiy27J4ed/os7UqqN7SXoIVL5ru442nPXe0sbsx2wVg==",
"path": "cliwrap/3.3.1",
"hashPath": "cliwrap.3.3.1.nupkg.sha512"
},
"Flurl/3.0.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2bgCzOs3TGwRkfcijCiH+7o9Pz4pyVnt4yyLX2vD3wlMSekpmGhqe2zA4988qSMmPa6AqeekX13CY4FvsjsDJQ==",
"path": "flurl/3.0.4",
"hashPath": "flurl.3.0.4.nupkg.sha512"
},
"Flurl.Http/3.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zVen69D8Qr1uZN4ua0ZnOMuDZol66w04AnwOSCyE5Kqy5GGbAtk0m7bKXaU+FJJ9R7ByVIKAG/kpGbGMGdt2/Q==",
"path": "flurl.http/3.2.2",
"hashPath": "flurl.http.3.2.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/2.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==",
"path": "microsoft.netcore.platforms/2.1.2",
"hashPath": "microsoft.netcore.platforms.2.1.2.nupkg.sha512"
},
"Newtonsoft.Json/12.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==",
"path": "newtonsoft.json/12.0.3",
"hashPath": "newtonsoft.json.12.0.3.nupkg.sha512"
},
"SharpZipLib/1.3.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-N8+hwhsKZm25tDJfWpBSW7EGhH/R7EMuiX+KJ4C4u+fCWVc1lJ5zg1u3S1RPPVYgTqhx/C3hxrqUpi6RwK5+Tg==",
"path": "sharpziplib/1.3.3",
"hashPath": "sharpziplib.1.3.3.nupkg.sha512"
},
"System.Reactive/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
"path": "system.reactive/5.0.0",
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
},
"System.Reactive.Linq/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IB4/qlV4T1WhZvM11RVoFUSZXPow9VWVeQ1uDkSKgz6bAO+gCf65H/vjrYlwyXmojSSxvfHndF9qdH43P/IuAw==",
"path": "system.reactive.linq/5.0.0",
"hashPath": "system.reactive.linq.5.0.0.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encoding.CodePages/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
"path": "system.text.encoding.codepages/4.5.1",
"hashPath": "system.text.encoding.codepages.4.5.1.nupkg.sha512"
},
"System.Text.Encodings.Web/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
"path": "system.text.encodings.web/6.0.0",
"hashPath": "system.text.encodings.web.6.0.0.nupkg.sha512"
},
"System.Text.Json/6.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0nE2gwXLn3PTBOPwORLqwuYvWB+Beomt9ZBX+6LmogMNKUvfD1SoDb/ycB1vBntT94rGaB/SvxEyeLu14H6aEg==",
"path": "system.text.json/6.0.2",
"hashPath": "system.text.json.6.0.2.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"path": "system.threading.tasks.extensions/4.5.4",
"hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
},
"SysTools/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Utils/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"VictronVRM/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"configProperties": {
"System.Globalization.Invariant": true,
"System.Globalization.PredefinedCulturesOnly": true
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,11 @@
#!/bin/bash
# stop on errors
set -e
printf "\n################################### publish ###################################\n\n"
dotnet publish API.csproj -c Release -r linux-x64
printf "\n################################### sync ###################################\n\n"
rsync -av bin/Release/netcoreapp5.0/linux-x64/publish/ ig@salidomo.innovenergy.ch:/home/ig/api

View File

@ -0,0 +1,482 @@
{
"format": 1,
"restore": {
"/home/kim/code/innovenergy/new/csharp/app/API/API.csproj": {}
},
"projects": {
"/home/kim/code/innovenergy/new/csharp/app/API/API.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/app/API/API.csproj",
"projectName": "API",
"projectPath": "/home/kim/code/innovenergy/new/csharp/app/API/API.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/app/API/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/VictronVRM/VictronVRM.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/VictronVRM/VictronVRM.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/WebServer/WebServer.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/WebServer/WebServer.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Newtonsoft.Json": {
"target": "Package",
"version": "[13.0.1, )"
},
"sqlite-net-pcl": {
"target": "Package",
"version": "[1.8.116, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj",
"projectName": "OpenVpnCertificatesServer",
"projectPath": "/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/OpenVpnCertificatesServer.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/app/OpenVpnCertificatesServer/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/DBus.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/DBus.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"BouncyCastle": {
"target": "Package",
"version": "[1.8.9, )"
},
"Flurl.Http": {
"target": "Package",
"version": "[3.2.2, )"
},
"SharpZipLib": {
"target": "Package",
"version": "[1.3.3, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/DBus.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/DBus.csproj",
"projectName": "InnovEnergy.Lib.Protocols.DBus",
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/DBus.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/lib/Protocols/DBus/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"System.Reactive": {
"target": "Package",
"version": "[5.0.0, )"
},
"System.Reflection.Emit": {
"target": "Package",
"version": "[4.7.0, )"
},
"System.Security.Principal.Windows": {
"target": "Package",
"version": "[4.7.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/lib/Time/Time.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/lib/Time/Time.csproj",
"projectName": "Time",
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Time/Time.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/lib/Time/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj",
"projectName": "Utils",
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/lib/Utils/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"CliWrap": {
"target": "Package",
"version": "[3.3.1, )"
},
"System.Reactive.Linq": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj",
"projectName": "VictronVRM",
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/VictronVRM.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/lib/Victron/VictronVRM/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"/home/kim/code/innovenergy/new/csharp/lib/Time/Time.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Time/Time.csproj"
},
"/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Flurl.Http": {
"target": "Package",
"version": "[3.2.0, )"
},
"System.Reactive.Linq": {
"target": "Package",
"version": "[5.0.0, )"
},
"System.Text.Json": {
"target": "Package",
"version": "[6.0.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
},
"/home/kim/code/innovenergy/new/csharp/lib/WebServer/WebServer.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/kim/code/innovenergy/new/csharp/lib/WebServer/WebServer.csproj",
"projectName": "WebServer",
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/WebServer/WebServer.csproj",
"packagesPath": "/home/kim/.nuget/packages/",
"outputPath": "/home/kim/code/innovenergy/new/csharp/lib/WebServer/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/kim/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {
"/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj": {
"projectPath": "/home/kim/code/innovenergy/new/csharp/lib/Utils/Utils.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Flurl": {
"target": "Package",
"version": "[3.0.1, )"
},
"Flurl.Http": {
"target": "Package",
"version": "[3.0.1, )"
},
"System.Reactive.Linq": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/6.0.113/RuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">False</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/kim/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/kim/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.4.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/kim/.nuget/packages/" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]

Some files were not shown because too many files have changed in this diff Show More