From c5d93df3519b2c4ebd4ee736d8bb60947b7b6056 Mon Sep 17 00:00:00 2001 From: ecyr20 Date: Wed, 24 Apr 2024 12:10:43 -0500 Subject: [PATCH 1/4] Initial Code Coverage tool --- .../DesignTimeBuild/.dtbcache.v2 | Bin 151190 -> 192048 bytes .vs/Chemistry Cafe API/v17/.futdcache.v2 | Bin 445 -> 445 bytes .vs/Chemistry Cafe API/v17/.suo | Bin 49664 -> 92160 bytes .../v17/DocumentLayout.json | 168 +- .../chemistry cafe api.metadata.v7.bin | Bin 271218 -> 279271 bytes .../chemistry cafe api.projects.v7.bin | Bin 1142853 -> 1275748 bytes Chemistry Cafe API.csproj | 7 + Chemistry Cafe API.sln | 2 +- Tests/FamilyControllerTests.cs | 23 + bin/Debug/net8.0/Chemistry Cafe API.deps.json | 5061 ++++++++++++++++- bin/Debug/net8.0/Chemistry Cafe API.dll | Bin 23040 -> 263168 bytes bin/Debug/net8.0/Chemistry Cafe API.exe | Bin 143360 -> 143360 bytes bin/Debug/net8.0/Chemistry Cafe API.pdb | Bin 25388 -> 76688 bytes ...afe_api.dll_DeleteReactantProductList.html | 169 + .../chemistry_cafe_api.dll_Family.html | 175 + ...emistry_cafe_api.dll_FamilyController.html | 239 + ...ry_cafe_api.dll_FamilyControllerTests.html | 197 + .../chemistry_cafe_api.dll_FamilyService.html | 293 + ...mistry_cafe_api.dll_FamilyTagMechList.html | 178 + ...e_api.dll_FamilyTagMechListController.html | 239 + ...cafe_api.dll_FamilyTagMechListService.html | 282 + ...cafe_api.dll_FamilyTagMechListVersion.html | 187 + ...ll_FamilyTagMechListVersionController.html | 239 + ...i.dll_FamilyTagMechListVersionService.html | 291 + ...stry_cafe_api.dll_OpenAtmosController.html | 213 + ...emistry_cafe_api.dll_OpenAtmosService.html | 487 ++ .../chemistry_cafe_api.dll_Program.html | 211 + .../chemistry_cafe_api.dll_Property.html | 229 + .../chemistry_cafe_api.dll_PropertyList.html | 175 + ...y_cafe_api.dll_PropertyListController.html | 248 + ...stry_cafe_api.dll_PropertyListService.html | 359 ++ .../chemistry_cafe_api.dll_PropertyType.html | 178 + ...y_cafe_api.dll_PropertyTypeController.html | 248 + ...stry_cafe_api.dll_PropertyTypeService.html | 306 + ...hemistry_cafe_api.dll_PropertyVersion.html | 202 + ...afe_api.dll_PropertyVersionController.html | 239 + ...y_cafe_api.dll_PropertyVersionService.html | 326 ++ ...stry_cafe_api.dll_ReactantProductList.html | 175 + ...api.dll_ReactantProductListController.html | 258 + ...fe_api.dll_ReactantProductListService.html | 331 ++ ...mistry_cafe_api.dll_ReactantsProducts.html | 178 + .../chemistry_cafe_api.dll_Reaction.html | 181 + ...istry_cafe_api.dll_ReactionController.html | 258 + ...hemistry_cafe_api.dll_ReactionService.html | 391 ++ .../chemistry_cafe_api.dll_Species.html | 172 + ...mistry_cafe_api.dll_SpeciesController.html | 248 + ...chemistry_cafe_api.dll_SpeciesService.html | 290 + .../chemistry_cafe_api.dll_TagMechanism.html | 172 + ...y_cafe_api.dll_TagMechanismController.html | 247 + ...cafe_api.dll_TagMechanismReactionList.html | 178 + ...ll_TagMechanismReactionListController.html | 239 + ...i.dll_TagMechanismReactionListService.html | 282 + ...i.dll_TagMechanismReactionListVersion.html | 187 + ...echanismReactionListVersionController.html | 239 + ...agMechanismReactionListVersionService.html | 291 + ...stry_cafe_api.dll_TagMechanismService.html | 290 + ..._cafe_api.dll_TagMechanismSpeciesList.html | 178 + ...dll_TagMechanismSpeciesListController.html | 239 + ...pi.dll_TagMechanismSpeciesListService.html | 282 + ...pi.dll_TagMechanismSpeciesListVersion.html | 187 + ...MechanismSpeciesListVersionController.html | 239 + ...TagMechanismSpeciesListVersionService.html | 291 + .../chemistry_cafe_api.dll_User.html | 172 + ...chemistry_cafe_api.dll_UserController.html | 239 + ...hemistry_cafe_api.dll_UserPreferences.html | 175 + ...afe_api.dll_UserPreferencesController.html | 239 + ...y_cafe_api.dll_UserPreferencesService.html | 280 + .../chemistry_cafe_api.dll_UserService.html | 277 + coveragereport/class.js | 218 + coveragereport/icon_cog.svg | 1 + coveragereport/icon_cog_dark.svg | 1 + coveragereport/icon_cube.svg | 2 + coveragereport/icon_cube_dark.svg | 1 + coveragereport/icon_down-dir_active.svg | 2 + coveragereport/icon_down-dir_active_dark.svg | 1 + coveragereport/icon_fork.svg | 2 + coveragereport/icon_fork_dark.svg | 1 + coveragereport/icon_info-circled.svg | 2 + coveragereport/icon_info-circled_dark.svg | 2 + coveragereport/icon_minus.svg | 2 + coveragereport/icon_minus_dark.svg | 1 + coveragereport/icon_plus.svg | 2 + coveragereport/icon_plus_dark.svg | 1 + coveragereport/icon_search-minus.svg | 2 + coveragereport/icon_search-minus_dark.svg | 1 + coveragereport/icon_search-plus.svg | 2 + coveragereport/icon_search-plus_dark.svg | 1 + coveragereport/icon_sponsor.svg | 2 + coveragereport/icon_star.svg | 2 + coveragereport/icon_star_dark.svg | 2 + coveragereport/icon_up-dir.svg | 2 + coveragereport/icon_up-dir_active.svg | 2 + coveragereport/icon_wrench.svg | 2 + coveragereport/icon_wrench_dark.svg | 1 + coveragereport/index.htm | 404 ++ coveragereport/index.html | 404 ++ coveragereport/main.js | 511 ++ ...sqlconnector.dll_ActivitySourceHelper.html | 176 + ...qlconnector.dll_ArraySegmentHolder_T_.html | 171 + .../mysqlconnector.dll_AuthGSSAPI.html | 168 + ...henticationMethodSwitchRequestPayload.html | 170 + ...tor.dll_AuthenticationMoreDataPayload.html | 169 + ...qlconnector.dll_AuthenticationPlugins.html | 170 + ...qlconnector.dll_AuthenticationUtility.html | 174 + ...nnector.dll_BinaryBooleanColumnReader.html | 173 + ...nector.dll_BinaryDateTimeColumnReader.html | 168 + ...onnector.dll_BinaryDoubleColumnReader.html | 169 + ...connector.dll_BinaryFloatColumnReader.html | 169 + ...tor.dll_BinarySignedInt16ColumnReader.html | 173 + ...tor.dll_BinarySignedInt32ColumnReader.html | 173 + ...tor.dll_BinarySignedInt64ColumnReader.html | 173 + ...ctor.dll_BinarySignedInt8ColumnReader.html | 173 + ...lconnector.dll_BinaryTimeColumnReader.html | 169 + ...r.dll_BinaryUnsignedInt16ColumnReader.html | 173 + ...r.dll_BinaryUnsignedInt32ColumnReader.html | 173 + ...r.dll_BinaryUnsignedInt64ColumnReader.html | 173 + ...or.dll_BinaryUnsignedInt8ColumnReader.html | 173 + ...lconnector.dll_BinaryYearColumnReader.html | 173 + .../mysqlconnector.dll_BitColumnReader.html | 173 + ...mysqlconnector.dll_BufferedByteReader.html | 170 + .../mysqlconnector.dll_ByteArrayReader.html | 199 + .../mysqlconnector.dll_ByteBufferWriter.html | 220 + ...nector.dll_ByteBufferWriterExtensions.html | 174 + .../mysqlconnector.dll_BytesColumnReader.html | 169 + .../mysqlconnector.dll_CachedParameter.html | 171 + .../mysqlconnector.dll_CachedProcedure.html | 180 + ....dll_CachingSha2ServerResponsePayload.html | 170 + .../mysqlconnector.dll_ChangeUserPayload.html | 166 + ...mysqlconnector.dll_ColumnCountPayload.html | 170 + ...connector.dll_ColumnDefinitionPayload.html | 190 + .../mysqlconnector.dll_ColumnReader.html | 168 + ...mysqlconnector.dll_ColumnTypeMetadata.html | 179 + .../mysqlconnector.dll_CommandExecutor.html | 166 + ...ysqlconnector.dll_CommandListPosition.html | 168 + ...onnector.dll_CompressedPayloadHandler.html | 196 + ...dll_ConcatenatedCommandPayloadCreator.html | 169 + .../mysqlconnector.dll_ConnectionPool.html | 225 + ...mysqlconnector.dll_ConnectionSettings.html | 232 + ...qlconnector.dll_ConsoleLoggerProvider.html | 178 + ...nector.dll_DataReaderValuesEnumerator.html | 175 + ...onnector.dll_DataRowsValuesEnumerator.html | 175 + ...ctor.dll_DbDataReaderValuesEnumerator.html | 173 + .../mysqlconnector.dll_DbTypeMapping.html | 170 + ...ysqlconnector.dll_DecimalColumnReader.html | 173 + .../mysqlconnector.dll_EmptyPayload.html | 167 + ...connector.dll_EnlistedTransactionBase.html | 184 + .../mysqlconnector.dll_EofPayload.html | 172 + .../mysqlconnector.dll_ErrorPayload.html | 173 + ...sqlconnector.dll_FailOverLoadBalancer.html | 171 + ...onnector.dll_GuidBinary16ColumnReader.html | 171 + ...lconnector.dll_GuidChar32ColumnReader.html | 169 + ...lconnector.dll_GuidChar36ColumnReader.html | 169 + ..._GuidLittleEndianBinary16ColumnReader.html | 171 + ....dll_GuidTimeSwapBinary16ColumnReader.html | 171 + ...nector.dll_HandshakeResponse41Payload.html | 170 + ...tor.dll_ICancellableCommandExtensions.html | 170 + ...connector.dll_IMySqlCommandExtensions.html | 166 + ...ysqlconnector.dll_InitDatabasePayload.html | 166 + ...connector.dll_InitialHandshakePayload.html | 173 + ...mysqlconnector.dll_LocalInfilePayload.html | 169 + coveragereport/mysqlconnector.dll_Log.html | 502 ++ .../mysqlconnector.dll_MetricsReporter.html | 186 + .../mysqlconnector.dll_MySqlAttribute.html | 178 + ...onnector.dll_MySqlAttributeCollection.html | 180 + .../mysqlconnector.dll_MySqlBatch.html | 246 + .../mysqlconnector.dll_MySqlBatchCommand.html | 208 + ...ector.dll_MySqlBatchCommandCollection.html | 193 + .../mysqlconnector.dll_MySqlBulkCopy.html | 194 + ...nector.dll_MySqlBulkCopyColumnMapping.html | 174 + ...ysqlconnector.dll_MySqlBulkCopyResult.html | 168 + .../mysqlconnector.dll_MySqlBulkLoader.html | 222 + .../mysqlconnector.dll_MySqlCommand.html | 303 + ...ysqlconnector.dll_MySqlCommandBuilder.html | 200 + .../mysqlconnector.dll_MySqlConnection.html | 338 ++ ...ctor.dll_MySqlConnectionStringBuilder.html | 295 + ...ector.dll_MySqlConnectionStringOption.html | 181 + ...SqlConnectionStringReferenceOption_T_.html | 176 + ...l_MySqlConnectionStringValueOption_T_.html | 176 + ...qlconnector.dll_MySqlConnectorFactory.html | 190 + ...onnector.dll_MySqlConnectorLogManager.html | 183 + ...ll_MySqlConnectorLoggingConfiguration.html | 176 + ...onnector.dll_MySqlConversionException.html | 168 + .../mysqlconnector.dll_MySqlDataAdapter.html | 211 + .../mysqlconnector.dll_MySqlDataReader.html | 353 ++ .../mysqlconnector.dll_MySqlDataSource.html | 193 + ...lconnector.dll_MySqlDataSourceBuilder.html | 179 + .../mysqlconnector.dll_MySqlDateTime.html | 249 + .../mysqlconnector.dll_MySqlDbColumn.html | 167 + .../mysqlconnector.dll_MySqlDecimal.html | 173 + ...nnector.dll_MySqlEndOfStreamException.html | 168 + .../mysqlconnector.dll_MySqlError.html | 170 + .../mysqlconnector.dll_MySqlException.html | 191 + .../mysqlconnector.dll_MySqlGeometry.html | 174 + .../mysqlconnector.dll_MySqlHelper.html | 168 + ...nnector.dll_MySqlInfoMessageEventArgs.html | 167 + .../mysqlconnector.dll_MySqlParameter.html | 234 + ...onnector.dll_MySqlParameterCollection.html | 229 + ...lconnector.dll_MySqlProtocolException.html | 170 + ...ector.dll_MySqlProvidePasswordContext.html | 170 + ...onnector.dll_MySqlRowUpdatedEventArgs.html | 167 + ...nnector.dll_MySqlRowUpdatingEventArgs.html | 167 + ...onnector.dll_MySqlRowsCopiedEventArgs.html | 170 + .../mysqlconnector.dll_MySqlTransaction.html | 210 + ...r.dll_NegotiateToMySqlConverterStream.html | 190 + .../mysqlconnector.dll_NoOpLogger.html | 171 + ...mysqlconnector.dll_NoOpLoggerProvider.html | 166 + .../mysqlconnector.dll_NormalizedSchema.html | 175 + .../mysqlconnector.dll_NullColumnReader.html | 169 + .../mysqlconnector.dll_OkPayload.html | 182 + coveragereport/mysqlconnector.dll_Packet.html | 167 + .../mysqlconnector.dll_ParsedStatement.html | 171 + .../mysqlconnector.dll_ParsedStatements.html | 169 + .../mysqlconnector.dll_PayloadData.html | 173 + .../mysqlconnector.dll_PingPayload.html | 167 + .../mysqlconnector.dll_PreparedStatement.html | 171 + ...mysqlconnector.dll_PreparedStatements.html | 169 + .../mysqlconnector.dll_ProtocolUtility.html | 170 + .../mysqlconnector.dll_QueryPayload.html | 166 + .../mysqlconnector.dll_QuitPayload.html | 167 + ...mysqlconnector.dll_RandomLoadBalancer.html | 171 + ...lconnector.dll_ResetConnectionPayload.html | 167 + ...onnector.dll_ResizableArraySegment_T_.html | 171 + .../mysqlconnector.dll_ResizableArray_T_.html | 170 + .../mysqlconnector.dll_ResultSet.html | 215 + ...lconnector.dll_RoundRobinLoadBalancer.html | 168 + coveragereport/mysqlconnector.dll_Row.html | 236 + .../mysqlconnector.dll_SchemaProvider.html | 250 + ...sqlconnector.dll_SerializationUtility.html | 168 + .../mysqlconnector.dll_ServerSession.html | 324 ++ .../mysqlconnector.dll_ServerVersion.html | 174 + .../mysqlconnector.dll_ServerVersions.html | 166 + ...ector.dll_SingleCommandPayloadCreator.html | 180 + .../mysqlconnector.dll_SocketByteHandler.html | 180 + .../mysqlconnector.dll_SocketExtensions.html | 168 + .../mysqlconnector.dll_SqlParser.html | 185 + ...ector.dll_StandardEnlistedTransaction.html | 174 + ...lconnector.dll_StandardPayloadHandler.html | 178 + ...r.dll_StatementPrepareResponsePayload.html | 171 + .../mysqlconnector.dll_StatementPreparer.html | 204 + .../mysqlconnector.dll_StreamByteHandler.html | 178 + ...mysqlconnector.dll_StringColumnReader.html | 169 + ...connector.dll_TextBooleanColumnReader.html | 173 + ...onnector.dll_TextDateTimeColumnReader.html | 170 + ...lconnector.dll_TextDoubleColumnReader.html | 169 + ...qlconnector.dll_TextFloatColumnReader.html | 169 + ...ector.dll_TextSignedInt16ColumnReader.html | 173 + ...ector.dll_TextSignedInt32ColumnReader.html | 173 + ...ector.dll_TextSignedInt64ColumnReader.html | 173 + ...nector.dll_TextSignedInt8ColumnReader.html | 173 + ...sqlconnector.dll_TextTimeColumnReader.html | 169 + ...tor.dll_TextUnsignedInt16ColumnReader.html | 173 + ...tor.dll_TextUnsignedInt32ColumnReader.html | 173 + ...tor.dll_TextUnsignedInt64ColumnReader.html | 173 + ...ctor.dll_TextUnsignedInt8ColumnReader.html | 173 + .../mysqlconnector.dll_TimerQueue.html | 184 + .../mysqlconnector.dll_TypeMapper.html | 197 + .../mysqlconnector.dll_Utility.html | 200 + ...ysqlconnector.dll_ValueTaskExtensions.html | 168 + ...qlconnector.dll_XaEnlistedTransaction.html | 176 + ...81E8FE504B5B6446748E035A__NameRegex_0.html | 172 + ...EA81E8FE504B5B6446748E035A__Utilities.html | 172 + ...04B5B6446748E035A__TlsVersionsRegex_1.html | 172 + coveragereport/report.css | 785 +++ ...hemistry Cafe API.csproj.nuget.dgspec.json | 38 +- obj/Chemistry Cafe API.csproj.nuget.g.props | 16 +- obj/Chemistry Cafe API.csproj.nuget.g.targets | 12 +- obj/Debug/net8.0/ApiEndpoints.json | 2010 ++++++- .../net8.0/Chemistry Cafe API.AssemblyInfo.cs | 2 +- ...hemistry Cafe API.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 4 +- .../net8.0/Chemistry Cafe API.assets.cache | Bin 6782 -> 87615 bytes ...ry Cafe API.csproj.AssemblyReference.cache | Bin 4385 -> 20985 bytes ...ry Cafe API.csproj.CoreCompileInputs.cache | 2 +- ...istry Cafe API.csproj.FileListAbsolute.txt | 467 +- obj/Debug/net8.0/Chemistry Cafe API.dll | Bin 23040 -> 263168 bytes .../Chemistry Cafe API.genruntimeconfig.cache | 2 +- obj/Debug/net8.0/Chemistry Cafe API.pdb | Bin 25388 -> 76688 bytes .../net8.0/Chemistry Cafe API.sourcelink.json | 2 +- obj/Debug/net8.0/apphost.exe | Bin 143360 -> 143360 bytes obj/Debug/net8.0/ref/Chemistry Cafe API.dll | Bin 11264 -> 77312 bytes .../net8.0/refint/Chemistry Cafe API.dll | Bin 11264 -> 77312 bytes obj/project.assets.json | 3997 ++++++++++++- obj/project.nuget.cache | 75 +- 283 files changed, 57731 insertions(+), 372 deletions(-) create mode 100644 Tests/FamilyControllerTests.cs create mode 100644 coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_Family.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersion.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_OpenAtmosController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_OpenAtmosService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_Program.html create mode 100644 coveragereport/chemistry_cafe_api.dll_Property.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyListController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyListService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyType.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyTypeController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyTypeService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyVersion.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyVersionController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyVersionService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactantProductList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactantProductListController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactantProductListService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactantsProducts.html create mode 100644 coveragereport/chemistry_cafe_api.dll_Reaction.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactionController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactionService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_Species.html create mode 100644 coveragereport/chemistry_cafe_api.dll_SpeciesController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_SpeciesService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanism.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersion.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesList.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersion.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_User.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserPreferences.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserPreferencesController.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserPreferencesService.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserService.html create mode 100644 coveragereport/class.js create mode 100644 coveragereport/icon_cog.svg create mode 100644 coveragereport/icon_cog_dark.svg create mode 100644 coveragereport/icon_cube.svg create mode 100644 coveragereport/icon_cube_dark.svg create mode 100644 coveragereport/icon_down-dir_active.svg create mode 100644 coveragereport/icon_down-dir_active_dark.svg create mode 100644 coveragereport/icon_fork.svg create mode 100644 coveragereport/icon_fork_dark.svg create mode 100644 coveragereport/icon_info-circled.svg create mode 100644 coveragereport/icon_info-circled_dark.svg create mode 100644 coveragereport/icon_minus.svg create mode 100644 coveragereport/icon_minus_dark.svg create mode 100644 coveragereport/icon_plus.svg create mode 100644 coveragereport/icon_plus_dark.svg create mode 100644 coveragereport/icon_search-minus.svg create mode 100644 coveragereport/icon_search-minus_dark.svg create mode 100644 coveragereport/icon_search-plus.svg create mode 100644 coveragereport/icon_search-plus_dark.svg create mode 100644 coveragereport/icon_sponsor.svg create mode 100644 coveragereport/icon_star.svg create mode 100644 coveragereport/icon_star_dark.svg create mode 100644 coveragereport/icon_up-dir.svg create mode 100644 coveragereport/icon_up-dir_active.svg create mode 100644 coveragereport/icon_wrench.svg create mode 100644 coveragereport/icon_wrench_dark.svg create mode 100644 coveragereport/index.htm create mode 100644 coveragereport/index.html create mode 100644 coveragereport/main.js create mode 100644 coveragereport/mysqlconnector.dll_ActivitySourceHelper.html create mode 100644 coveragereport/mysqlconnector.dll_ArraySegmentHolder_T_.html create mode 100644 coveragereport/mysqlconnector.dll_AuthGSSAPI.html create mode 100644 coveragereport/mysqlconnector.dll_AuthenticationMethodSwitchRequestPayload.html create mode 100644 coveragereport/mysqlconnector.dll_AuthenticationMoreDataPayload.html create mode 100644 coveragereport/mysqlconnector.dll_AuthenticationPlugins.html create mode 100644 coveragereport/mysqlconnector.dll_AuthenticationUtility.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryBooleanColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryDateTimeColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryDoubleColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryFloatColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinarySignedInt16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinarySignedInt32ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinarySignedInt64ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinarySignedInt8ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryTimeColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryUnsignedInt16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryUnsignedInt32ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryUnsignedInt64ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryUnsignedInt8ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BinaryYearColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BitColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_BufferedByteReader.html create mode 100644 coveragereport/mysqlconnector.dll_ByteArrayReader.html create mode 100644 coveragereport/mysqlconnector.dll_ByteBufferWriter.html create mode 100644 coveragereport/mysqlconnector.dll_ByteBufferWriterExtensions.html create mode 100644 coveragereport/mysqlconnector.dll_BytesColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_CachedParameter.html create mode 100644 coveragereport/mysqlconnector.dll_CachedProcedure.html create mode 100644 coveragereport/mysqlconnector.dll_CachingSha2ServerResponsePayload.html create mode 100644 coveragereport/mysqlconnector.dll_ChangeUserPayload.html create mode 100644 coveragereport/mysqlconnector.dll_ColumnCountPayload.html create mode 100644 coveragereport/mysqlconnector.dll_ColumnDefinitionPayload.html create mode 100644 coveragereport/mysqlconnector.dll_ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_ColumnTypeMetadata.html create mode 100644 coveragereport/mysqlconnector.dll_CommandExecutor.html create mode 100644 coveragereport/mysqlconnector.dll_CommandListPosition.html create mode 100644 coveragereport/mysqlconnector.dll_CompressedPayloadHandler.html create mode 100644 coveragereport/mysqlconnector.dll_ConcatenatedCommandPayloadCreator.html create mode 100644 coveragereport/mysqlconnector.dll_ConnectionPool.html create mode 100644 coveragereport/mysqlconnector.dll_ConnectionSettings.html create mode 100644 coveragereport/mysqlconnector.dll_ConsoleLoggerProvider.html create mode 100644 coveragereport/mysqlconnector.dll_DataReaderValuesEnumerator.html create mode 100644 coveragereport/mysqlconnector.dll_DataRowsValuesEnumerator.html create mode 100644 coveragereport/mysqlconnector.dll_DbDataReaderValuesEnumerator.html create mode 100644 coveragereport/mysqlconnector.dll_DbTypeMapping.html create mode 100644 coveragereport/mysqlconnector.dll_DecimalColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_EmptyPayload.html create mode 100644 coveragereport/mysqlconnector.dll_EnlistedTransactionBase.html create mode 100644 coveragereport/mysqlconnector.dll_EofPayload.html create mode 100644 coveragereport/mysqlconnector.dll_ErrorPayload.html create mode 100644 coveragereport/mysqlconnector.dll_FailOverLoadBalancer.html create mode 100644 coveragereport/mysqlconnector.dll_GuidBinary16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_GuidChar32ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_GuidChar36ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_GuidLittleEndianBinary16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_GuidTimeSwapBinary16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_HandshakeResponse41Payload.html create mode 100644 coveragereport/mysqlconnector.dll_ICancellableCommandExtensions.html create mode 100644 coveragereport/mysqlconnector.dll_IMySqlCommandExtensions.html create mode 100644 coveragereport/mysqlconnector.dll_InitDatabasePayload.html create mode 100644 coveragereport/mysqlconnector.dll_InitialHandshakePayload.html create mode 100644 coveragereport/mysqlconnector.dll_LocalInfilePayload.html create mode 100644 coveragereport/mysqlconnector.dll_Log.html create mode 100644 coveragereport/mysqlconnector.dll_MetricsReporter.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlAttribute.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlAttributeCollection.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBatch.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBatchCommand.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBatchCommandCollection.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBulkCopy.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBulkCopyColumnMapping.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBulkCopyResult.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlBulkLoader.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlCommand.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlCommandBuilder.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnection.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectionStringBuilder.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectionStringOption.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectionStringReferenceOption_T_.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectionStringValueOption_T_.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectorFactory.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectorLogManager.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConnectorLoggingConfiguration.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlConversionException.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDataAdapter.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDataReader.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDataSource.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDataSourceBuilder.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDateTime.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDbColumn.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlDecimal.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlEndOfStreamException.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlError.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlException.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlGeometry.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlHelper.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlInfoMessageEventArgs.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlParameter.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlParameterCollection.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlProtocolException.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlProvidePasswordContext.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlRowUpdatedEventArgs.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlRowUpdatingEventArgs.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlRowsCopiedEventArgs.html create mode 100644 coveragereport/mysqlconnector.dll_MySqlTransaction.html create mode 100644 coveragereport/mysqlconnector.dll_NegotiateToMySqlConverterStream.html create mode 100644 coveragereport/mysqlconnector.dll_NoOpLogger.html create mode 100644 coveragereport/mysqlconnector.dll_NoOpLoggerProvider.html create mode 100644 coveragereport/mysqlconnector.dll_NormalizedSchema.html create mode 100644 coveragereport/mysqlconnector.dll_NullColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_OkPayload.html create mode 100644 coveragereport/mysqlconnector.dll_Packet.html create mode 100644 coveragereport/mysqlconnector.dll_ParsedStatement.html create mode 100644 coveragereport/mysqlconnector.dll_ParsedStatements.html create mode 100644 coveragereport/mysqlconnector.dll_PayloadData.html create mode 100644 coveragereport/mysqlconnector.dll_PingPayload.html create mode 100644 coveragereport/mysqlconnector.dll_PreparedStatement.html create mode 100644 coveragereport/mysqlconnector.dll_PreparedStatements.html create mode 100644 coveragereport/mysqlconnector.dll_ProtocolUtility.html create mode 100644 coveragereport/mysqlconnector.dll_QueryPayload.html create mode 100644 coveragereport/mysqlconnector.dll_QuitPayload.html create mode 100644 coveragereport/mysqlconnector.dll_RandomLoadBalancer.html create mode 100644 coveragereport/mysqlconnector.dll_ResetConnectionPayload.html create mode 100644 coveragereport/mysqlconnector.dll_ResizableArraySegment_T_.html create mode 100644 coveragereport/mysqlconnector.dll_ResizableArray_T_.html create mode 100644 coveragereport/mysqlconnector.dll_ResultSet.html create mode 100644 coveragereport/mysqlconnector.dll_RoundRobinLoadBalancer.html create mode 100644 coveragereport/mysqlconnector.dll_Row.html create mode 100644 coveragereport/mysqlconnector.dll_SchemaProvider.html create mode 100644 coveragereport/mysqlconnector.dll_SerializationUtility.html create mode 100644 coveragereport/mysqlconnector.dll_ServerSession.html create mode 100644 coveragereport/mysqlconnector.dll_ServerVersion.html create mode 100644 coveragereport/mysqlconnector.dll_ServerVersions.html create mode 100644 coveragereport/mysqlconnector.dll_SingleCommandPayloadCreator.html create mode 100644 coveragereport/mysqlconnector.dll_SocketByteHandler.html create mode 100644 coveragereport/mysqlconnector.dll_SocketExtensions.html create mode 100644 coveragereport/mysqlconnector.dll_SqlParser.html create mode 100644 coveragereport/mysqlconnector.dll_StandardEnlistedTransaction.html create mode 100644 coveragereport/mysqlconnector.dll_StandardPayloadHandler.html create mode 100644 coveragereport/mysqlconnector.dll_StatementPrepareResponsePayload.html create mode 100644 coveragereport/mysqlconnector.dll_StatementPreparer.html create mode 100644 coveragereport/mysqlconnector.dll_StreamByteHandler.html create mode 100644 coveragereport/mysqlconnector.dll_StringColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextBooleanColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextDateTimeColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextDoubleColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextFloatColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextSignedInt16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextSignedInt32ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextSignedInt64ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextSignedInt8ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextTimeColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextUnsignedInt16ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextUnsignedInt32ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextUnsignedInt64ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TextUnsignedInt8ColumnReader.html create mode 100644 coveragereport/mysqlconnector.dll_TimerQueue.html create mode 100644 coveragereport/mysqlconnector.dll_TypeMapper.html create mode 100644 coveragereport/mysqlconnector.dll_Utility.html create mode 100644 coveragereport/mysqlconnector.dll_ValueTaskExtensions.html create mode 100644 coveragereport/mysqlconnector.dll_XaEnlistedTransaction.html create mode 100644 coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE1EA81E8FE504B5B6446748E035A__NameRegex_0.html create mode 100644 coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE711EA81E8FE504B5B6446748E035A__Utilities.html create mode 100644 coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCEFE504B5B6446748E035A__TlsVersionsRegex_1.html create mode 100644 coveragereport/report.css diff --git a/.vs/Chemistry Cafe API/DesignTimeBuild/.dtbcache.v2 b/.vs/Chemistry Cafe API/DesignTimeBuild/.dtbcache.v2 index 454c0971654a07a75efb5fa0049dc311a32880af..f036a5c48c623ddbe6e21b0c25ff3cfcf71f874b 100644 GIT binary patch literal 192048 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 delta 18932 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 diff --git a/.vs/Chemistry Cafe API/v17/DocumentLayout.json b/.vs/Chemistry Cafe API/v17/DocumentLayout.json index 4111a58..de9ec88 100644 --- a/.vs/Chemistry Cafe API/v17/DocumentLayout.json +++ b/.vs/Chemistry Cafe API/v17/DocumentLayout.json @@ -1,7 +1,47 @@ { "Version": 1, - "WorkspaceRootPath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\", - "Documents": [], + "WorkspaceRootPath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\chemistry cafe api.http||{5703B403-55E7-4C63-8C88-A8F52C7A45C5}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:chemistry cafe api.http||{5703B403-55E7-4C63-8C88-A8F52C7A45C5}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\dynamiccodecoverage.coveragexml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:dynamiccodecoverage.coveragexml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\chemistry cafe api.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:chemistry cafe api.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\test.coverage||{25834150-CD7E-11D0-92DF-00A0C9138C45}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:test.coverage||{25834150-CD7E-11D0-92DF-00A0C9138C45}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\chemistry cafe api.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:chemistry cafe api.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Evan\\.nuget\\packages\\reportgenerator\\5.2.5\\Readme.txt||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\testresults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\evan_desktop-j5ql00b_2024-04-23.15_06_43.coverage||{25834150-CD7E-11D0-92DF-00A0C9138C45}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:testresults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\evan_desktop-j5ql00b_2024-04-23.15_06_43.coverage||{25834150-CD7E-11D0-92DF-00A0C9138C45}" + }, + { + "AbsoluteMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|c:\\users\\evan\\documents\\github\\chemistry-cafe-api\\services\\openatmosservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{62738D41-607A-4727-AADD-D4B41BA734C9}|Chemistry Cafe API.csproj|solutionrelative:services\\openatmosservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], "DocumentGroupContainers": [ { "Orientation": 0, @@ -9,15 +49,133 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": -1, + "SelectedChildIndex": 9, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{0174dea2-fdbe-4ef1-8f99-c0beae78880f}" }, { - "$type": "Bookmark", - "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}" + "$type": "Document", + "DocumentIndex": 2, + "Title": "DynamicCodeCoverage.coveragexml", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\DynamicCodeCoverage.coveragexml", + "RelativeDocumentMoniker": "DynamicCodeCoverage.coveragexml", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\DynamicCodeCoverage.coveragexml", + "RelativeToolTip": "DynamicCodeCoverage.coveragexml", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002488|", + "WhenOpened": "2024-04-23T20:33:57.768Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Chemistry Cafe API.csproj", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "RelativeDocumentMoniker": "Chemistry Cafe API.csproj", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "RelativeToolTip": "Chemistry Cafe API.csproj", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABsAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-04-23T20:27:01.181Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "test.coverage", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\test.coverage", + "RelativeDocumentMoniker": "test.coverage", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\test.coverage", + "RelativeToolTip": "test.coverage", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002488|", + "WhenOpened": "2024-04-23T20:27:15.659Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Readme.txt", + "DocumentMoniker": "C:\\Users\\Evan\\.nuget\\packages\\reportgenerator\\5.2.5\\Readme.txt", + "RelativeDocumentMoniker": "..\\..\\..\\.nuget\\packages\\reportgenerator\\5.2.5\\Readme.txt", + "ToolTip": "C:\\Users\\Evan\\.nuget\\packages\\reportgenerator\\5.2.5\\Readme.txt", + "RelativeToolTip": "..\\..\\..\\.nuget\\packages\\reportgenerator\\5.2.5\\Readme.txt", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAtAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|", + "WhenOpened": "2024-04-23T20:15:17.994Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "Evan_DESKTOP-J5QL00B_2024-04-23.15_06_43.coverage", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\TestResults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\Evan_DESKTOP-J5QL00B_2024-04-23.15_06_43.coverage", + "RelativeDocumentMoniker": "TestResults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\Evan_DESKTOP-J5QL00B_2024-04-23.15_06_43.coverage", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\TestResults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\Evan_DESKTOP-J5QL00B_2024-04-23.15_06_43.coverage", + "RelativeToolTip": "TestResults\\bebeeb31-5fa4-4b64-b3ed-85c033f075be\\Evan_DESKTOP-J5QL00B_2024-04-23.15_06_43.coverage", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002488|", + "WhenOpened": "2024-04-23T20:06:56.242Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "OpenAtmosService.cs", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Services\\OpenAtmosService.cs", + "RelativeDocumentMoniker": "Services\\OpenAtmosService.cs", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Services\\OpenAtmosService.cs", + "RelativeToolTip": "Services\\OpenAtmosService.cs", + "ViewState": "AQIAAN0AAAAAAAAAAAAcwOIAAAAVAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-23T18:43:31.993Z" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "appsettings.json", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\appsettings.json", + "RelativeDocumentMoniker": "appsettings.json", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\appsettings.json", + "RelativeToolTip": "appsettings.json", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAPAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", + "WhenOpened": "2024-04-23T17:05:43.115Z" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Program.cs", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Program.cs", + "RelativeDocumentMoniker": "Program.cs", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Program.cs", + "RelativeToolTip": "Program.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAA8AAAAaAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-23T16:27:20.779Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Chemistry Cafe API.http", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.http", + "RelativeDocumentMoniker": "Chemistry Cafe API.http", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.http", + "RelativeToolTip": "Chemistry Cafe API.http", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAADAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003502|", + "WhenOpened": "2024-04-23T17:04:42.909Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Chemistry Cafe API", + "DocumentMoniker": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "RelativeDocumentMoniker": "Chemistry Cafe API.csproj", + "ToolTip": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "RelativeToolTip": "Chemistry Cafe API.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-04-23T20:17:32.081Z", + "EditorCaption": "" } ] } diff --git a/.vs/ProjectEvaluation/chemistry cafe api.metadata.v7.bin b/.vs/ProjectEvaluation/chemistry cafe api.metadata.v7.bin index 17b64be6f88d10940cfd6847c97769c0618194a3..96aed5f4c6951fa475dd81d6ebde1ce766579914 100644 GIT binary patch delta 9232 zcmb_i3wTpiw$45~ZIhI~AN1X{wDbW4S_%aU(o$New)8<6Kmuu+9NIvdlq4+_t~cO_ zhJ33Q7(8ZI zm*{aPqOf#*Q9th#3FqXGk%5W5M5@EhzQqe(c(g`8jr_i z>(uml#AHMqg}lQ;iFC9uI@jWKY_@gvAsnY?=tB;-%wa^!4RhegAz>CYQXyu(VVpR{ zm=qM2W@_rUFjH-gu6DC~tGmYS7JEAF1F1*^u4%d1-HX1kI9;Nlr{BUohG?#$BG^|3 zgAxCDm>lLlx5w7xuALZ?;*#q& zjqA@*^!uWbj&d|gBr*~p=ddvIyZO}{OS;`M83?iC$1o*t(=2$zGn!oY~z z*n%dCF3-ROJ8~yOwh#1*0STyEkH})*h?mb$5gN|YJVeh7@Vkv|qS=CZ;Xx*ApT#r5 zkbGpwo4^q2fN6-**E+ocH?Qs$EjBTD`UQvzn!YazW{1t)6VQQ^Dnw*Z7{(*H$!Ng@ zTc>-GZ9zbg+c+6pIM);*^PI_;ebbqsvKW~v{Y+lWukk9!afQ=Zg3Q@|X5?j6A@GiV zC`E)4TpnA7XmN>~MVIKXgt&J`f>))Q*5tH`cDHf4Xcs+VnCPO^nJ6{Whnuh*kUk6P z`IFIo6G4~(VTnGNoO52!0FKYb@zkJkIl+-MCk%;YG?L1Ylpewr&{dAqY#%lJq~;>R ztISG)xP58uMg=FJ3r0A4iorjE^XiDv_jkXFLgIdM&K-vm`;> z0>qX01c%`Ku)qWtB04V&dRz*j%teSQo*d<6ssl2s5FP77v&2CGi*ZQta!4*AbqP`n zR*SBF8|K!;O6j8@@FoP#mzWceBV)iD65MnJ9~pp-B+p8%#NEQaNe z593ACmLVvAf}jZo)go-VAExBXxGES>yBwjJ!BC8HfL@364F2k6Zu3PfK(9x7z*&=} zLIA%4@#VhP;CiB@?YJ-p*j6T}yyILrUQYnjfU--&${v?!0r<@bFZ(ulz_(tOI2eOl zkS!2{kUR@WZ$#KszjOu*(3+6O8w4c}19g$L4QxTLLWsV}W^p;)&dnY}jk_1LQNolC zUt7_PyG?S*sbW+)!yKYsaTb z*pn!fM{z6GBuKerUJ8FU8bqtj<8)bg7x)8CneL->*`1wcyG&V&GPG?<315eAi=ib= zJ++cyTkK}fW~Zwsq+bm*&Fc}bS!u%!+wAGS6<_XTU7>#Z^>xE=K8mC@U6&%(4{kvD zrh?*cYT!$_?aQxQq!C3XC|#}GNn<0u5l8DF{!yC3`{Ol1eVm*ay!CFd`dKz1OSGxQ z%nl14(N$)`_o=*-SNik@tD)Ux>nScN=|Gx9;7FfPeEm&&b&wIgteG^Uob?68tNK=m z=zq&rbC<{tF(vK+bbk-F;yXNsEpDeH(C?>Zua;@;jCM29ly<)pWm&On&Pn|S?wrZE zEy(>Z@{Be8atmI~SNC9^t_@B@NbHiX$La^P4^+m8!UPj6>tJCJNiY{4=eEey5nel+>vGt2V zrygj2SV-gPm0(!LnG{28fwRVq3r`6Vz6C9R@Vn+-dQk59&PQ8O(g1UA_S|njXazd~ z%OF2;C9`#kr$uGvb`*IBPnGX2l9#w~B70C|m3;CXe{kpOy&>uyh}E0q9LFNF!((DA zWCd0>(N*Ix+Xr^yVati2q6r{{+|+0H*xLDV9*yV?E3i%MarTSI;guzBL)1)@f9Eg- zs;kMDb|EIXkYVmOGK4qB9iqrPQIp>`*)$JwEDWy+H^9K{f=SL`Q!slUa#ydaYhUd< z>DM}Ydd;3Xm&@tmGQE7K96#T1LiRS zHUsrGJDzVOlCnU0(hwc-IbJ_G@U0r0jWkc1eRqtsXVDH=dx^$E;bEZ=FA6q-BLKxaBM1bvQv?c1-5yR`R?R*p;a%K1QDn2*(Rv&LxnZc z*wtn&nf=>o&p%f=ssa6Bp_E;f+<5s)4=GsUoASK`c={EqVa;p#eBo2HiO*F{Wkm}trQ!R8Qs*|LbnoD6Yi6+9=Cut2?#GI8T4L%bCW6#i3 zXk9AQNYzxs-50w|#9m4?l2fT~zWZDyJb8-lC;lWd2&#>2|Ap?y=t^>H*sLiaDmecf zJtTeFzm~;#I@~)%qIBdh*JO+L!TD-o6WrHLOQQ&!_;B|~C73>-IZ}Lf0gRoZ3!(Qv zXgt}c?8fV)qtlUHb;mmubMxNSJjy}|bJoyA>Fw%PLA4Hj+!il7X02ImB!_OU_=VyX zf7VAHJWC^qm1hJT`3*k1l?8$77<*7i7gTmg7$V(jqv$Zg?qwLID{E-Jj@;EX z_y7x#;^_h%Ib33Vj}5t%&=khYZu5C=|(>q z!C6A5Xo)TIF8>-iimorpw>=Ous#%XB7Qo-u(L5a)T6c|G+{lutK2n~(w6w&oBM+Tq znKPdLQmKHp9nyw-yzd`Z!JFpZQ$)7WmE->Bvy1VHg(47(0nY|5% z+DA3!3CZq)IggWgc<&6Y^B0rrZ?>*FJyZ6d$rnH6@~C`Z6ktTxfcWRfU#!(5~IF>Ik-ABjLbCQUyz1rCP!Z zIb0g1)3wSXQEIziX`j?u)r1u)6P|jNrji@%rP4zBBchu1L|H`x7I?*P8PW^=iCVw! z04wk!p2cw6da8p}ui#X52mZ`+_FGRE`IDV4h>AY8o9#v6t0Lb^d3_dCe9e@zs*~(n zI8c)+ER)WDzCcUF7jk)R0a78y;;Hq*lp^ zjtL2B0O!kC?K;ulwbJWba-sh<+ArNccf-h;b2L{VgS?csbl~=^l>2Ipdj5m6g@v%{ zJVx^%FGtGO0NQ$5qVt!yU6Akz?T2&cX)IxT6ze(WLd-DLXq7!yE_3=wb-4zN*Ldbi z3Cp&P{Q6B=7(wSsas0U<3=RyP2NR=3OBz!psEjna@S67+wkn#jL?aR+)~1oQ7} zLK-nu7r@j>RCOS<=HbuzmY!z}9z@^89Qn>sI)sA#rqIVM_Dewibq?>4^H~u#o zJ~=@(8l}9$HX>xfQk{TJm-Qy-{S(${#~Xm#1v$-RA=F-@qa)Ji zbO#~ZctLB{krW*v?1>Hpyhz7iaLTnTnEV~nNBkzAn-xr|u zD_SMZxiu4xJ|aYo-1B$(J3%65`$&VJ{(}I&Jx9?b))ozYh276^q&k+|8*pl2tU67r zBtjR|>>~{rfpj_HccB@rBXJtFLxA6Zgk9(GX54}Qr<>$L$+OsATcXwP5|JDCVjI=! ze0Gg$wljZM!&CPPmGJBo^WKsd<tWl2b5||yY zK8`Ee$DxC&4YT&j4qV`b(hYv;u|?)3p1$6B6s#VG@6A_;>1W8V$d+ zz=z4|(uiz)->Woq8z(tK;HTaOD4T`-Snq7AhTY3)KAd|?U4O@v6l4(Zn8x)%H`+&py8K%^f%M5bfl_waoeOadLNpAn6jCzNYZvj)lx|~P zzu94wFShxmXM>z4mkMbTS;Ftgp(;xqO{PhwlhWYQN|cb2t&WSx#Pu^@7JGXxmZdyJ zB8=s!Ge{F7mB9%M&64z_Vk*lXcktc1Dx-E0?8#N9(@cC|Tw1+f2pf+rR9?B244bWE z*T}NfvZ7hsu8tgaDw)F{ujV1=v|vtCj(RGY&B@GIQXw18xn|1GhvI~oL{&WU1$_Vj zZ=x^{-j5Te2r8b_SPFXS6lif!9I0o#<#42oCa0-V{W^ms7~+I%ohnD60yl<#e#ix8 zELkZ_i7UgBe_Osfj>sm(8LUprR?%haa^Ue-RmjcnMl;o_G;|mf1Aoj{*JsBlqPd%< nG&a}PG}g4VEU#&=`6v@xu*`U&dG$v+{M8t%bGzHLs-65lse;VC delta 3311 zcmZ`*dsI~C5#PDB!R*OJWMGP2)5U&9-?X1qA7 z7Ld%8dga9}j+7zw_=8;ncscdW$8s4Cjta4e=MuVP z#t3S;fuV}=VT`1yCPx`o(Btc<^Z2$Xy?uEGC@i`fEG{U4)8{DFF{9`}EHlu4JsV8D z*Ra%(dhF9YfsLM~(wCxkN{jTMIUIM=X**AraF*!`#y~1R%1g9T<`=uROF1;GRT{$a zot>=~OAS{=o~DE0uIeP7sqU|Fh;nH4WC}QsVM_S}oemas?lbc@yN_Z9vl)$ITbFo< z)cp+(5ztaaE)xt;ANv9K#Uq1GiC1h77-{o|VDVJ>qa+q2s@y2|qrISC`<&|ubmLnz zQil~c%CI5cLm!7X>odV2=vB^~HJWAgZV}EFQAYdBD^mmHSo%pK_uwS3dGCp8`BLk3 z4po$j%srS33%##1splfjpr|kwOvg`SCOltf^=2qkiCS0bz*9T-i8HtjU^DfcK`U*2 z9|qB(FEJIiddU<=ts5l2XOUV3<;Fil0X1G?#(7BjJm5$Vty;YWn?!BDLana9YLwA~ z6NR-<4&o_+eU!at6J%H_A6AR7$%F3PUKmPKE@3hhcxfL?_RHu44FW^9s9pcTdSPoa zJu1d%T0Nf=;xGTkD4*ZVIxZOWI^UgpN0;g6;kEBZ^Ch18LaR^@VAuna#t zQE{S}6QNj~71EWHs59(5;}astp|;K30jW@Ps~&{HfPN)kD@ID1Vx{Azi9SDszEpM< zqYU#R_RbdFuVO8xu5p~LEqORx2MKrfF7NLFGFvfUN!sc|QL7}aq{)3|azRO1p_Gm4hYy zEuSaDP#qj;n8jP3jJI%_lDr_y&2C|gM1TGoSHhbF>tQaL?qUk9TZp-?Ib1jV^Kgg( zeCMrGfpZ4E z%O=r*WXPfRNB9-Y;a6hl${s0RaLV9b^8~kYuONlH0$4nK{$t5R#(1usqa^mR{;BLM z9bv^}Mt&>@vO+SikqorveM#pwG3L)e5w);Tz8%wOS|u2iQ{Ve47fZPk8cv9rK;{3$ z4617dtFFpAg*<)~dOxh1)A{k!Au`=v$ z^a!1UM^HreKsFRMQTO+_(!FFbGl560KPg0m4sP{{+PRy9SSip*BiBGKnCVZ;~5kq48ha45S#E%*6kRJDIiHtH1f7M%g?hh9_lUjavo+1C&L3p zSh%3KsqwY9^6Yj-uzyG%$q+@IK*v8rz1}$l$$vz>D~Lx^uEg~f38HHNZuirT^j)i0LCiCJJ*@_!hsgQ9|cyt&;e zvFuZ6K)gIH5jyy7iAagNFOFpbrRw;$V3#E=b-g1^qG9puJBqG>ATfMx)cY9yX_!k4 zQqyn`tP+uQB{?F>0Gfkxu5CCU-R(Dv_0TUhRG!GHfv;O-IA7Hh1DxIEQu8AK22uWc zKJAijqgJWOO{QZe)&MQuB;?ERQMZRJb*e)0(#P-xWydPDIk^UZgC&$+!e`|NNz6#b zquinjwQ`3PB16_a&$h5Z(uH2n9g?6T} zcV7QjqCD7?$vfGv)qC*cBe?B;91wl?&mwo{;m7dDfDdjnKc^bS5Rn`huiGEZPS zSnfTD6Ly;5#i0cUI#*bkz>d@P50&%r0DO!iS1iZrq~G10H0s&=8H%CxMpwkAiM zn0*JFQ2lmHfidDdV&Iprd;DLC#UN97))ZS-ZB>=C!dX7IX~mKywgCnL_{#y0p&C~W z+9b_1VKFvz#?l7oqNdu0ADQwUi5J*i_&@v-bH)Gw diff --git a/.vs/ProjectEvaluation/chemistry cafe api.projects.v7.bin b/.vs/ProjectEvaluation/chemistry cafe api.projects.v7.bin index 018ca31e0868f58420cf549c6614cb9e29f3683a..dd623e6fd5ae140e1783af1fe95e41e56ab55063 100644 GIT binary patch delta 2712 zcmaKue@s=iPVj`~7ZU2ogL>A1EmxNNJ^DLQ<(98kq4zFwh_cv$WZU*qxh} zQ%gE+>1JCtEu9jsvt=t?y0uCtu0M1-^;%<oufdjc9I7(ma~1DVkUFX?`uB1+|bC)*^@1k~W%aAO$U_-96rkboUu4 z2N9Nch3q79P(_9wRH?q(U(yqBmlO8W01CQ2gSQS`rH%CT_uj0)`7n05T%b{hP#su5 z2*l{lA*9&O(f7kyG;&Gu*oxkx!=hRDH8L96=G=eLBp9>eUOCU>Y4o?1>}+J}j_?W0 z>J^+80u^2Ihn#JXzdP$47dUM;Wd+ddBQ()-!+k2aW~wvlf`Smb!9RxnuEJl?h58f3 z*L)Vz>CCS02`|9xWHK&rvsp)iwdh9Xl zMM{Pbhg2H9<4vZy({K{qaL1d%+5$>)EHA8z9(dh|Sd(9|7=~3LRaGp2>zjl1D;Gf5 zhW?Ps_SNHGNJoMd*Y8LC%e@oKm_#dvW`B9}-1-0Cbd+7>VNoQ>bRA{N(N@5?GqZhV zj;XmQrUr@BR`!cLm!UhHQ5o$-p$zukQvAgj-0x?HLXpEB_SZ&yDJ&lK{LmbC&z61P zO6<@oWiO#s4Zc)HKf`rymR}m0hLR0EnRmd;h$3!lB=I7BZ2U6cZ-{DJJPq{cvQTEv zydzy0)zbEZc(lEVwjRW*X?j&i4yHKY_`_{KCbILLO63|nMy1;oxe})W9|5KT(}7W7 z2JlhfW5BV%aljZb6PN`Y51atZwn+Pvq=oo#P)-C+0_Fg7fqB5mzw80p)by3}6wk7&sI7EN~XE1Xv1u4mcZF27Dg)0`NuP9F?{g zqP;YoMG9#Bpprq0F8Hhwn>U^WCY8?R8-woz=P!}(&3=8*#kImHHm9NcFcTt$NR5wfC+!~)jg!SflqMvd80VrhBY6i`kW9px(G`WkwLNEL(Y&d0rfrN?lbAi``V@M(FCyQ2v~6xeX^A6dz|c2Y9nX*31#~Qoj*cti`Wkwr z%Jx^2s6-Dk?VzvOU#V$enk|hv8oR{G#y6Ew^sQ6!}D^C@U0WZTHY!5 zWq)e~h0zbRxWYfF7M2#)7Pc1l7LFFq7OocV7M>Q~7QPn#7J)5-t_1*a!Vb&; diff --git a/Chemistry Cafe API.csproj b/Chemistry Cafe API.csproj index ac78a2b..4d0a3af 100644 --- a/Chemistry Cafe API.csproj +++ b/Chemistry Cafe API.csproj @@ -8,13 +8,20 @@ 5c953ed8-0279-4c49-a044-edbcddca45e1 Linux . + AnyCPU + + + + + + diff --git a/Chemistry Cafe API.sln b/Chemistry Cafe API.sln index a1adf3e..5ffa15b 100644 --- a/Chemistry Cafe API.sln +++ b/Chemistry Cafe API.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34616.47 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Chemistry Cafe API", "Chemistry Cafe API.csproj", "{62738D41-607A-4727-AADD-D4B41BA734C9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Chemistry Cafe API", "Chemistry Cafe API.csproj", "{62738D41-607A-4727-AADD-D4B41BA734C9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Tests/FamilyControllerTests.cs b/Tests/FamilyControllerTests.cs new file mode 100644 index 0000000..961fa04 --- /dev/null +++ b/Tests/FamilyControllerTests.cs @@ -0,0 +1,23 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class FamilyControllerTests + { + readonly MySqlDataSource db = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com;User ID=cafeadmin;Password=cafeadmin;Port=3306;Database=Testing"); + + [TestMethod] + public async Task Get_retrieves_family() + { + var controller = new FamilyController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + } +} diff --git a/bin/Debug/net8.0/Chemistry Cafe API.deps.json b/bin/Debug/net8.0/Chemistry Cafe API.deps.json index c703c4f..82a6c86 100644 --- a/bin/Debug/net8.0/Chemistry Cafe API.deps.json +++ b/bin/Debug/net8.0/Chemistry Cafe API.deps.json @@ -3,41 +3,1212 @@ "name": ".NETCoreApp,Version=v8.0", "signature": "" }, - "compilationOptions": {}, + "compilationOptions": { + "defines": [ + "TRACE", + "DEBUG", + "NET", + "NET8_0", + "NETCOREAPP", + "NET5_0_OR_GREATER", + "NET6_0_OR_GREATER", + "NET7_0_OR_GREATER", + "NET8_0_OR_GREATER", + "NETCOREAPP1_0_OR_GREATER", + "NETCOREAPP1_1_OR_GREATER", + "NETCOREAPP2_0_OR_GREATER", + "NETCOREAPP2_1_OR_GREATER", + "NETCOREAPP2_2_OR_GREATER", + "NETCOREAPP3_0_OR_GREATER", + "NETCOREAPP3_1_OR_GREATER" + ], + "languageVersion": "12.0", + "platform": "AnyCPU", + "allowUnsafe": false, + "warningsAsErrors": false, + "optimize": false, + "keyFile": "", + "emitEntryPoint": true, + "xmlDoc": false, + "debugType": "portable" + }, "targets": { ".NETCoreApp,Version=v8.0": { "Chemistry Cafe API/1.0.0": { "dependencies": { + "MSTest.TestAdapter": "3.3.1", + "MSTest.TestFramework": "3.3.1", + "Microsoft.AspNetCore.Mvc.Testing": "8.0.4", + "Microsoft.CodeCoverage": "17.9.0", + "Microsoft.NET.Test.Sdk": "17.9.0", "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.19.6", "MySqlConnector": "2.3.5", "MySqlConnector.DependencyInjection": "2.3.5", - "Swashbuckle.AspNetCore": "6.5.0" + "Swashbuckle.AspNetCore": "6.5.0", + "xunit.extensibility.core": "2.7.1", + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions": "14.0.0.0", + "Microsoft.AspNetCore.Antiforgery": "8.0.0.0", + "Microsoft.AspNetCore.Authentication.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Authentication.BearerToken": "8.0.0.0", + "Microsoft.AspNetCore.Authentication.Cookies": "8.0.0.0", + "Microsoft.AspNetCore.Authentication.Core": "8.0.0.0", + "Microsoft.AspNetCore.Authentication": "8.0.0.0", + "Microsoft.AspNetCore.Authentication.OAuth": "8.0.0.0", + "Microsoft.AspNetCore.Authorization": "8.0.0.0", + "Microsoft.AspNetCore.Authorization.Policy": "8.0.0.0", + "Microsoft.AspNetCore.Components.Authorization": "8.0.0.0", + "Microsoft.AspNetCore.Components": "8.0.0.0", + "Microsoft.AspNetCore.Components.Endpoints": "8.0.0.0", + "Microsoft.AspNetCore.Components.Forms": "8.0.0.0", + "Microsoft.AspNetCore.Components.Server": "8.0.0.0", + "Microsoft.AspNetCore.Components.Web": "8.0.0.0", + "Microsoft.AspNetCore.Connections.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.CookiePolicy": "8.0.0.0", + "Microsoft.AspNetCore.Cors": "8.0.0.0", + "Microsoft.AspNetCore.Cryptography.Internal": "8.0.0.0", + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "8.0.0.0", + "Microsoft.AspNetCore.DataProtection.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.DataProtection": "8.0.0.0", + "Microsoft.AspNetCore.DataProtection.Extensions": "8.0.0.0", + "Microsoft.AspNetCore.Diagnostics.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Diagnostics": "8.0.0.0", + "Microsoft.AspNetCore.Diagnostics.HealthChecks": "8.0.0.0", + "Microsoft.AspNetCore": "8.0.0.0", + "Microsoft.AspNetCore.HostFiltering": "8.0.0.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Hosting": "8.0.0.0", + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Html.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Http.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Http.Connections.Common": "8.0.0.0", + "Microsoft.AspNetCore.Http.Connections": "8.0.0.0", + "Microsoft.AspNetCore.Http": "8.0.0.0", + "Microsoft.AspNetCore.Http.Extensions": "8.0.0.0", + "Microsoft.AspNetCore.Http.Features": "8.0.0.0", + "Microsoft.AspNetCore.Http.Results": "8.0.0.0", + "Microsoft.AspNetCore.HttpLogging": "8.0.0.0", + "Microsoft.AspNetCore.HttpOverrides": "8.0.0.0", + "Microsoft.AspNetCore.HttpsPolicy": "8.0.0.0", + "Microsoft.AspNetCore.Identity": "8.0.0.0", + "Microsoft.AspNetCore.Localization": "8.0.0.0", + "Microsoft.AspNetCore.Localization.Routing": "8.0.0.0", + "Microsoft.AspNetCore.Metadata": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.ApiExplorer": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Core": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Cors": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.DataAnnotations": "8.0.0.0", + "Microsoft.AspNetCore.Mvc": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Formatters.Json": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Formatters.Xml": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Localization": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.Razor": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.RazorPages": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.TagHelpers": "8.0.0.0", + "Microsoft.AspNetCore.Mvc.ViewFeatures": "8.0.0.0", + "Microsoft.AspNetCore.OutputCaching": "8.0.0.0", + "Microsoft.AspNetCore.RateLimiting": "8.0.0.0", + "Microsoft.AspNetCore.Razor": "8.0.0.0", + "Microsoft.AspNetCore.Razor.Runtime": "8.0.0.0", + "Microsoft.AspNetCore.RequestDecompression": "8.0.0.0", + "Microsoft.AspNetCore.ResponseCaching.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.ResponseCaching": "8.0.0.0", + "Microsoft.AspNetCore.ResponseCompression": "8.0.0.0", + "Microsoft.AspNetCore.Rewrite": "8.0.0.0", + "Microsoft.AspNetCore.Routing.Abstractions": "8.0.0.0", + "Microsoft.AspNetCore.Routing": "8.0.0.0", + "Microsoft.AspNetCore.Server.HttpSys": "8.0.0.0", + "Microsoft.AspNetCore.Server.IIS": "8.0.0.0", + "Microsoft.AspNetCore.Server.IISIntegration": "8.0.0.0", + "Microsoft.AspNetCore.Server.Kestrel.Core": "8.0.0.0", + "Microsoft.AspNetCore.Server.Kestrel": "8.0.0.0", + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes": "8.0.0.0", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic": "8.0.0.0", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "8.0.0.0", + "Microsoft.AspNetCore.Session": "8.0.0.0", + "Microsoft.AspNetCore.SignalR.Common": "8.0.0.0", + "Microsoft.AspNetCore.SignalR.Core": "8.0.0.0", + "Microsoft.AspNetCore.SignalR": "8.0.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "8.0.0.0", + "Microsoft.AspNetCore.StaticFiles": "8.0.0.0", + "Microsoft.AspNetCore.WebSockets": "8.0.0.0", + "Microsoft.AspNetCore.WebUtilities": "8.0.0.0", + "Microsoft.CSharp": "8.0.0.0", + "Microsoft.Extensions.Caching.Abstractions": "8.0.0.0", + "Microsoft.Extensions.Caching.Memory": "8.0.0.0", + "Microsoft.Extensions.Configuration.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.Binder.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.CommandLine.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.FileExtensions.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.Ini": "8.0.0.0", + "Microsoft.Extensions.Configuration.Json.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.KeyPerFile": "8.0.0.0", + "Microsoft.Extensions.Configuration.UserSecrets.Reference": "8.0.0.0", + "Microsoft.Extensions.Configuration.Xml": "8.0.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.DependencyInjection.Reference": "8.0.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.Diagnostics.Reference": "8.0.0.0", + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0.0", + "Microsoft.Extensions.Features": "8.0.0.0", + "Microsoft.Extensions.FileProviders.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.FileProviders.Composite": "8.0.0.0", + "Microsoft.Extensions.FileProviders.Embedded": "8.0.0.0", + "Microsoft.Extensions.FileProviders.Physical.Reference": "8.0.0.0", + "Microsoft.Extensions.FileSystemGlobbing.Reference": "8.0.0.0", + "Microsoft.Extensions.Hosting.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.Hosting.Reference": "8.0.0.0", + "Microsoft.Extensions.Http": "8.0.0.0", + "Microsoft.Extensions.Identity.Core": "8.0.0.0", + "Microsoft.Extensions.Identity.Stores": "8.0.0.0", + "Microsoft.Extensions.Localization.Abstractions": "8.0.0.0", + "Microsoft.Extensions.Localization": "8.0.0.0", + "Microsoft.Extensions.Logging.Abstractions.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.Configuration.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.Console.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.Debug.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.EventLog.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.EventSource.Reference": "8.0.0.0", + "Microsoft.Extensions.Logging.TraceSource": "8.0.0.0", + "Microsoft.Extensions.ObjectPool": "8.0.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions.Reference": "8.0.0.0", + "Microsoft.Extensions.Options.DataAnnotations": "8.0.0.0", + "Microsoft.Extensions.Options.Reference": "8.0.0.0", + "Microsoft.Extensions.Primitives.Reference": "8.0.0.0", + "Microsoft.Extensions.WebEncoders": "8.0.0.0", + "Microsoft.JSInterop": "8.0.0.0", + "Microsoft.Net.Http.Headers": "8.0.0.0", + "Microsoft.VisualBasic.Core": "13.0.0.0", + "Microsoft.VisualBasic": "10.0.0.0", + "Microsoft.Win32.Primitives": "8.0.0.0", + "Microsoft.Win32.Registry": "8.0.0.0", + "mscorlib": "4.0.0.0", + "netstandard": "2.1.0.0", + "System.AppContext": "8.0.0.0", + "System.Buffers": "8.0.0.0", + "System.Collections.Concurrent": "8.0.0.0", + "System.Collections": "8.0.0.0", + "System.Collections.Immutable": "8.0.0.0", + "System.Collections.NonGeneric": "8.0.0.0", + "System.Collections.Specialized": "8.0.0.0", + "System.ComponentModel.Annotations": "8.0.0.0", + "System.ComponentModel.DataAnnotations": "4.0.0.0", + "System.ComponentModel": "8.0.0.0", + "System.ComponentModel.EventBasedAsync": "8.0.0.0", + "System.ComponentModel.Primitives": "8.0.0.0", + "System.ComponentModel.TypeConverter": "8.0.0.0", + "System.Configuration": "4.0.0.0", + "System.Console": "8.0.0.0", + "System.Core": "4.0.0.0", + "System.Data.Common": "8.0.0.0", + "System.Data.DataSetExtensions": "8.0.0.0", + "System.Data": "4.0.0.0", + "System.Diagnostics.Contracts": "8.0.0.0", + "System.Diagnostics.Debug": "8.0.0.0", + "System.Diagnostics.DiagnosticSource.Reference": "8.0.0.0", + "System.Diagnostics.EventLog.Reference": "8.0.0.0", + "System.Diagnostics.FileVersionInfo": "8.0.0.0", + "System.Diagnostics.Process": "8.0.0.0", + "System.Diagnostics.StackTrace": "8.0.0.0", + "System.Diagnostics.TextWriterTraceListener": "8.0.0.0", + "System.Diagnostics.Tools": "8.0.0.0", + "System.Diagnostics.TraceSource": "8.0.0.0", + "System.Diagnostics.Tracing": "8.0.0.0", + "System": "4.0.0.0", + "System.Drawing": "4.0.0.0", + "System.Drawing.Primitives": "8.0.0.0", + "System.Dynamic.Runtime": "8.0.0.0", + "System.Formats.Asn1": "8.0.0.0", + "System.Formats.Tar": "8.0.0.0", + "System.Globalization.Calendars": "8.0.0.0", + "System.Globalization": "8.0.0.0", + "System.Globalization.Extensions": "8.0.0.0", + "System.IO.Compression.Brotli": "8.0.0.0", + "System.IO.Compression": "8.0.0.0", + "System.IO.Compression.FileSystem": "4.0.0.0", + "System.IO.Compression.ZipFile": "8.0.0.0", + "System.IO": "8.0.0.0", + "System.IO.FileSystem.AccessControl": "8.0.0.0", + "System.IO.FileSystem": "8.0.0.0", + "System.IO.FileSystem.DriveInfo": "8.0.0.0", + "System.IO.FileSystem.Primitives": "8.0.0.0", + "System.IO.FileSystem.Watcher": "8.0.0.0", + "System.IO.IsolatedStorage": "8.0.0.0", + "System.IO.MemoryMappedFiles": "8.0.0.0", + "System.IO.Pipelines.Reference": "8.0.0.0", + "System.IO.Pipes.AccessControl": "8.0.0.0", + "System.IO.Pipes": "8.0.0.0", + "System.IO.UnmanagedMemoryStream": "8.0.0.0", + "System.Linq": "8.0.0.0", + "System.Linq.Expressions": "8.0.0.0", + "System.Linq.Parallel": "8.0.0.0", + "System.Linq.Queryable": "8.0.0.0", + "System.Memory": "8.0.0.0", + "System.Net": "4.0.0.0", + "System.Net.Http": "8.0.0.0", + "System.Net.Http.Json": "8.0.0.0", + "System.Net.HttpListener": "8.0.0.0", + "System.Net.Mail": "8.0.0.0", + "System.Net.NameResolution": "8.0.0.0", + "System.Net.NetworkInformation": "8.0.0.0", + "System.Net.Ping": "8.0.0.0", + "System.Net.Primitives": "8.0.0.0", + "System.Net.Quic": "8.0.0.0", + "System.Net.Requests": "8.0.0.0", + "System.Net.Security": "8.0.0.0", + "System.Net.ServicePoint": "8.0.0.0", + "System.Net.Sockets": "8.0.0.0", + "System.Net.WebClient": "8.0.0.0", + "System.Net.WebHeaderCollection": "8.0.0.0", + "System.Net.WebProxy": "8.0.0.0", + "System.Net.WebSockets.Client": "8.0.0.0", + "System.Net.WebSockets": "8.0.0.0", + "System.Numerics": "4.0.0.0", + "System.Numerics.Vectors": "8.0.0.0", + "System.ObjectModel": "8.0.0.0", + "System.Reflection.DispatchProxy": "8.0.0.0", + "System.Reflection": "8.0.0.0", + "System.Reflection.Emit": "8.0.0.0", + "System.Reflection.Emit.ILGeneration": "8.0.0.0", + "System.Reflection.Emit.Lightweight": "8.0.0.0", + "System.Reflection.Extensions": "8.0.0.0", + "System.Reflection.Metadata.Reference": "8.0.0.0", + "System.Reflection.Primitives": "8.0.0.0", + "System.Reflection.TypeExtensions": "8.0.0.0", + "System.Resources.Reader": "8.0.0.0", + "System.Resources.ResourceManager": "8.0.0.0", + "System.Resources.Writer": "8.0.0.0", + "System.Runtime.CompilerServices.Unsafe": "8.0.0.0", + "System.Runtime.CompilerServices.VisualC": "8.0.0.0", + "System.Runtime": "8.0.0.0", + "System.Runtime.Extensions": "8.0.0.0", + "System.Runtime.Handles": "8.0.0.0", + "System.Runtime.InteropServices": "8.0.0.0", + "System.Runtime.InteropServices.JavaScript": "8.0.0.0", + "System.Runtime.InteropServices.RuntimeInformation": "8.0.0.0", + "System.Runtime.Intrinsics": "8.0.0.0", + "System.Runtime.Loader": "8.0.0.0", + "System.Runtime.Numerics": "8.0.0.0", + "System.Runtime.Serialization": "4.0.0.0", + "System.Runtime.Serialization.Formatters": "8.0.0.0", + "System.Runtime.Serialization.Json": "8.0.0.0", + "System.Runtime.Serialization.Primitives": "8.0.0.0", + "System.Runtime.Serialization.Xml": "8.0.0.0", + "System.Security.AccessControl": "8.0.0.0", + "System.Security.Claims": "8.0.0.0", + "System.Security.Cryptography.Algorithms": "8.0.0.0", + "System.Security.Cryptography.Cng": "8.0.0.0", + "System.Security.Cryptography.Csp": "8.0.0.0", + "System.Security.Cryptography": "8.0.0.0", + "System.Security.Cryptography.Encoding": "8.0.0.0", + "System.Security.Cryptography.OpenSsl": "8.0.0.0", + "System.Security.Cryptography.Primitives": "8.0.0.0", + "System.Security.Cryptography.X509Certificates": "8.0.0.0", + "System.Security.Cryptography.Xml": "8.0.0.0", + "System.Security": "4.0.0.0", + "System.Security.Principal": "8.0.0.0", + "System.Security.Principal.Windows": "8.0.0.0", + "System.Security.SecureString": "8.0.0.0", + "System.ServiceModel.Web": "4.0.0.0", + "System.ServiceProcess": "4.0.0.0", + "System.Text.Encoding.CodePages": "8.0.0.0", + "System.Text.Encoding": "8.0.0.0", + "System.Text.Encoding.Extensions": "8.0.0.0", + "System.Text.Encodings.Web.Reference": "8.0.0.0", + "System.Text.Json.Reference": "8.0.0.0", + "System.Text.RegularExpressions": "8.0.0.0", + "System.Threading.Channels": "8.0.0.0", + "System.Threading": "8.0.0.0", + "System.Threading.Overlapped": "8.0.0.0", + "System.Threading.RateLimiting": "8.0.0.0", + "System.Threading.Tasks.Dataflow": "8.0.0.0", + "System.Threading.Tasks": "8.0.0.0", + "System.Threading.Tasks.Extensions": "8.0.0.0", + "System.Threading.Tasks.Parallel": "8.0.0.0", + "System.Threading.Thread": "8.0.0.0", + "System.Threading.ThreadPool": "8.0.0.0", + "System.Threading.Timer": "8.0.0.0", + "System.Transactions": "4.0.0.0", + "System.Transactions.Local": "8.0.0.0", + "System.ValueTuple": "8.0.0.0", + "System.Web": "4.0.0.0", + "System.Web.HttpUtility": "8.0.0.0", + "System.Windows": "4.0.0.0", + "System.Xml": "4.0.0.0", + "System.Xml.Linq": "4.0.0.0", + "System.Xml.ReaderWriter": "8.0.0.0", + "System.Xml.Serialization": "4.0.0.0", + "System.Xml.XDocument": "8.0.0.0", + "System.Xml.XmlDocument": "8.0.0.0", + "System.Xml.XmlSerializer": "8.0.0.0", + "System.Xml.XPath": "8.0.0.0", + "System.Xml.XPath.XDocument": "8.0.0.0", + "WindowsBase": "4.0.0.0" }, "runtime": { "Chemistry Cafe API.dll": {} + }, + "compile": { + "Chemistry Cafe API.dll": {} + } + }, + "Microsoft.ApplicationInsights/2.22.0": { + "dependencies": { + "System.Diagnostics.DiagnosticSource": "8.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": { + "assemblyVersion": "2.22.0.997", + "fileVersion": "2.22.0.997" + } + }, + "compile": { + "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": {} + } + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.4": { + "dependencies": { + "Microsoft.AspNetCore.TestHost": "8.0.4", + "Microsoft.Extensions.DependencyModel": "8.0.0", + "Microsoft.Extensions.Hosting": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "assemblyVersion": "8.0.4.0", + "fileVersion": "8.0.424.17014" + } + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": {} + } + }, + "Microsoft.AspNetCore.TestHost/8.0.4": { + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "assemblyVersion": "8.0.4.0", + "fileVersion": "8.0.424.17014" + } + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": {} + } + }, + "Microsoft.CodeCoverage/17.9.0": { + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.724.7204" + } + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} } }, "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, + "Microsoft.Extensions.Configuration/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "System.Text.Json": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } + }, "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {}, - "Microsoft.Extensions.Logging.Abstractions/7.0.1": {}, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": {} + } + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.DiagnosticSource": "8.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": {}, + "Microsoft.Extensions.Hosting/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Logging.Console": "8.0.0", + "Microsoft.Extensions.Logging.Debug": "8.0.0", + "Microsoft.Extensions.Logging.EventLog": "8.0.0", + "Microsoft.Extensions.Logging.EventSource": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Logging/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Text.Json": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.EventLog": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0", + "System.Text.Json": "8.0.0" + } + }, + "Microsoft.Extensions.Options/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Primitives/8.0.0": {}, + "Microsoft.NET.Test.Sdk/17.9.0": { + "dependencies": { + "Microsoft.CodeCoverage": "17.9.0", + "Microsoft.TestPlatform.TestHost": "17.9.0" + } + }, "Microsoft.OpenApi/1.2.3": { "runtime": { "lib/netstandard2.0/Microsoft.OpenApi.dll": { "assemblyVersion": "1.2.3.0", "fileVersion": "1.2.3.0" } + }, + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": {} + } + }, + "Microsoft.Testing.Extensions.Telemetry/1.1.0": { + "dependencies": { + "Microsoft.ApplicationInsights": "2.22.0", + "Microsoft.Testing.Platform": "1.1.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": { + "assemblyVersion": "1.1.0.0", + "fileVersion": "1.100.24.20301" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": {} + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions/1.1.0": { + "dependencies": { + "Microsoft.Testing.Platform": "1.1.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": { + "assemblyVersion": "1.1.0.0", + "fileVersion": "1.100.24.20301" + } + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": {} + } + }, + "Microsoft.Testing.Extensions.VSTestBridge/1.1.0": { + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.9.0", + "Microsoft.Testing.Extensions.Telemetry": "1.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "1.1.0", + "Microsoft.Testing.Platform": "1.1.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.dll": { + "assemblyVersion": "1.1.0.0", + "fileVersion": "1.100.24.20301" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.dll": {} + } + }, + "Microsoft.Testing.Platform/1.1.0": { + "runtime": { + "lib/net8.0/Microsoft.Testing.Platform.dll": { + "assemblyVersion": "1.1.0.0", + "fileVersion": "1.100.24.20301" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.Testing.Platform.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Platform.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Platform.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Platform.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Platform.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Platform.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Platform.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Platform.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Platform.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Platform.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Platform.dll": {} + } + }, + "Microsoft.Testing.Platform.MSBuild/1.1.0": { + "dependencies": { + "Microsoft.Testing.Platform": "1.1.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.dll": { + "assemblyVersion": "1.1.0.0", + "fileVersion": "1.100.24.20301" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.dll": {} + } + }, + "Microsoft.TestPlatform.ObjectModel/17.9.0": { + "dependencies": { + "System.Reflection.Metadata": "1.6.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + } + }, + "Microsoft.TestPlatform.TestHost/17.9.0": { + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.9.0", + "Newtonsoft.Json": "13.0.1" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + }, + "lib/netcoreapp3.1/testhost.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.900.24.10602" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": {} } }, "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": {}, + "MSTest.TestAdapter/3.3.1": { + "dependencies": { + "Microsoft.Testing.Extensions.VSTestBridge": "1.1.0", + "Microsoft.Testing.Platform.MSBuild": "1.1.0" + } + }, + "MSTest.TestFramework/3.3.1": { + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "assemblyVersion": "14.0.0.0", + "fileVersion": "3.300.124.20402" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hant" + } + }, + "compile": { + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": {} + } + }, "MySqlConnector/2.3.5": { "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" }, "runtime": { "lib/net8.0/MySqlConnector.dll": { "assemblyVersion": "2.0.0.0", "fileVersion": "2.3.5.0" } + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": {} } }, "MySqlConnector.DependencyInjection/2.3.5": { @@ -50,6 +1221,20 @@ "assemblyVersion": "2.0.0.0", "fileVersion": "2.3.5.0" } + }, + "compile": { + "lib/net7.0/MySqlConnector.DependencyInjection.dll": {} + } + }, + "Newtonsoft.Json/13.0.1": { + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.1.25517" + } + }, + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.dll": {} } }, "Swashbuckle.AspNetCore/6.5.0": { @@ -69,6 +1254,9 @@ "assemblyVersion": "6.5.0.0", "fileVersion": "6.5.0.0" } + }, + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": {} } }, "Swashbuckle.AspNetCore.SwaggerGen/6.5.0": { @@ -80,6 +1268,9 @@ "assemblyVersion": "6.5.0.0", "fileVersion": "6.5.0.0" } + }, + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {} } }, "Swashbuckle.AspNetCore.SwaggerUI/6.5.0": { @@ -88,92 +1279,3800 @@ "assemblyVersion": "6.5.0.0", "fileVersion": "6.5.0.0" } + }, + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {} } - } - } - }, - "libraries": { - "Chemistry Cafe API/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/7.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pkeBFx0vqMW/A3aUVHh7MPu3WkBhaVlezhSZeb1c9XD0vUReYH1TLFSy5MxJgZfmz5LZzYoErMorlYZiwpOoNA==", - "path": "microsoft.extensions.logging.abstractions/7.0.1", - "hashPath": "microsoft.extensions.logging.abstractions.7.0.1.nupkg.sha512" - }, - "Microsoft.OpenApi/1.2.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", - "path": "microsoft.openapi/1.2.3", - "hashPath": "microsoft.openapi.1.2.3.nupkg.sha512" - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7GOQdMzQcH7o/bPFL/I2kQEgMnq2pYZ+exhGb9nNqs624K9w2jB2zieh4sOH9+a01i/G9iTWfeUI3IGMF7SKNg==", - "path": "microsoft.visualstudio.azure.containers.tools.targets/1.19.6", - "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.19.6.nupkg.sha512" - }, - "MySqlConnector/2.3.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", - "path": "mysqlconnector/2.3.5", - "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" - }, - "MySqlConnector.DependencyInjection/2.3.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DZ8cSOWyA/OH0T2CCV7L7Cq3ns8KDDQPgGYH8L7322096ACjsmjkb5+aRmZ3ZSvL7dbCtizpi6KqVpafRxrKRg==", - "path": "mysqlconnector.dependencyinjection/2.3.5", - "hashPath": "mysqlconnector.dependencyinjection.2.3.5.nupkg.sha512" - }, - "Swashbuckle.AspNetCore/6.5.0": { + }, + "System.Diagnostics.DiagnosticSource/8.0.0": {}, + "System.Diagnostics.EventLog/8.0.0": {}, + "System.IO.Pipelines/8.0.0": {}, + "System.Reflection.Metadata/1.6.0": {}, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.0": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "xunit.abstractions/2.0.3": { + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + }, + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": {} + } + }, + "xunit.extensibility.core/2.7.1": { + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "assemblyVersion": "2.7.1.0", + "fileVersion": "2.7.1.0" + } + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": {} + } + }, + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions/14.0.0.0": { + "runtime": { + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": { + "assemblyVersion": "14.0.0.0", + "fileVersion": "3.300.124.20402" + } + }, + "compile": { + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": {} + } + }, + "Microsoft.AspNetCore.Antiforgery/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Antiforgery.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication.BearerToken/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.BearerToken.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication.Cookies/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.Cookies.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication.Core/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authentication.OAuth/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authentication.OAuth.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authorization/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authorization.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Authorization.Policy/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Authorization.Policy.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components.Authorization/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.Authorization.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components.Endpoints/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.Endpoints.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components.Forms/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.Forms.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components.Server/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.Server.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Components.Web/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Components.Web.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Connections.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Connections.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.CookiePolicy/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.CookiePolicy.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Cors/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Cors.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Cryptography.Internal/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Cryptography.Internal.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Cryptography.KeyDerivation/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Cryptography.KeyDerivation.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.DataProtection.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.DataProtection.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.DataProtection/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.DataProtection.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.DataProtection.Extensions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.DataProtection.Extensions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Diagnostics.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Diagnostics.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Diagnostics/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Diagnostics.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Diagnostics.HealthChecks/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Diagnostics.HealthChecks.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.HostFiltering/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.HostFiltering.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Hosting.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Hosting.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Hosting/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Hosting.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Html.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Html.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Connections.Common/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Connections.Common.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Connections/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Connections.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Extensions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Extensions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Features/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Features.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Http.Results/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Http.Results.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.HttpLogging/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.HttpLogging.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.HttpOverrides/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.HttpOverrides.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.HttpsPolicy/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.HttpsPolicy.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Identity/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Identity.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Localization/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Localization.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Localization.Routing/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Localization.Routing.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Metadata/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Metadata.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.ApiExplorer/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.ApiExplorer.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Core/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Cors/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Cors.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.DataAnnotations/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.DataAnnotations.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Formatters.Json/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Formatters.Json.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Formatters.Xml/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Formatters.Xml.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Localization/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Localization.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.Razor/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.Razor.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.RazorPages/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.RazorPages.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.TagHelpers/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.TagHelpers.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Mvc.ViewFeatures/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Mvc.ViewFeatures.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.OutputCaching/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.OutputCaching.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.RateLimiting/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.RateLimiting.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Razor/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Razor.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Razor.Runtime/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Razor.Runtime.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.RequestDecompression/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.RequestDecompression.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.ResponseCaching.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.ResponseCaching.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.ResponseCaching/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.ResponseCaching.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.ResponseCompression/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.ResponseCompression.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Rewrite/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Rewrite.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Routing.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Routing.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Routing/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Routing.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.HttpSys/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.HttpSys.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.IIS/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.IIS.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.IISIntegration/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.IISIntegration.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.Kestrel.Core/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.Kestrel.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.Kestrel/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.Kestrel.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.Session/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.Session.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.SignalR.Common/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.SignalR.Common.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.SignalR.Core/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.SignalR.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.SignalR/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.SignalR.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.SignalR.Protocols.Json.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.StaticFiles/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.StaticFiles.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.WebSockets/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.WebSockets.dll": {} + }, + "compileOnly": true + }, + "Microsoft.AspNetCore.WebUtilities/8.0.0.0": { + "compile": { + "Microsoft.AspNetCore.WebUtilities.dll": {} + }, + "compileOnly": true + }, + "Microsoft.CSharp/8.0.0.0": { + "compile": { + "Microsoft.CSharp.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Caching.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Caching.Memory/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Caching.Memory.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Binder.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.CommandLine.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.CommandLine.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.FileExtensions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.FileExtensions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Ini/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.Ini.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Json.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.Json.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.KeyPerFile/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.KeyPerFile.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.UserSecrets.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.UserSecrets.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Configuration.Xml/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Configuration.Xml.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.DependencyInjection.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.DependencyInjection.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.DependencyInjection.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Diagnostics.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Diagnostics.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Diagnostics.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Diagnostics.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Diagnostics.HealthChecks.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Features/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Features.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.FileProviders.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.FileProviders.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.FileProviders.Composite/8.0.0.0": { + "compile": { + "Microsoft.Extensions.FileProviders.Composite.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.FileProviders.Embedded/8.0.0.0": { + "compile": { + "Microsoft.Extensions.FileProviders.Embedded.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.FileProviders.Physical.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.FileProviders.Physical.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.FileSystemGlobbing.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.FileSystemGlobbing.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Hosting.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Hosting.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Hosting.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Hosting.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Http/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Http.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Identity.Core/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Identity.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Identity.Stores/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Identity.Stores.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Localization.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Localization/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Localization.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.Abstractions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.Configuration.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.Configuration.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.Console.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.Console.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.Debug.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.Debug.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.EventLog.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.EventLog.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.EventSource.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.EventSource.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Logging.TraceSource/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Logging.TraceSource.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.ObjectPool/8.0.0.0": { + "compile": { + "Microsoft.Extensions.ObjectPool.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Options.ConfigurationExtensions.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Options.DataAnnotations/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Options.DataAnnotations.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Options.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Options.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.Primitives.Reference/8.0.0.0": { + "compile": { + "Microsoft.Extensions.Primitives.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Extensions.WebEncoders/8.0.0.0": { + "compile": { + "Microsoft.Extensions.WebEncoders.dll": {} + }, + "compileOnly": true + }, + "Microsoft.JSInterop/8.0.0.0": { + "compile": { + "Microsoft.JSInterop.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Net.Http.Headers/8.0.0.0": { + "compile": { + "Microsoft.Net.Http.Headers.dll": {} + }, + "compileOnly": true + }, + "Microsoft.VisualBasic.Core/13.0.0.0": { + "compile": { + "Microsoft.VisualBasic.Core.dll": {} + }, + "compileOnly": true + }, + "Microsoft.VisualBasic/10.0.0.0": { + "compile": { + "Microsoft.VisualBasic.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Win32.Primitives/8.0.0.0": { + "compile": { + "Microsoft.Win32.Primitives.dll": {} + }, + "compileOnly": true + }, + "Microsoft.Win32.Registry/8.0.0.0": { + "compile": { + "Microsoft.Win32.Registry.dll": {} + }, + "compileOnly": true + }, + "mscorlib/4.0.0.0": { + "compile": { + "mscorlib.dll": {} + }, + "compileOnly": true + }, + "netstandard/2.1.0.0": { + "compile": { + "netstandard.dll": {} + }, + "compileOnly": true + }, + "System.AppContext/8.0.0.0": { + "compile": { + "System.AppContext.dll": {} + }, + "compileOnly": true + }, + "System.Buffers/8.0.0.0": { + "compile": { + "System.Buffers.dll": {} + }, + "compileOnly": true + }, + "System.Collections.Concurrent/8.0.0.0": { + "compile": { + "System.Collections.Concurrent.dll": {} + }, + "compileOnly": true + }, + "System.Collections/8.0.0.0": { + "compile": { + "System.Collections.dll": {} + }, + "compileOnly": true + }, + "System.Collections.Immutable/8.0.0.0": { + "compile": { + "System.Collections.Immutable.dll": {} + }, + "compileOnly": true + }, + "System.Collections.NonGeneric/8.0.0.0": { + "compile": { + "System.Collections.NonGeneric.dll": {} + }, + "compileOnly": true + }, + "System.Collections.Specialized/8.0.0.0": { + "compile": { + "System.Collections.Specialized.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel.Annotations/8.0.0.0": { + "compile": { + "System.ComponentModel.Annotations.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel.DataAnnotations/4.0.0.0": { + "compile": { + "System.ComponentModel.DataAnnotations.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel/8.0.0.0": { + "compile": { + "System.ComponentModel.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel.EventBasedAsync/8.0.0.0": { + "compile": { + "System.ComponentModel.EventBasedAsync.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel.Primitives/8.0.0.0": { + "compile": { + "System.ComponentModel.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.ComponentModel.TypeConverter/8.0.0.0": { + "compile": { + "System.ComponentModel.TypeConverter.dll": {} + }, + "compileOnly": true + }, + "System.Configuration/4.0.0.0": { + "compile": { + "System.Configuration.dll": {} + }, + "compileOnly": true + }, + "System.Console/8.0.0.0": { + "compile": { + "System.Console.dll": {} + }, + "compileOnly": true + }, + "System.Core/4.0.0.0": { + "compile": { + "System.Core.dll": {} + }, + "compileOnly": true + }, + "System.Data.Common/8.0.0.0": { + "compile": { + "System.Data.Common.dll": {} + }, + "compileOnly": true + }, + "System.Data.DataSetExtensions/8.0.0.0": { + "compile": { + "System.Data.DataSetExtensions.dll": {} + }, + "compileOnly": true + }, + "System.Data/4.0.0.0": { + "compile": { + "System.Data.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.Contracts/8.0.0.0": { + "compile": { + "System.Diagnostics.Contracts.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.Debug/8.0.0.0": { + "compile": { + "System.Diagnostics.Debug.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.DiagnosticSource.Reference/8.0.0.0": { + "compile": { + "System.Diagnostics.DiagnosticSource.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.EventLog.Reference/8.0.0.0": { + "compile": { + "System.Diagnostics.EventLog.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.FileVersionInfo/8.0.0.0": { + "compile": { + "System.Diagnostics.FileVersionInfo.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.Process/8.0.0.0": { + "compile": { + "System.Diagnostics.Process.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.StackTrace/8.0.0.0": { + "compile": { + "System.Diagnostics.StackTrace.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.TextWriterTraceListener/8.0.0.0": { + "compile": { + "System.Diagnostics.TextWriterTraceListener.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.Tools/8.0.0.0": { + "compile": { + "System.Diagnostics.Tools.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.TraceSource/8.0.0.0": { + "compile": { + "System.Diagnostics.TraceSource.dll": {} + }, + "compileOnly": true + }, + "System.Diagnostics.Tracing/8.0.0.0": { + "compile": { + "System.Diagnostics.Tracing.dll": {} + }, + "compileOnly": true + }, + "System/4.0.0.0": { + "compile": { + "System.dll": {} + }, + "compileOnly": true + }, + "System.Drawing/4.0.0.0": { + "compile": { + "System.Drawing.dll": {} + }, + "compileOnly": true + }, + "System.Drawing.Primitives/8.0.0.0": { + "compile": { + "System.Drawing.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.Dynamic.Runtime/8.0.0.0": { + "compile": { + "System.Dynamic.Runtime.dll": {} + }, + "compileOnly": true + }, + "System.Formats.Asn1/8.0.0.0": { + "compile": { + "System.Formats.Asn1.dll": {} + }, + "compileOnly": true + }, + "System.Formats.Tar/8.0.0.0": { + "compile": { + "System.Formats.Tar.dll": {} + }, + "compileOnly": true + }, + "System.Globalization.Calendars/8.0.0.0": { + "compile": { + "System.Globalization.Calendars.dll": {} + }, + "compileOnly": true + }, + "System.Globalization/8.0.0.0": { + "compile": { + "System.Globalization.dll": {} + }, + "compileOnly": true + }, + "System.Globalization.Extensions/8.0.0.0": { + "compile": { + "System.Globalization.Extensions.dll": {} + }, + "compileOnly": true + }, + "System.IO.Compression.Brotli/8.0.0.0": { + "compile": { + "System.IO.Compression.Brotli.dll": {} + }, + "compileOnly": true + }, + "System.IO.Compression/8.0.0.0": { + "compile": { + "System.IO.Compression.dll": {} + }, + "compileOnly": true + }, + "System.IO.Compression.FileSystem/4.0.0.0": { + "compile": { + "System.IO.Compression.FileSystem.dll": {} + }, + "compileOnly": true + }, + "System.IO.Compression.ZipFile/8.0.0.0": { + "compile": { + "System.IO.Compression.ZipFile.dll": {} + }, + "compileOnly": true + }, + "System.IO/8.0.0.0": { + "compile": { + "System.IO.dll": {} + }, + "compileOnly": true + }, + "System.IO.FileSystem.AccessControl/8.0.0.0": { + "compile": { + "System.IO.FileSystem.AccessControl.dll": {} + }, + "compileOnly": true + }, + "System.IO.FileSystem/8.0.0.0": { + "compile": { + "System.IO.FileSystem.dll": {} + }, + "compileOnly": true + }, + "System.IO.FileSystem.DriveInfo/8.0.0.0": { + "compile": { + "System.IO.FileSystem.DriveInfo.dll": {} + }, + "compileOnly": true + }, + "System.IO.FileSystem.Primitives/8.0.0.0": { + "compile": { + "System.IO.FileSystem.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.IO.FileSystem.Watcher/8.0.0.0": { + "compile": { + "System.IO.FileSystem.Watcher.dll": {} + }, + "compileOnly": true + }, + "System.IO.IsolatedStorage/8.0.0.0": { + "compile": { + "System.IO.IsolatedStorage.dll": {} + }, + "compileOnly": true + }, + "System.IO.MemoryMappedFiles/8.0.0.0": { + "compile": { + "System.IO.MemoryMappedFiles.dll": {} + }, + "compileOnly": true + }, + "System.IO.Pipelines.Reference/8.0.0.0": { + "compile": { + "System.IO.Pipelines.dll": {} + }, + "compileOnly": true + }, + "System.IO.Pipes.AccessControl/8.0.0.0": { + "compile": { + "System.IO.Pipes.AccessControl.dll": {} + }, + "compileOnly": true + }, + "System.IO.Pipes/8.0.0.0": { + "compile": { + "System.IO.Pipes.dll": {} + }, + "compileOnly": true + }, + "System.IO.UnmanagedMemoryStream/8.0.0.0": { + "compile": { + "System.IO.UnmanagedMemoryStream.dll": {} + }, + "compileOnly": true + }, + "System.Linq/8.0.0.0": { + "compile": { + "System.Linq.dll": {} + }, + "compileOnly": true + }, + "System.Linq.Expressions/8.0.0.0": { + "compile": { + "System.Linq.Expressions.dll": {} + }, + "compileOnly": true + }, + "System.Linq.Parallel/8.0.0.0": { + "compile": { + "System.Linq.Parallel.dll": {} + }, + "compileOnly": true + }, + "System.Linq.Queryable/8.0.0.0": { + "compile": { + "System.Linq.Queryable.dll": {} + }, + "compileOnly": true + }, + "System.Memory/8.0.0.0": { + "compile": { + "System.Memory.dll": {} + }, + "compileOnly": true + }, + "System.Net/4.0.0.0": { + "compile": { + "System.Net.dll": {} + }, + "compileOnly": true + }, + "System.Net.Http/8.0.0.0": { + "compile": { + "System.Net.Http.dll": {} + }, + "compileOnly": true + }, + "System.Net.Http.Json/8.0.0.0": { + "compile": { + "System.Net.Http.Json.dll": {} + }, + "compileOnly": true + }, + "System.Net.HttpListener/8.0.0.0": { + "compile": { + "System.Net.HttpListener.dll": {} + }, + "compileOnly": true + }, + "System.Net.Mail/8.0.0.0": { + "compile": { + "System.Net.Mail.dll": {} + }, + "compileOnly": true + }, + "System.Net.NameResolution/8.0.0.0": { + "compile": { + "System.Net.NameResolution.dll": {} + }, + "compileOnly": true + }, + "System.Net.NetworkInformation/8.0.0.0": { + "compile": { + "System.Net.NetworkInformation.dll": {} + }, + "compileOnly": true + }, + "System.Net.Ping/8.0.0.0": { + "compile": { + "System.Net.Ping.dll": {} + }, + "compileOnly": true + }, + "System.Net.Primitives/8.0.0.0": { + "compile": { + "System.Net.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.Net.Quic/8.0.0.0": { + "compile": { + "System.Net.Quic.dll": {} + }, + "compileOnly": true + }, + "System.Net.Requests/8.0.0.0": { + "compile": { + "System.Net.Requests.dll": {} + }, + "compileOnly": true + }, + "System.Net.Security/8.0.0.0": { + "compile": { + "System.Net.Security.dll": {} + }, + "compileOnly": true + }, + "System.Net.ServicePoint/8.0.0.0": { + "compile": { + "System.Net.ServicePoint.dll": {} + }, + "compileOnly": true + }, + "System.Net.Sockets/8.0.0.0": { + "compile": { + "System.Net.Sockets.dll": {} + }, + "compileOnly": true + }, + "System.Net.WebClient/8.0.0.0": { + "compile": { + "System.Net.WebClient.dll": {} + }, + "compileOnly": true + }, + "System.Net.WebHeaderCollection/8.0.0.0": { + "compile": { + "System.Net.WebHeaderCollection.dll": {} + }, + "compileOnly": true + }, + "System.Net.WebProxy/8.0.0.0": { + "compile": { + "System.Net.WebProxy.dll": {} + }, + "compileOnly": true + }, + "System.Net.WebSockets.Client/8.0.0.0": { + "compile": { + "System.Net.WebSockets.Client.dll": {} + }, + "compileOnly": true + }, + "System.Net.WebSockets/8.0.0.0": { + "compile": { + "System.Net.WebSockets.dll": {} + }, + "compileOnly": true + }, + "System.Numerics/4.0.0.0": { + "compile": { + "System.Numerics.dll": {} + }, + "compileOnly": true + }, + "System.Numerics.Vectors/8.0.0.0": { + "compile": { + "System.Numerics.Vectors.dll": {} + }, + "compileOnly": true + }, + "System.ObjectModel/8.0.0.0": { + "compile": { + "System.ObjectModel.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.DispatchProxy/8.0.0.0": { + "compile": { + "System.Reflection.DispatchProxy.dll": {} + }, + "compileOnly": true + }, + "System.Reflection/8.0.0.0": { + "compile": { + "System.Reflection.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Emit/8.0.0.0": { + "compile": { + "System.Reflection.Emit.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Emit.ILGeneration/8.0.0.0": { + "compile": { + "System.Reflection.Emit.ILGeneration.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Emit.Lightweight/8.0.0.0": { + "compile": { + "System.Reflection.Emit.Lightweight.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Extensions/8.0.0.0": { + "compile": { + "System.Reflection.Extensions.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Metadata.Reference/8.0.0.0": { + "compile": { + "System.Reflection.Metadata.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.Primitives/8.0.0.0": { + "compile": { + "System.Reflection.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.Reflection.TypeExtensions/8.0.0.0": { + "compile": { + "System.Reflection.TypeExtensions.dll": {} + }, + "compileOnly": true + }, + "System.Resources.Reader/8.0.0.0": { + "compile": { + "System.Resources.Reader.dll": {} + }, + "compileOnly": true + }, + "System.Resources.ResourceManager/8.0.0.0": { + "compile": { + "System.Resources.ResourceManager.dll": {} + }, + "compileOnly": true + }, + "System.Resources.Writer/8.0.0.0": { + "compile": { + "System.Resources.Writer.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.CompilerServices.Unsafe/8.0.0.0": { + "compile": { + "System.Runtime.CompilerServices.Unsafe.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.CompilerServices.VisualC/8.0.0.0": { + "compile": { + "System.Runtime.CompilerServices.VisualC.dll": {} + }, + "compileOnly": true + }, + "System.Runtime/8.0.0.0": { + "compile": { + "System.Runtime.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Extensions/8.0.0.0": { + "compile": { + "System.Runtime.Extensions.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Handles/8.0.0.0": { + "compile": { + "System.Runtime.Handles.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.InteropServices/8.0.0.0": { + "compile": { + "System.Runtime.InteropServices.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.InteropServices.JavaScript/8.0.0.0": { + "compile": { + "System.Runtime.InteropServices.JavaScript.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.InteropServices.RuntimeInformation/8.0.0.0": { + "compile": { + "System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Intrinsics/8.0.0.0": { + "compile": { + "System.Runtime.Intrinsics.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Loader/8.0.0.0": { + "compile": { + "System.Runtime.Loader.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Numerics/8.0.0.0": { + "compile": { + "System.Runtime.Numerics.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Serialization/4.0.0.0": { + "compile": { + "System.Runtime.Serialization.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Serialization.Formatters/8.0.0.0": { + "compile": { + "System.Runtime.Serialization.Formatters.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Serialization.Json/8.0.0.0": { + "compile": { + "System.Runtime.Serialization.Json.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Serialization.Primitives/8.0.0.0": { + "compile": { + "System.Runtime.Serialization.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.Runtime.Serialization.Xml/8.0.0.0": { + "compile": { + "System.Runtime.Serialization.Xml.dll": {} + }, + "compileOnly": true + }, + "System.Security.AccessControl/8.0.0.0": { + "compile": { + "System.Security.AccessControl.dll": {} + }, + "compileOnly": true + }, + "System.Security.Claims/8.0.0.0": { + "compile": { + "System.Security.Claims.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Algorithms/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Algorithms.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Cng/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Cng.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Csp/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Csp.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography/8.0.0.0": { + "compile": { + "System.Security.Cryptography.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Encoding/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Encoding.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.OpenSsl/8.0.0.0": { + "compile": { + "System.Security.Cryptography.OpenSsl.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Primitives/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Primitives.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.X509Certificates/8.0.0.0": { + "compile": { + "System.Security.Cryptography.X509Certificates.dll": {} + }, + "compileOnly": true + }, + "System.Security.Cryptography.Xml/8.0.0.0": { + "compile": { + "System.Security.Cryptography.Xml.dll": {} + }, + "compileOnly": true + }, + "System.Security/4.0.0.0": { + "compile": { + "System.Security.dll": {} + }, + "compileOnly": true + }, + "System.Security.Principal/8.0.0.0": { + "compile": { + "System.Security.Principal.dll": {} + }, + "compileOnly": true + }, + "System.Security.Principal.Windows/8.0.0.0": { + "compile": { + "System.Security.Principal.Windows.dll": {} + }, + "compileOnly": true + }, + "System.Security.SecureString/8.0.0.0": { + "compile": { + "System.Security.SecureString.dll": {} + }, + "compileOnly": true + }, + "System.ServiceModel.Web/4.0.0.0": { + "compile": { + "System.ServiceModel.Web.dll": {} + }, + "compileOnly": true + }, + "System.ServiceProcess/4.0.0.0": { + "compile": { + "System.ServiceProcess.dll": {} + }, + "compileOnly": true + }, + "System.Text.Encoding.CodePages/8.0.0.0": { + "compile": { + "System.Text.Encoding.CodePages.dll": {} + }, + "compileOnly": true + }, + "System.Text.Encoding/8.0.0.0": { + "compile": { + "System.Text.Encoding.dll": {} + }, + "compileOnly": true + }, + "System.Text.Encoding.Extensions/8.0.0.0": { + "compile": { + "System.Text.Encoding.Extensions.dll": {} + }, + "compileOnly": true + }, + "System.Text.Encodings.Web.Reference/8.0.0.0": { + "compile": { + "System.Text.Encodings.Web.dll": {} + }, + "compileOnly": true + }, + "System.Text.Json.Reference/8.0.0.0": { + "compile": { + "System.Text.Json.dll": {} + }, + "compileOnly": true + }, + "System.Text.RegularExpressions/8.0.0.0": { + "compile": { + "System.Text.RegularExpressions.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Channels/8.0.0.0": { + "compile": { + "System.Threading.Channels.dll": {} + }, + "compileOnly": true + }, + "System.Threading/8.0.0.0": { + "compile": { + "System.Threading.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Overlapped/8.0.0.0": { + "compile": { + "System.Threading.Overlapped.dll": {} + }, + "compileOnly": true + }, + "System.Threading.RateLimiting/8.0.0.0": { + "compile": { + "System.Threading.RateLimiting.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Tasks.Dataflow/8.0.0.0": { + "compile": { + "System.Threading.Tasks.Dataflow.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Tasks/8.0.0.0": { + "compile": { + "System.Threading.Tasks.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Tasks.Extensions/8.0.0.0": { + "compile": { + "System.Threading.Tasks.Extensions.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Tasks.Parallel/8.0.0.0": { + "compile": { + "System.Threading.Tasks.Parallel.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Thread/8.0.0.0": { + "compile": { + "System.Threading.Thread.dll": {} + }, + "compileOnly": true + }, + "System.Threading.ThreadPool/8.0.0.0": { + "compile": { + "System.Threading.ThreadPool.dll": {} + }, + "compileOnly": true + }, + "System.Threading.Timer/8.0.0.0": { + "compile": { + "System.Threading.Timer.dll": {} + }, + "compileOnly": true + }, + "System.Transactions/4.0.0.0": { + "compile": { + "System.Transactions.dll": {} + }, + "compileOnly": true + }, + "System.Transactions.Local/8.0.0.0": { + "compile": { + "System.Transactions.Local.dll": {} + }, + "compileOnly": true + }, + "System.ValueTuple/8.0.0.0": { + "compile": { + "System.ValueTuple.dll": {} + }, + "compileOnly": true + }, + "System.Web/4.0.0.0": { + "compile": { + "System.Web.dll": {} + }, + "compileOnly": true + }, + "System.Web.HttpUtility/8.0.0.0": { + "compile": { + "System.Web.HttpUtility.dll": {} + }, + "compileOnly": true + }, + "System.Windows/4.0.0.0": { + "compile": { + "System.Windows.dll": {} + }, + "compileOnly": true + }, + "System.Xml/4.0.0.0": { + "compile": { + "System.Xml.dll": {} + }, + "compileOnly": true + }, + "System.Xml.Linq/4.0.0.0": { + "compile": { + "System.Xml.Linq.dll": {} + }, + "compileOnly": true + }, + "System.Xml.ReaderWriter/8.0.0.0": { + "compile": { + "System.Xml.ReaderWriter.dll": {} + }, + "compileOnly": true + }, + "System.Xml.Serialization/4.0.0.0": { + "compile": { + "System.Xml.Serialization.dll": {} + }, + "compileOnly": true + }, + "System.Xml.XDocument/8.0.0.0": { + "compile": { + "System.Xml.XDocument.dll": {} + }, + "compileOnly": true + }, + "System.Xml.XmlDocument/8.0.0.0": { + "compile": { + "System.Xml.XmlDocument.dll": {} + }, + "compileOnly": true + }, + "System.Xml.XmlSerializer/8.0.0.0": { + "compile": { + "System.Xml.XmlSerializer.dll": {} + }, + "compileOnly": true + }, + "System.Xml.XPath/8.0.0.0": { + "compile": { + "System.Xml.XPath.dll": {} + }, + "compileOnly": true + }, + "System.Xml.XPath.XDocument/8.0.0.0": { + "compile": { + "System.Xml.XPath.XDocument.dll": {} + }, + "compileOnly": true + }, + "WindowsBase/4.0.0.0": { + "compile": { + "WindowsBase.dll": {} + }, + "compileOnly": true + } + } + }, + "libraries": { + "Chemistry Cafe API/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.ApplicationInsights/2.22.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3AOM9bZtku7RQwHyMEY3tQMrHIgjcfRDa6YQpd/QG2LDGvMydSlL9Di+8LLMt7J2RDdfJ7/2jdYv6yHcMJAnNw==", + "path": "microsoft.applicationinsights/2.22.0", + "hashPath": "microsoft.applicationinsights.2.22.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e6IVsUq7zmAO/T4GGd00j1yxh6PBHF1PlQLaiFV/nM1jePH7Rbu+zVoXCRUDC2KOlHnPCym+eqFFlZkNNO2CvQ==", + "path": "microsoft.aspnetcore.mvc.testing/8.0.4", + "hashPath": "microsoft.aspnetcore.mvc.testing.8.0.4.nupkg.sha512" + }, + "Microsoft.AspNetCore.TestHost/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NQ5kHSo0aazGFbZ/3J2Fr/uKtOd43H3vJLoXoMY9GXUQppbfXco3zrYF9uBB7zkLsuFh9McBln1izgycYGscUA==", + "path": "microsoft.aspnetcore.testhost/8.0.4", + "hashPath": "microsoft.aspnetcore.testhost.8.0.4.nupkg.sha512" + }, + "Microsoft.CodeCoverage/17.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RGD37ZSrratfScYXm7M0HjvxMxZyWZL4jm+XgMZbkIY1UPgjUpbNA/t+WTGj/rC/0Hm9A3IrH3ywbKZkOCnoZA==", + "path": "microsoft.codecoverage/17.9.0", + "hashPath": "microsoft.codecoverage.17.9.0.nupkg.sha512" + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "path": "microsoft.extensions.configuration/8.0.0", + "hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==", + "path": "microsoft.extensions.configuration.binder/8.0.0", + "hashPath": "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "hashPath": "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "hashPath": "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==", + "path": "microsoft.extensions.configuration.fileextensions/8.0.0", + "hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==", + "path": "microsoft.extensions.configuration.json/8.0.0", + "hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==", + "path": "microsoft.extensions.configuration.usersecrets/8.0.0", + "hashPath": "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "path": "microsoft.extensions.dependencyinjection/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NSmDw3K0ozNDgShSIpsZcbFIzBX4w28nDag+TfaQujkXGazBm+lid5onlWoCBy4VsLxqnnKjEBbGSJVWJMf43g==", + "path": "microsoft.extensions.dependencymodel/8.0.0", + "hashPath": "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==", + "path": "microsoft.extensions.diagnostics/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==", + "path": "microsoft.extensions.hosting/8.0.0", + "hashPath": "microsoft.extensions.hosting.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==", + "path": "microsoft.extensions.hosting.abstractions/8.0.0", + "hashPath": "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "path": "microsoft.extensions.logging/8.0.0", + "hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "path": "microsoft.extensions.logging.abstractions/8.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==", + "path": "microsoft.extensions.logging.configuration/8.0.0", + "hashPath": "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==", + "path": "microsoft.extensions.logging.console/8.0.0", + "hashPath": "microsoft.extensions.logging.console.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==", + "path": "microsoft.extensions.logging.debug/8.0.0", + "hashPath": "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==", + "path": "microsoft.extensions.logging.eventlog/8.0.0", + "hashPath": "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==", + "path": "microsoft.extensions.logging.eventsource/8.0.0", + "hashPath": "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "path": "microsoft.extensions.options/8.0.0", + "hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "hashPath": "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "path": "microsoft.extensions.primitives/8.0.0", + "hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512" + }, + "Microsoft.NET.Test.Sdk/17.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7GUNAUbJYn644jzwLm5BD3a2p9C1dmP8Hr6fDPDxgItQk9hBs1Svdxzz07KQ/UphMSmgza9AbijBJGmw5D658A==", + "path": "microsoft.net.test.sdk/17.9.0", + "hashPath": "microsoft.net.test.sdk.17.9.0.nupkg.sha512" + }, + "Microsoft.OpenApi/1.2.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", + "path": "microsoft.openapi/1.2.3", + "hashPath": "microsoft.openapi.1.2.3.nupkg.sha512" + }, + "Microsoft.Testing.Extensions.Telemetry/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-K9xjzIlNxUHHvVCYoQYjk3ojnNgS9Jhb9nHSuEAMl5QGhziNdHztGM3fzRQ72KRIA9MyeU75fCex8YZlsRkF1g==", + "path": "microsoft.testing.extensions.telemetry/1.1.0", + "hashPath": "microsoft.testing.extensions.telemetry.1.1.0.nupkg.sha512" + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mspVaUbMAmsMg6IQaGJkypeCCYmUYYQkxFSRbSGdsTlzu9dpsH6spavSL6DUtkR7qd07ulYDlPCJ/yBU6TYdug==", + "path": "microsoft.testing.extensions.trxreport.abstractions/1.1.0", + "hashPath": "microsoft.testing.extensions.trxreport.abstractions.1.1.0.nupkg.sha512" + }, + "Microsoft.Testing.Extensions.VSTestBridge/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6IcxNS8lARWd/7K/dDC0IAXRnUpQ9kC0Cb+Eu8biZG40pVDZoDEyn4QIuicJvPSCT1C72AtSUqKzZASO7i4gPg==", + "path": "microsoft.testing.extensions.vstestbridge/1.1.0", + "hashPath": "microsoft.testing.extensions.vstestbridge.1.1.0.nupkg.sha512" + }, + "Microsoft.Testing.Platform/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-on8S7PvvR9Ai5gL/DKN5KrE8e4ctsUIMEzCGY916D+8xj5W/ho0ru9OJiNk7vWFbQrGwpLs87xE7Q8RPLSO/og==", + "path": "microsoft.testing.platform/1.1.0", + "hashPath": "microsoft.testing.platform.1.1.0.nupkg.sha512" + }, + "Microsoft.Testing.Platform.MSBuild/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-n2F3OP27qPCSBDfi25DfIeuq3UtzB/BUlXJBCqu1HQc8n7ak5gfzWlkJwlOIk2PAltocdJWQHMfeVYfcLkZ41g==", + "path": "microsoft.testing.platform.msbuild/1.1.0", + "hashPath": "microsoft.testing.platform.msbuild.1.1.0.nupkg.sha512" + }, + "Microsoft.TestPlatform.ObjectModel/17.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1ilw/8vgmjLyKU+2SKXKXaOqpYFJCQfGqGz+x0cosl981VzjrY74Sv6qAJv+neZMZ9ZMxF3ArN6kotaQ4uvEBw==", + "path": "microsoft.testplatform.objectmodel/17.9.0", + "hashPath": "microsoft.testplatform.objectmodel.17.9.0.nupkg.sha512" + }, + "Microsoft.TestPlatform.TestHost/17.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Spmg7Wx49Ya3SxBjyeAR+nQpjMTKZwTwpZ7KyeOTIqI/WHNPnBU4HUvl5kuHPQAwGWqMy4FGZja1HvEwvoaDiA==", + "path": "microsoft.testplatform.testhost/17.9.0", + "hashPath": "microsoft.testplatform.testhost.17.9.0.nupkg.sha512" + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7GOQdMzQcH7o/bPFL/I2kQEgMnq2pYZ+exhGb9nNqs624K9w2jB2zieh4sOH9+a01i/G9iTWfeUI3IGMF7SKNg==", + "path": "microsoft.visualstudio.azure.containers.tools.targets/1.19.6", + "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.19.6.nupkg.sha512" + }, + "MSTest.TestAdapter/3.3.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ddSsUEQKibWamkosqbQmuhb1DpToI2LJb01yEPDA4MIhXJah4oBOARlLLI7bjWSkkRLDz/iPlx2Uac9qgmHlHg==", + "path": "mstest.testadapter/3.3.1", + "hashPath": "mstest.testadapter.3.3.1.nupkg.sha512" + }, + "MSTest.TestFramework/3.3.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-020SuA2p8N7o+/AHC0SLgzGpyS1hNjR8m5tWxnuGqJ3HeJhArUbuPAU8RZr8Ll38ij8oiutGCkQ/G+ymyO51Ow==", + "path": "mstest.testframework/3.3.1", + "hashPath": "mstest.testframework.3.3.1.nupkg.sha512" + }, + "MySqlConnector/2.3.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "path": "mysqlconnector/2.3.5", + "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" + }, + "MySqlConnector.DependencyInjection/2.3.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DZ8cSOWyA/OH0T2CCV7L7Cq3ns8KDDQPgGYH8L7322096ACjsmjkb5+aRmZ3ZSvL7dbCtizpi6KqVpafRxrKRg==", + "path": "mysqlconnector.dependencyinjection/2.3.5", + "hashPath": "mysqlconnector.dependencyinjection.2.3.5.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" + }, + "Swashbuckle.AspNetCore/6.5.0": { "type": "package", "serviceable": true, "sha512": "sha512-FK05XokgjgwlCI6wCT+D4/abtQkL1X1/B9Oas6uIwHFmYrIO9WUD5aLC9IzMs9GnHfUXOtXZ2S43gN1mhs5+aA==", "path": "swashbuckle.aspnetcore/6.5.0", "hashPath": "swashbuckle.aspnetcore.6.5.0.nupkg.sha512" }, - "Swashbuckle.AspNetCore.Swagger/6.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XWmCmqyFmoItXKFsQSwQbEAsjDKcxlNf1l+/Ki42hcb6LjKL8m5Db69OTvz5vLonMSRntYO1XLqz0OP+n3vKnA==", - "path": "swashbuckle.aspnetcore.swagger/6.5.0", - "hashPath": "swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512" + "Swashbuckle.AspNetCore.Swagger/6.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XWmCmqyFmoItXKFsQSwQbEAsjDKcxlNf1l+/Ki42hcb6LjKL8m5Db69OTvz5vLonMSRntYO1XLqz0OP+n3vKnA==", + "path": "swashbuckle.aspnetcore.swagger/6.5.0", + "hashPath": "swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Y/qW8Qdg9OEs7V013tt+94OdPxbRdbhcEbw4NiwGvf4YBcfhL/y7qp/Mjv/cENsQ2L3NqJ2AOu94weBy/h4KvA==", + "path": "swashbuckle.aspnetcore.swaggergen/6.5.0", + "hashPath": "swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OvbvxX+wL8skxTBttcBsVxdh73Fag4xwqEU2edh4JMn7Ws/xJHnY/JB1e9RoCb6XpDxUF3hD9A0Z1lEUx40Pfw==", + "path": "swashbuckle.aspnetcore.swaggerui/6.5.0", + "hashPath": "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "path": "system.diagnostics.diagnosticsource/8.0.0", + "hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512" + }, + "System.Diagnostics.EventLog/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==", + "path": "system.diagnostics.eventlog/8.0.0", + "hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "path": "system.io.pipelines/8.0.0", + "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" + }, + "System.Reflection.Metadata/1.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", + "path": "system.reflection.metadata/1.6.0", + "hashPath": "system.reflection.metadata.1.6.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==", + "path": "system.text.json/8.0.0", + "hashPath": "system.text.json.8.0.0.nupkg.sha512" + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "path": "xunit.abstractions/2.0.3", + "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" + }, + "xunit.extensibility.core/2.7.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yLX4XlBFkvNYCzf+DEzlNk45KsSlu9W93IJHBmtUP96qZ9XyRYDFlwMj6BCcOhDKVNrZxSM8bqu4F/Qud4ehxA==", + "path": "xunit.extensibility.core/2.7.1", + "hashPath": "xunit.extensibility.core.2.7.1.nupkg.sha512" + }, + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions/14.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Antiforgery/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication.BearerToken/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication.Cookies/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication.Core/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authentication.OAuth/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authorization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Authorization.Policy/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components.Authorization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components.Endpoints/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components.Forms/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components.Server/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Components.Web/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Connections.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.CookiePolicy/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Cors/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Cryptography.Internal/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Cryptography.KeyDerivation/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.DataProtection.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.DataProtection/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.DataProtection.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Diagnostics.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Diagnostics/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Diagnostics.HealthChecks/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.HostFiltering/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Hosting.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Hosting/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Html.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Connections.Common/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Connections/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Features/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Http.Results/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.HttpLogging/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.HttpOverrides/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.HttpsPolicy/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Identity/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Localization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Localization.Routing/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Metadata/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.ApiExplorer/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Core/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Cors/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.DataAnnotations/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Formatters.Json/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Formatters.Xml/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Localization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.Razor/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.RazorPages/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.TagHelpers/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Mvc.ViewFeatures/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.OutputCaching/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.RateLimiting/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Razor/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Razor.Runtime/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.RequestDecompression/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.ResponseCaching.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.ResponseCaching/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.ResponseCompression/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Rewrite/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Routing.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Routing/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.HttpSys/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.IIS/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.IISIntegration/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.Kestrel.Core/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.Kestrel/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Session/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.SignalR.Common/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.SignalR.Core/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.SignalR/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.StaticFiles/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.WebSockets/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.WebUtilities/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Caching.Memory/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Binder.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.CommandLine.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.FileExtensions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Ini/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Json.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.KeyPerFile/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.UserSecrets.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Configuration.Xml/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.DependencyInjection.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Diagnostics.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Diagnostics.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Features/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.FileProviders.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.FileProviders.Composite/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.FileProviders.Embedded/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.FileProviders.Physical.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.FileSystemGlobbing.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Hosting.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Hosting.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Http/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Identity.Core/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Identity.Stores/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Localization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.Abstractions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.Configuration.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.Console.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.Debug.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.EventLog.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.EventSource.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Logging.TraceSource/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.ObjectPool/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Options.ConfigurationExtensions.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Options.DataAnnotations/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Options.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.Primitives.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Extensions.WebEncoders/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.JSInterop/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Net.Http.Headers/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.VisualBasic.Core/13.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.VisualBasic/10.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Win32.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Win32.Registry/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "mscorlib/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "netstandard/2.1.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.AppContext/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Buffers/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Collections.Concurrent/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Collections/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Collections.Immutable/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Collections.NonGeneric/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Collections.Specialized/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel.Annotations/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel.DataAnnotations/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel.EventBasedAsync/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ComponentModel.TypeConverter/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Configuration/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Console/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Core/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Data.Common/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Data.DataSetExtensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Data/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.Contracts/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.Debug/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.DiagnosticSource.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.EventLog.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.FileVersionInfo/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.Process/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.StackTrace/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.TextWriterTraceListener/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.Tools/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.TraceSource/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Diagnostics.Tracing/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Drawing/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Drawing.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Dynamic.Runtime/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Formats.Asn1/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Formats.Tar/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Globalization.Calendars/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Globalization/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Globalization.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Compression.Brotli/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Compression/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Compression.FileSystem/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Compression.ZipFile/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.FileSystem.AccessControl/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.FileSystem/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.FileSystem.DriveInfo/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.FileSystem.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.FileSystem.Watcher/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.IsolatedStorage/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.MemoryMappedFiles/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Pipelines.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Pipes.AccessControl/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.Pipes/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.IO.UnmanagedMemoryStream/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Linq/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Linq.Expressions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Linq.Parallel/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Linq.Queryable/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Memory/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Http/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Http.Json/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.HttpListener/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Mail/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.NameResolution/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.NetworkInformation/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Ping/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Quic/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Requests/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Security/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.ServicePoint/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.Sockets/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.WebClient/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.WebHeaderCollection/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.WebProxy/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.WebSockets.Client/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Net.WebSockets/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Numerics/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Numerics.Vectors/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" }, - "Swashbuckle.AspNetCore.SwaggerGen/6.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Y/qW8Qdg9OEs7V013tt+94OdPxbRdbhcEbw4NiwGvf4YBcfhL/y7qp/Mjv/cENsQ2L3NqJ2AOu94weBy/h4KvA==", - "path": "swashbuckle.aspnetcore.swaggergen/6.5.0", - "hashPath": "swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512" + "System.ObjectModel/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" }, - "Swashbuckle.AspNetCore.SwaggerUI/6.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OvbvxX+wL8skxTBttcBsVxdh73Fag4xwqEU2edh4JMn7Ws/xJHnY/JB1e9RoCb6XpDxUF3hD9A0Z1lEUx40Pfw==", - "path": "swashbuckle.aspnetcore.swaggerui/6.5.0", - "hashPath": "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512" + "System.Reflection.DispatchProxy/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Emit/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Emit.ILGeneration/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Emit.Lightweight/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Metadata.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Reflection.TypeExtensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Resources.Reader/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Resources.ResourceManager/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Resources.Writer/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.CompilerServices.Unsafe/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.CompilerServices.VisualC/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Handles/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.InteropServices/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.InteropServices.JavaScript/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.InteropServices.RuntimeInformation/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Intrinsics/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Loader/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Numerics/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Serialization/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Serialization.Formatters/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Serialization.Json/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Serialization.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Runtime.Serialization.Xml/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.AccessControl/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Claims/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Algorithms/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Cng/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Csp/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Encoding/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.OpenSsl/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Primitives/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.X509Certificates/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Cryptography.Xml/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Principal/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.Principal.Windows/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Security.SecureString/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ServiceModel.Web/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ServiceProcess/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.Encoding.CodePages/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.Encoding/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.Encoding.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.Encodings.Web.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.Json.Reference/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Text.RegularExpressions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Channels/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Overlapped/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.RateLimiting/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Tasks.Dataflow/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Tasks/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Tasks.Extensions/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Tasks.Parallel/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Thread/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.ThreadPool/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Threading.Timer/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Transactions/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Transactions.Local/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.ValueTuple/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Web/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Web.HttpUtility/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Windows/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.Linq/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.ReaderWriter/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.Serialization/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.XDocument/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.XmlDocument/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.XmlSerializer/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.XPath/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "System.Xml.XPath.XDocument/8.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" + }, + "WindowsBase/4.0.0.0": { + "type": "referenceassembly", + "serviceable": false, + "sha512": "" } } } \ No newline at end of file diff --git a/bin/Debug/net8.0/Chemistry Cafe API.dll b/bin/Debug/net8.0/Chemistry Cafe API.dll index 57bf300add18b55e3a3fe5b281de4074315e2eb8..d90c834114b7a0375f617da4b800d9df0c34a313 100644 GIT binary patch literal 263168 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 XmKIo0E#_k2Z{p7LU;h2`v%voZ!x?Wp literal 23040 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 diff --git a/bin/Debug/net8.0/Chemistry Cafe API.exe b/bin/Debug/net8.0/Chemistry Cafe API.exe index 4c5c9a2e488760c6c95a199f12cee890845b19ee..c6a6f5f3001c8831d9f20637279a62fcd144a50f 100644 GIT binary patch delta 99 zcmZp8z|jCiEsR^3auE$$^roX?-Eu3 delta 99 zcmZp8z|jCiEsR^3a}5}2-I!LV7`5~Hj^t004rD%AOHXW diff --git a/bin/Debug/net8.0/Chemistry Cafe API.pdb b/bin/Debug/net8.0/Chemistry Cafe API.pdb index 1f858ed922e3e7710c354f97638ccedb3f788a6c..34f1ec626a232d1750324f9361bee6cef1a07499 100644 GIT binary patch literal 76688 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 delta 3455 zcmcInc~p~E7Jn~0B(m>Y!XmLKJAouE3gReMsaPNhkdZA3Ae-R6O%mL-V42SnD$)Wf z6r|E)6s?vc#h!|&RT1|MY^T;;rz%=Ib?yt|3H&|taelvdfA`+E=Y8Mf(@TuDAMvMt z+CqeoZ=xz23iKO*#{~Tkgq}fZLt;sb%JPeI7m_%G1t7kZB*X!`i`X+#W=?~$2ee8F zdTL<_Y0Nr-7rgQ0*RvYBc5Lt2&=BDEtKtnth$VM!IGk_%00nk2j0+2xwp9_Eo@IqDh-10bJkro618h~ihk_3FAls!9Yv}36O_@wwu|Wsl#64Z!@zKU|ohE1{!>4V^o|z z;>T#GnSIX8=D-%19xaR{(j+iU6~iBSIskOU1Pp6y&@jMvS`3aBXHe(z3wRxH8U!hxX(6Il*1JFQ%pIO2;poM07 zF{A~UX%WN&%?7XsIt&@3!_D-5h)0^~!=NRIL*0tzYwJ@mlF7*FA;%V@aydCgWDVV6 zTfLx`H$=$jgvbI$!G@k4pf@KJ4yzam3nxL2NC5s9DFVoTlOlxtcs3coB}WKtOt8#^ znh5D2=ZH)Pd)*_e2m3s*r561x>wuNpi@U(}NY(}6m$HlCxkeiR50Vdnhb?~rp4YHm z#DlOUvX(nxI&xzPz~d|zfX7=NLt~>mz?SHqJkw-nnrt2LV|l%ayG)!(XQN6*CY_74 z^Pu3N#fmO)*`{`Z>n_;vdrK8C*r*nmi{=CK(B@Pfcs@wefrk#vL%wMP;JFCQMeV>m z)R`8;WTWi#7$z45a>_*kA1XuUpDdU0CgZb4*CMp`k`?MR& zZ!iPJ=U?7=6d$JVXolbX*Hl8m^$?r&kM)0U@NTZozH;+`@xGr!M{&{%8_tyo$u=)l zej!)Y69044UqhcoeJ_5tCa`VQx#KTCUph~7TP(dNjoy@V=yvp#uVU9|EA4xSUY{(z zaj`DYgwxW zsKRyrZd>VO-9YDz#OaDVi8jfX|IP1}4ovT+`lQ!&9bd#;u&+p4bN?3KKZ}06X z{YwhDbLOmQpG`mVz5NnH`_>0qs{+r>7EQ{^hKz5AE~l(Gq;ns?<9Ubwi@U-G*VVtb z?QfDL@cY;MzP^3#VWQY?%B_-rt?y}R6|P!Xy~QV^Q90v8cFMHRdp2(rraCpWt=(3h zD{0CtIokQ*e`+H;mM@=JG*nlc^nX?7Bn%C|>BsT?^AwBqF8Y?UZ1QWd3+kf_w^ zun@IGBaT$%gl3Dga>O~JP>nh#TM`;2iV6EoB9vDh~F-`s=jvV=TDelzU_HnueF| z1dg3+T%Nipf8nCCM>7eK1Ww)xs3hec>r&!xz$@rf+5qxAImF zye&Vlzz)n9tozP$2?IW@i>c02J{&Ld-D9wQscUB<|3A}{YfLjU&5`EmOuBX=WNo^y zI$%r-qjC5MvzGG|h3=J^~a0 z+-E~;g#dRK;wJZwu_f07`v}45qyGwhWMw!<$9|OM`S+Yhwd3UjZA=AtQM1pxGosOK zYr|7J?2iK}+iQLTK529=U;)6}4f3P_?@FM(#GtO8_u%Lr`RJ}8nTuqCKz+oZmi7nmvdCQ@CeB7Up4!{bXEPZz&NSp`xao?03>9>2Wkr_8bW6Pe zrO?ny$9&ropCt$>?1t;Yq6Lvfvr&@uiew;v6iI_c6B|k`vG?ey29!eARe%6PECah+ z4I;k%a4RqZp<&PsJ2;yAFof@DuyV&;wO)@SO~kAw0TLB;VOk4Bp|1jr1e=FY-w#jsO4v diff --git a/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html b/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html new file mode 100644 index 0000000..f47b3e3 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html @@ -0,0 +1,169 @@ + + + + + + + +Chemistry_Cafe_API.Models.DeleteReactantProductList - Coverage Report + +

+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.DeleteReactantProductList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\DeleteReactantProductList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:8
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\DeleteReactantProductList.cs

+
+ + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class DeleteReactantProductList
 4    {
 05        public Guid reactant_product_uuid { get; set; }
 06        public Guid species_uuid {  get; set; }
 7    }
 8}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_Family.html b/coveragereport/chemistry_cafe_api.dll_Family.html new file mode 100644 index 0000000..a446f46 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_Family.html @@ -0,0 +1,175 @@ + + + + + + + +Chemistry_Cafe_API.Models.Family - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.Family
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Family.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:10
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Family.cs

+
+ + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class Family
 4    {
 05        public Guid uuid { get; set; }
 06        public string? name { get; set; }
 07        public Guid super_tag_mechanism_uuid { get; set; }
 08        public bool isDel {  get; set; }
 9    }
 10}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyController.html b/coveragereport/chemistry_cafe_api.dll_FamilyController.html new file mode 100644 index 0000000..f1ffdf3 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.FamilyController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.FamilyController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyController.cs
+
+
+
+
+
+
+
Line coverage
+
+
36%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:7
Uncovered lines:12
Coverable lines:19
Total lines:57
Line coverage:36.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
FamilyController(...)30
Get()162
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class FamilyController : ControllerBase
 13    {
 14        private FamilyService familyService;
 15
 16        //Injects sql data source setup in Program.cs
 117        public FamilyController([FromServices] MySqlDataSource db)
 118        {
 119            this.familyService = new FamilyService(db);
 120        }
 21
 22        // GET: api/Family/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<Family>> Get()
 125        {
 126            return await familyService.GetFamiliesAsync();
 127        }
 28
 29        // GET api/Family/5
 30        [HttpGet("{uuid}")]
 31        public async Task<Family?> Get(Guid uuid)
 032        {
 033            return await familyService.GetFamilyAsync(uuid);
 034        }
 35
 36        // POST api/Family/create
 37        [HttpPost("create")]
 38        public async Task<Family> Create([FromBody] string name)
 039        {
 040            return await familyService.CreateFamilyAsync(name);
 041        }
 42
 43        // PUT api/Family/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] Family family)
 046        {
 047            await familyService.UpdateFamilyAsync(family);
 048        }
 49
 50        // DELETE api/Family/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await familyService.DeleteFamilyAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyControllerTests.html b/coveragereport/chemistry_cafe_api.dll_FamilyControllerTests.html new file mode 100644 index 0000000..cdbfab0 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyControllerTests.html @@ -0,0 +1,197 @@ + + + + + + + +Chemistry_Cafe_API.Tests.FamilyControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.FamilyControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:6
Uncovered lines:0
Coverable lines:6
Total lines:23
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
FamilyControllerTests()30
Get_retrieves_family()182
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class FamilyControllerTests
 10    {
 111        readonly MySqlDataSource db = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_family()
 115        {
 116            var controller = new FamilyController(db);
 17
 118            var result = await controller.Get() as List<Family>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22    }
 23}
+
+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyService.html b/coveragereport/chemistry_cafe_api.dll_FamilyService.html new file mode 100644 index 0000000..b8a695b --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyService.html @@ -0,0 +1,293 @@ + + + + + + + +Chemistry_Cafe_API.Services.FamilyService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.FamilyService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyService.cs
+
+
+
+
+
+
+
Line coverage
+
+
21%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:15
Uncovered lines:55
Coverable lines:70
Total lines:109
Line coverage:21.4%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
FamilyService(...)20
GetFamiliesAsync()566
GetFamilyAsync()065
CreateFamilyAsync()072
UpdateFamilyAsync()063
DeleteFamilyAsync()053
ReadAllAsync()2518
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 19    public class FamilyService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<Family>> GetFamiliesAsync()
 112        {
 113            using var connection = await database.OpenConnectionAsync();
 114            using var command = connection.CreateCommand();
 15
 116            command.CommandText = "SELECT * FROM Family WHERE isDel = FALSE";
 117            return await ReadAllAsync(await command.ExecuteReaderAsync());
 118        }
 19
 20        public async Task<Family?> GetFamilyAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM Family WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<Family> CreateFamilyAsync(string name)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            Guid tagMechanismID = Guid.NewGuid();
 38
 039            command.CommandText = @"INSERT INTO TagMechanism (uuid, tag) VALUES (@tag_mechanism_uuid, @tag);";
 40
 041            command.Parameters.AddWithValue("@tag_mechanism_uuid", tagMechanismID);
 042            command.Parameters.AddWithValue("@tag", name + "-FamilySuperMechanism");
 43
 044            Guid familyID = Guid.NewGuid();
 45
 046            command.CommandText += @"INSERT INTO Family (uuid, name, super_tag_mechanism_uuid) VALUES (@uuid, @name, @su
 47
 048            command.Parameters.AddWithValue("@uuid", familyID);
 049            command.Parameters.AddWithValue("@name", name);
 050            command.Parameters.AddWithValue("@super_tag_mechanism_uuid", tagMechanismID);
 51
 052            Family family = new Family();
 053            family.uuid = familyID;
 054            family.name = name;
 055            family.super_tag_mechanism_uuid = tagMechanismID;
 056            family.isDel = false;
 57
 058            await command.ExecuteNonQueryAsync();
 59
 060            return family;
 061        }
 62        public async Task UpdateFamilyAsync(Family family)
 063        {
 064            using var connection = await database.OpenConnectionAsync();
 065            using var command = connection.CreateCommand();
 66
 067            command.CommandText = @"UPDATE Family SET name = @name, super_tag_mechanism_uuid = @super_tag_mechanism_uuid
 68
 069            command.Parameters.AddWithValue("@uuid", family.uuid);
 070            command.Parameters.AddWithValue("@name", family.name);
 071            command.Parameters.AddWithValue("@super_tag_mechanism_uuid", family.super_tag_mechanism_uuid);
 072            command.Parameters.AddWithValue("@isDel", family.isDel);
 73
 074            await command.ExecuteNonQueryAsync();
 075        }
 76
 77        public async Task DeleteFamilyAsync(Guid uuid)
 078        {
 079            using var connection = await database.OpenConnectionAsync();
 080            using var command = connection.CreateCommand();
 81
 082            command.CommandText = @"UPDATE Family SET isDel = 1 WHERE uuid = @uuid;";
 83
 084            command.Parameters.AddWithValue("@uuid", uuid);
 85
 086            await command.ExecuteNonQueryAsync();
 087        }
 88
 89        private async Task<IReadOnlyList<Family>> ReadAllAsync(DbDataReader reader)
 190        {
 191            var families = new List<Family>();
 192            using (reader)
 193            {
 194                while (await reader.ReadAsync())
 095                {
 096                    var family = new Family
 097                    {
 098                        uuid = reader.GetGuid(0),
 099                        name = reader.GetString(1),
 0100                        super_tag_mechanism_uuid = reader.GetGuid(2),
 0101                        isDel = reader.GetBoolean(3),
 0102                    };
 0103                    families.Add(family);
 0104                }
 1105            }
 1106            return families;
 1107        }
 108    }
 109}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechList.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechList.html new file mode 100644 index 0000000..886b8c0 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechList.html @@ -0,0 +1,178 @@ + + + + + + + +Chemistry_Cafe_API.Models.FamilyTagMechList - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.FamilyTagMechList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\FamilyTagMechList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\FamilyTagMechList.cs

+
+ + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class FamilyTagMechList
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid family_uuid { get; set; }
 07        public Guid tag_mechanism_uuid { get; set; }
 08        public string? version { get; set; }
 09        public bool isDel {  get; set; }
 10    }
 11}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListController.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListController.html new file mode 100644 index 0000000..ab25026 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.FamilyTagMechListController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.FamilyTagMechListController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyTagMechListController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
FamilyTagMechListController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyTagMechListController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class FamilyTagMechListController : ControllerBase
 13    {
 14        private FamilyTagMechListService familyMechListService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public FamilyTagMechListController([FromServices] MySqlDataSource db)
 018        {
 019            this.familyMechListService = new FamilyTagMechListService(db);
 020        }
 21
 22        // GET: api/FamilyMechList/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<FamilyTagMechList>> Get()
 025        {
 026            return await familyMechListService.GetFamilyMechListsAsync();
 027        }
 28
 29        // GET api/FamilyMechList/5
 30        [HttpGet("{uuid}")]
 31        public async Task<FamilyTagMechList?> Get(Guid uuid)
 032        {
 033            return await familyMechListService.GetFamilyMechListAsync(uuid);
 034        }
 35
 36        // POST api/FamilyMechList/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] FamilyTagMechList newFamilyMechList)
 039        {
 040            return await familyMechListService.CreateFamilyMechListAsync(newFamilyMechList);
 041        }
 42
 43        // PUT api/FamilyMechList/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] FamilyTagMechList newFamilyMechList)
 046        {
 047            await familyMechListService.UpdateFamilyMechListAsync(newFamilyMechList);
 048        }
 49
 50        // DELETE api/FamilyMechList/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await familyMechListService.DeleteFamilyMechListAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListService.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListService.html new file mode 100644 index 0000000..ba2db4e --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListService.html @@ -0,0 +1,282 @@ + + + + + + + +Chemistry_Cafe_API.Services.FamilyTagMechListService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.FamilyTagMechListService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyTagMechListService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:64
Coverable lines:64
Total lines:98
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyTagMechListService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class FamilyTagMechListService (MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<FamilyTagMechList>> GetFamilyMechListsAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM Family_TagMechanism_List WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<FamilyTagMechList?> GetFamilyMechListAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM Family_TagMechanism_List WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateFamilyMechListAsync(FamilyTagMechList newFamilyMechList)
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid familyMechListID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO Family_TagMechanism_List (uuid, family_uuid, tag_mechanism_uuid, version
 39
 040            command.Parameters.AddWithValue("@uuid", familyMechListID);
 041            command.Parameters.AddWithValue("@family_uuid", newFamilyMechList.family_uuid);
 042            command.Parameters.AddWithValue("@tag_mechanism_uuid", newFamilyMechList.tag_mechanism_uuid);
 043            command.Parameters.AddWithValue("@version", newFamilyMechList.version);
 44
 045            await command.ExecuteNonQueryAsync();
 46
 047            return familyMechListID;
 048        }
 49        public async Task UpdateFamilyMechListAsync(FamilyTagMechList familyMechList)
 050        {
 051            using var connection = await database.OpenConnectionAsync();
 052            using var command = connection.CreateCommand();
 53
 054            command.CommandText = @"UPDATE Family_TagMechanism_List SET family_uuid = @family_uuid, tag_mechanism_uuid =
 55
 056            command.Parameters.AddWithValue("@uuid", familyMechList.uuid);
 057            command.Parameters.AddWithValue("@family_uuid", familyMechList.family_uuid);
 058            command.Parameters.AddWithValue("@tag_mechanism_uuid", familyMechList.tag_mechanism_uuid);
 059            command.Parameters.AddWithValue("@version", familyMechList.version);
 060            command.Parameters.AddWithValue("@isDel", familyMechList.isDel);
 61
 062            await command.ExecuteNonQueryAsync();
 063        }
 64
 65        public async Task DeleteFamilyMechListAsync(Guid uuid)
 066        {
 067            using var connection = await database.OpenConnectionAsync();
 068            using var command = connection.CreateCommand();
 69
 070            command.CommandText = @"UPDATE Family_TagMechanism_List SET isDel = 1 WHERE uuid = @uuid;";
 71
 072            command.Parameters.AddWithValue("@uuid", uuid);
 73
 074            await command.ExecuteNonQueryAsync();
 075        }
 76
 77        private async Task<IReadOnlyList<FamilyTagMechList>> ReadAllAsync(DbDataReader reader)
 078        {
 079            var familyMechList = new List<FamilyTagMechList>();
 080            using (reader)
 081            {
 082                while (await reader.ReadAsync())
 083                {
 084                    var familyMech = new FamilyTagMechList
 085                    {
 086                        uuid = reader.GetGuid(0),
 087                        family_uuid = reader.GetGuid(1),
 088                        tag_mechanism_uuid = reader.GetGuid(2),
 089                        version = reader.GetString(3),
 090                        isDel = reader.GetBoolean(4),
 091                    };
 092                    familyMechList.Add(familyMech);
 093                }
 094            }
 095            return familyMechList;
 096        }
 97    }
 98}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersion.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersion.html new file mode 100644 index 0000000..ba7c885 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersion.html @@ -0,0 +1,187 @@ + + + + + + + +Chemistry_Cafe_API.Models.FamilyTagMechListVersion - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.FamilyTagMechListVersion
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\FamilyTagMechListVersion.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:8
Coverable lines:8
Total lines:14
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\FamilyTagMechListVersion.cs

+
+ + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class FamilyTagMechListVersion
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid family_uuid { get; set; }
 07        public Guid tag_mechanism_uuid { get; set; }
 08        public string? frozen_version { get; set; }
 09        public string? action { get; set; }
 010        public Guid user_uuid { get; set; }
 011        public DateTime datetime { get; set; }
 012        public bool isDel {  get; set; }
 13    }
 14}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionController.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionController.html new file mode 100644 index 0000000..41e5af1 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyTagMechListVersionController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
FamilyTagMechListVersionController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\FamilyTagMechListVersionController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class FamilyTagMechListVersionController : ControllerBase
 13    {
 14        private FamilyTagMechListVersionService familyMechListVersionService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public FamilyTagMechListVersionController([FromServices] MySqlDataSource db)
 018        {
 019            this.familyMechListVersionService = new FamilyTagMechListVersionService(db);
 020        }
 21
 22        // GET: api/FamilyMechListVersion/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<FamilyTagMechListVersion>> Get()
 025        {
 026            return await familyMechListVersionService.GetFamilyMechListVersionsAsync();
 027        }
 28
 29        // GET api/FamilyMechListVersion/5
 30        [HttpGet("{uuid}")]
 31        public async Task<FamilyTagMechListVersion?> Get(Guid uuid)
 032        {
 033            return await familyMechListVersionService.GetFamilyMechListVersionAsync(uuid);
 034        }
 35
 36        // POST api/FamilyMechListVersion/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] FamilyTagMechListVersion newFamilyMechListVersion)
 039        {
 040            return await familyMechListVersionService.CreateFamilyMechListVersionAsync(newFamilyMechListVersion);
 041        }
 42
 43        // PUT api/FamilyMechListVersion/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] FamilyTagMechListVersion newFamilyMechListVersion)
 046        {
 047            await familyMechListVersionService.UpdateFamilyMechListVersionAsync(newFamilyMechListVersion);
 048        }
 49
 50        // DELETE api/FamilyMechListVersion/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await familyMechListVersionService.DeleteFamilyMechListVersionAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionService.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionService.html new file mode 100644 index 0000000..cf3ab77 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionService.html @@ -0,0 +1,291 @@ + + + + + + + +Chemistry_Cafe_API.Services.FamilyTagMechListVersionService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.FamilyTagMechListVersionService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyTagMechListVersionService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:73
Coverable lines:73
Total lines:107
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\FamilyTagMechListVersionService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class FamilyTagMechListVersionService(MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<FamilyTagMechListVersion>> GetFamilyMechListVersionsAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM Family_TagMechanism_List_Version WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<FamilyTagMechListVersion?> GetFamilyMechListVersionAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM Family_TagMechanism_List_Version WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateFamilyMechListVersionAsync(FamilyTagMechListVersion newFamilyMechListVersion)
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid familyMechListVersionID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO Family_TagMechanism_List_Version (uuid, family_uuid, tag_mechanism_uuid,
 39
 040            command.Parameters.AddWithValue("@uuid", familyMechListVersionID);
 041            command.Parameters.AddWithValue("@family_uuid", newFamilyMechListVersion.family_uuid);
 042            command.Parameters.AddWithValue("@tag_mechanism_uuid", newFamilyMechListVersion.tag_mechanism_uuid);
 043            command.Parameters.AddWithValue("@frozen_version", newFamilyMechListVersion.frozen_version);
 044            command.Parameters.AddWithValue("@action", newFamilyMechListVersion.action);
 045            command.Parameters.AddWithValue("@user_uuid", newFamilyMechListVersion.user_uuid);
 046            command.Parameters.AddWithValue("@datetime", newFamilyMechListVersion.datetime);
 47
 048            await command.ExecuteNonQueryAsync();
 49
 050            return familyMechListVersionID;
 051        }
 52        public async Task UpdateFamilyMechListVersionAsync(FamilyTagMechListVersion familyMechListVersion)
 053        {
 054            using var connection = await database.OpenConnectionAsync();
 055            using var command = connection.CreateCommand();
 56
 057            command.CommandText = @"UPDATE Family_TagMechanism_List_Version SET family_uuid = @family_uuid, tag_mechanis
 58
 059            command.Parameters.AddWithValue("@uuid", familyMechListVersion.uuid);
 060            command.Parameters.AddWithValue("@family_uuid", familyMechListVersion.family_uuid);
 061            command.Parameters.AddWithValue("@tag_mechanism_uuid", familyMechListVersion.tag_mechanism_uuid);
 062            command.Parameters.AddWithValue("@frozen_version", familyMechListVersion.frozen_version);
 063            command.Parameters.AddWithValue("@action", familyMechListVersion.action);
 064            command.Parameters.AddWithValue("@user_uuid", familyMechListVersion.user_uuid);
 065            command.Parameters.AddWithValue("@datetime", familyMechListVersion.datetime);
 066            command.Parameters.AddWithValue("@isDel", familyMechListVersion.isDel);
 67
 068            await command.ExecuteNonQueryAsync();
 069        }
 70
 71        public async Task DeleteFamilyMechListVersionAsync(Guid uuid)
 072        {
 073            using var connection = await database.OpenConnectionAsync();
 074            using var command = connection.CreateCommand();
 75
 076            command.CommandText = @"UPDATE Family_TagMechanism_List_Version SET isDel = 1 WHERE uuid = @uuid;";
 77
 078            command.Parameters.AddWithValue("@uuid", uuid);
 79
 080            await command.ExecuteNonQueryAsync();
 081        }
 82
 83        private async Task<IReadOnlyList<FamilyTagMechListVersion>> ReadAllAsync(DbDataReader reader)
 084        {
 085            var familyMechListVersion = new List<FamilyTagMechListVersion>();
 086            using (reader)
 087            {
 088                while (await reader.ReadAsync())
 089                {
 090                    var familyMechVersion = new FamilyTagMechListVersion
 091                    {
 092                        uuid = reader.GetGuid(0),
 093                        family_uuid = reader.GetGuid(1),
 094                        tag_mechanism_uuid = reader.GetGuid(2),
 095                        frozen_version = reader.GetString(3),
 096                        action = reader.GetString(4),
 097                        user_uuid = reader.GetGuid(5),
 098                        datetime = reader.GetDateTime(6),
 099                        isDel = reader.GetBoolean(7),
 0100                    };
 0101                    familyMechListVersion.Add(familyMechVersion);
 0102                }
 0103            }
 0104            return familyMechListVersion;
 0105        }
 106    }
 107}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_OpenAtmosController.html b/coveragereport/chemistry_cafe_api.dll_OpenAtmosController.html new file mode 100644 index 0000000..fc69813 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_OpenAtmosController.html @@ -0,0 +1,213 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.OpenAtmosController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.OpenAtmosController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\OpenAtmosController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:37
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
OpenAtmosController(...)03
GetJSON()018
GetYAML()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\OpenAtmosController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class OpenAtmosController : ControllerBase
 13    {
 14        private OpenAtmosService openAtmosService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public OpenAtmosController([FromServices] MySqlDataSource db)
 018        {
 019            this.openAtmosService = new OpenAtmosService(db);
 020        }
 21
 22        // GET: api/OpenAtmos/JSON
 23        [HttpGet("JSON/{tag_mechanism_uuid}")]
 24        public async Task<string> GetJSON(Guid tag_mechanism_uuid)
 025        {
 026            return await openAtmosService.GetJSON(tag_mechanism_uuid);
 027        }
 28
 29        // GET: api/OpenAtmos/YAML
 30        [HttpGet("YAML/{tag_mechanism_uuid}")]
 31        public async Task<string> GetYAML(Guid tag_mechanism_uuid)
 032        {
 033            return await openAtmosService.GetYAML(tag_mechanism_uuid);
 034        }
 35
 36    }
 37}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_OpenAtmosService.html b/coveragereport/chemistry_cafe_api.dll_OpenAtmosService.html new file mode 100644 index 0000000..9ae1d11 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_OpenAtmosService.html @@ -0,0 +1,487 @@ + + + + + + + +Chemistry_Cafe_API.Services.OpenAtmosService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.OpenAtmosService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\OpenAtmosService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:258
Coverable lines:258
Total lines:311
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
OpenAtmosService(...)02
GetJSON()0288
GetYAML()0257
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\OpenAtmosService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class OpenAtmosService(MySqlDataSource database)
 9    {
 10        public async Task<string> GetJSON(Guid tag_mechanism_uuid)
 011        {
 012            ReactionService reactionService = new ReactionService(database);
 013            SpeciesService speciesService = new SpeciesService(database);
 014            TagMechanismService tagMechanismService = new TagMechanismService(database);
 015            PropertyListService propertyListService = new PropertyListService(database);
 016            ReactantProductListService reactantProductListService = new ReactantProductListService(database);
 17
 018            var mechanism = tagMechanismService.GetTagMechanismAsync(tag_mechanism_uuid).Result;
 19
 020            string JSON = "{\n" +
 021                "  \"version\": \"1.0.0\",\n" +
 022                "  \"name\": \"" + mechanism.tag + "\", \n";
 23
 024            using var connection = await database.OpenConnectionAsync();
 025            using var command = connection.CreateCommand();
 26
 027            var reactionList = reactionService.GetTags(tag_mechanism_uuid).Result;
 028            var speciesList = speciesService.GetTags(tag_mechanism_uuid).Result;
 29
 030            JSON += "  \"species\": [ \n";
 31
 32
 033            foreach ( var species in speciesList )
 034            {
 035                JSON += "    {\n";
 036                JSON += "      \"name\": \"" + species.type + "\", \n";
 037                var properties = propertyListService.GetPropertiesAsync(species.uuid).Result;
 038                foreach ( var property in properties )
 039                {
 040                    JSON += "      \"" + property.name;
 041                    if (!(property.units == null || property.units == ""))
 042                    {
 043                        JSON += " [" + property.units + "]\": ";
 044                    }
 45                    else
 046                    {
 047                        JSON += "\": ";
 048                    }
 49
 050                    if (property.float_value.HasValue)
 051                    {
 052                        JSON += property.float_value.ToString();
 053                    }
 054                    else if(property.double_value.HasValue)
 055                    {
 056                        JSON += property.double_value.ToString();
 057                    }
 058                    else if (property.int_value.HasValue)
 059                    {
 060                        JSON += property.int_value.ToString();
 061                    }
 062                    else if(property.string_value != null)
 063                    {
 064                        JSON += "\"" + property.string_value + "\"";
 065                    }
 66
 067                    JSON += ", \n";
 068                }
 069                JSON = JSON.Remove(JSON.LastIndexOf(','));
 070                JSON += "\n";
 071                JSON += "    }, \n";
 072            }
 073            JSON = JSON.Remove(JSON.LastIndexOf(','));
 074            JSON += "\n";
 75
 076            JSON += "  ],\n" +
 077                "  \"phases\": [ \n" +
 078                "    { \n" +
 079                "      \"name\": \"gas\", \n" +
 080                "      \"species\": [ \n";
 081            foreach(Species species in speciesList)
 082            {
 083                JSON += "        \"" + species.type + "\", \n";
 084            }
 085            JSON = JSON.Remove(JSON.LastIndexOf(','));
 086            JSON += "\n";
 087            JSON += "      ] \n" +
 088                "    } \n" +
 089                "  ],\n" +
 090                "  \"reactions\": [ \n";
 091            bool react = false;
 92
 093            foreach (var reaction in reactionList)
 094            {
 095                react = true;
 096                JSON += "    { \n";
 097                JSON += "      \"type\" : \"" + reaction.type.ToUpper() + "\", \n";
 098                var properties = propertyListService.GetPropertiesAsync(reaction.uuid).Result;
 099                foreach (var property in properties)
 0100                {
 0101                    if (!(property.units == null || property.units == ""))
 0102                    {
 0103                        JSON += "      \"" + property.name + " [" + property.units + "]\": ";
 0104                    }
 105                    else
 0106                    {
 0107                        JSON += "      \"" + property.name + "\": ";
 0108                    }
 109
 0110                    if (property.float_value.HasValue)
 0111                    {
 0112                        JSON += property.float_value.ToString();
 0113                    }
 0114                    else if (property.double_value.HasValue)
 0115                    {
 0116                        JSON += property.double_value.ToString();
 0117                    }
 0118                    else if (property.int_value.HasValue)
 0119                    {
 0120                        JSON += property.int_value.ToString();
 0121                    }
 0122                    else if (property.string_value != null)
 0123                    {
 0124                        JSON += "\"" + property.string_value + "\"";
 0125                    }
 126
 0127                    JSON += ", \n";
 0128                }
 0129                var reactants = reactantProductListService.GetReactantsAsync(reaction.reactant_list_uuid).Result;
 0130                if(reactants.Count != 0)
 0131                {
 0132                    JSON += "      \"reactants\": [ \n" +
 0133                    "        {\n";
 0134                    foreach (ReactantsProducts reactant in reactants)
 0135                    {
 0136                        JSON += "          \"species name\": \"" + reactant.type + "\", \n";
 0137                        JSON += "          \"coefficient\": \"" + reactant.quantity + "\" \n";
 0138                    }
 0139                    JSON += "        }\n" +
 0140                        "      ], \n";
 0141                }
 142
 0143                var products = reactantProductListService.GetProductsAsync(reaction.product_list_uuid).Result;
 144
 0145                if(products.Count != 0)
 0146                {
 0147                    JSON += "      \"products\": [ \n" +
 0148                    "        {\n";
 0149                    foreach (ReactantsProducts product in products)
 0150                    {
 0151                        JSON += "          \"species name\": \"" + product.type + "\", \n";
 0152                        JSON += "          \"coefficient\": \"" + product.quantity + "\" \n";
 0153                    }
 0154                    JSON += "        }\n" +
 0155                        "      ]\n";
 0156                }
 157
 0158                if(reactants.Count == 0 && products.Count == 0)
 0159                {
 0160                    JSON = JSON.Remove(JSON.LastIndexOf(','));
 0161                    JSON += "\n";
 0162                }
 163
 0164                JSON += "    },\n";
 0165            }
 0166            if (react)
 0167            {
 0168                JSON = JSON.Remove(JSON.LastIndexOf(','));
 0169                JSON += "\n";
 0170            }
 0171            JSON += "  ]\n}";
 0172            return JSON;
 0173        }
 174
 175        public async Task<string> GetYAML(Guid tag_mechanism_uuid)
 0176        {
 0177            ReactionService reactionService = new ReactionService(database);
 0178            SpeciesService speciesService = new SpeciesService(database);
 0179            TagMechanismService tagMechanismService = new TagMechanismService(database);
 0180            PropertyListService propertyListService = new PropertyListService(database);
 0181            ReactantProductListService reactantProductListService = new ReactantProductListService(database);
 182
 0183            var mechanism = tagMechanismService.GetTagMechanismAsync(tag_mechanism_uuid).Result;
 184
 0185            string YAML = "---\n" +
 0186                "version: 1.0.0\n" +
 0187                "name: " + mechanism.tag + "\n";
 188
 0189            using var connection = await database.OpenConnectionAsync();
 0190            using var command = connection.CreateCommand();
 191
 0192            var reactionList = reactionService.GetTags(tag_mechanism_uuid).Result;
 0193            var speciesList = speciesService.GetTags(tag_mechanism_uuid).Result;
 194
 0195            YAML += "species:\n";
 196
 197
 0198            foreach (var species in speciesList)
 0199            {
 0200                YAML += "- name: " + species.type + "\n";
 0201                var properties = propertyListService.GetPropertiesAsync(species.uuid).Result;
 0202                foreach (var property in properties)
 0203                {
 0204                    YAML += "  " + property.name;
 0205                    if (!(property.units == null || property.units == ""))
 0206                    {
 0207                        YAML += " [" + property.units + "]: ";
 0208                    }
 209                    else
 0210                    {
 0211                        YAML += ": ";
 0212                    }
 213
 0214                    if (property.float_value.HasValue)
 0215                    {
 0216                        YAML += property.float_value.ToString();
 0217                    }
 0218                    else if (property.double_value.HasValue)
 0219                    {
 0220                        YAML += property.double_value.ToString();
 0221                    }
 0222                    else if (property.int_value.HasValue)
 0223                    {
 0224                        YAML += property.int_value.ToString();
 0225                    }
 0226                    else if (property.string_value != null)
 0227                    {
 0228                        YAML += property.string_value;
 0229                    }
 230
 0231                    YAML += "\n";
 0232                }
 0233            }
 234
 0235            YAML += "" +
 0236                "phases:\n" +
 0237                "- name: gas\n" +
 0238                "  species:\n";
 0239            foreach (Species species in speciesList)
 0240            {
 0241                YAML += "  - " + species.type + "\n";
 0242            }
 0243            YAML += "reactions:\n";
 0244            bool react = false;
 245
 0246            foreach (var reaction in reactionList)
 0247            {
 0248                react = true;
 0249                YAML += "- type : " + reaction.type.ToUpper() + "\n";
 0250                var properties = propertyListService.GetPropertiesAsync(reaction.uuid).Result;
 0251                foreach (var property in properties)
 0252                {
 0253                    if (!(property.units == null || property.units == ""))
 0254                    {
 0255                        YAML += "  " + property.name + " [" + property.units + "]: ";
 0256                    }
 257                    else
 0258                    {
 0259                        YAML += "  " + property.name + ": ";
 0260                    }
 261
 0262                    if (property.float_value.HasValue)
 0263                    {
 0264                        YAML += property.float_value.ToString();
 0265                    }
 0266                    else if (property.double_value.HasValue)
 0267                    {
 0268                        YAML += property.double_value.ToString();
 0269                    }
 0270                    else if (property.int_value.HasValue)
 0271                    {
 0272                        YAML += property.int_value.ToString();
 0273                    }
 0274                    else if (property.string_value != null)
 0275                    {
 0276                        YAML += property.string_value;
 0277                    }
 0278                    YAML += "\n";
 0279                }
 0280                var reactants = reactantProductListService.GetReactantsAsync(reaction.reactant_list_uuid).Result;
 0281                if (reactants.Count != 0)
 0282                {
 0283                    YAML += "  reactants:\n";
 0284                    foreach (ReactantsProducts reactant in reactants)
 0285                    {
 0286                        YAML += "  - species name: " + reactant.type + "\n";
 0287                        YAML += "    coefficient: " + reactant.quantity + "\n";
 0288                    }
 0289                }
 290
 0291                var products = reactantProductListService.GetProductsAsync(reaction.product_list_uuid).Result;
 292
 0293                if (products.Count != 0)
 0294                {
 0295                    YAML += "  products:\n";
 0296                    foreach (ReactantsProducts product in products)
 0297                    {
 0298                        YAML += "  - species name: " + product.type + "\n";
 0299                        YAML += "    coefficient: " + product.quantity + " \n";
 0300                    }
 0301                }
 302
 0303            }
 304
 0305            return YAML;
 0306        }
 307
 308    }
 309
 310}
 311
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_Program.html b/coveragereport/chemistry_cafe_api.dll_Program.html new file mode 100644 index 0000000..8bd949f --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_Program.html @@ -0,0 +1,211 @@ + + + + + + + +Program - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Program
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Program.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:21
Coverable lines:21
Total lines:39
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
<Main>$(...)027
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Program.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using MySqlConnector;
 2
 03var builder = WebApplication.CreateBuilder(args);
 4
 5// Add services to the container.
 6
 07builder.Services.AddControllers();
 8// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 09builder.Services.AddEndpointsApiExplorer();
 010builder.Services.AddSwaggerGen();
 11
 12//Adds SQL data source from appsettings.json file
 013builder.Services.AddMySqlDataSource(builder.Configuration.GetConnectionString("Default")!);
 14
 15
 016var app = builder.Build();
 17
 18// Configure CORS
 019app.UseCors(options =>
 020{
 021    options.WithOrigins("http://localhost:5173")
 022           .AllowAnyMethod()
 023           .AllowAnyHeader();
 024});
 25
 26// Configure the HTTP request pipeline.
 027if (app.Environment.IsDevelopment())
 028{
 029    app.UseSwagger();
 030    app.UseSwaggerUI();
 031}
 32
 033app.UseHttpsRedirection();
 34
 035app.UseAuthorization();
 36
 037app.MapControllers();
 38
 039app.Run();
+
+
+
+
+

Methods/Properties

+<Main>$(string[])
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_Property.html b/coveragereport/chemistry_cafe_api.dll_Property.html new file mode 100644 index 0000000..1e1b00f --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_Property.html @@ -0,0 +1,229 @@ + + + + + + + +Chemistry_Cafe_API.Models.Property - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.Property
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Property.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:28
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Property.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class Property
 4    {
 05        public Guid property_list_uuid { get; set; }
 06        public Guid parent_uuid { get; set; }
 07        public string? version { get; set; }
 08        public bool property_list_isDel {  get; set; }
 09        public Guid property_version_uuid { get; set; }
 010        public Guid parent_property_uuid { get; set; }
 011        public string? frozen_version { get; set; }
 012        public Guid tag_mechanism_uuid { get; set; }
 013        public Guid property_type { get; set; }
 014        public float? float_value { get; set; }
 015        public double? double_value { get; set; }
 016        public int? int_value { get; set; }
 017        public string? string_value { get; set; }
 018        public string? action { get; set; }
 019        public Guid user_uuid { get; set; }
 020        public DateTime datetime { get; set; }
 021        public bool property_version_isDel { get; set; }
 022        public Guid property_type_uuid { get; set; }
 023        public string? name { get; set; }
 024        public string? units { get; set; }
 025        public string? validation { get; set; }
 026        public bool property_type_isDel { get; set; }
 27    }
 28}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyList.html b/coveragereport/chemistry_cafe_api.dll_PropertyList.html new file mode 100644 index 0000000..4b68785 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyList.html @@ -0,0 +1,175 @@ + + + + + + + +Chemistry_Cafe_API.Models.PropertyList - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.PropertyList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:10
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyList.cs

+
+ + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class PropertyList
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid parent_uuid { get; set; }
 07        public string? version { get; set; }
 08        public bool isDel {  get; set; }
 9    }
 10}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyListController.html b/coveragereport/chemistry_cafe_api.dll_PropertyListController.html new file mode 100644 index 0000000..4806c83 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyListController.html @@ -0,0 +1,248 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.PropertyListController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.PropertyListController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyListController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:64
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyListController(...)03
Get()018
Get()018
GetProperties()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyListController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class PropertyListController : ControllerBase
 13    {
 14        private PropertyListService propertyListService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public PropertyListController([FromServices] MySqlDataSource db)
 018        {
 019            this.propertyListService = new PropertyListService(db);
 020        }
 21
 22        // GET: api/PropertyList/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<PropertyList>> Get()
 025        {
 026            return await propertyListService.GetPropertyListsAsync();
 027        }
 28
 29        // GET api/PropertyList/5
 30        [HttpGet("{uuid}")]
 31        public async Task<PropertyList?> Get(Guid uuid)
 032        {
 033            return await propertyListService.GetPropertyListAsync(uuid);
 034        }
 35
 36        // GET api/PropertyList/Properties/5
 37        [HttpGet("Properties/{parent_uuid}")]
 38        public async Task<IReadOnlyList<Property>> GetProperties(Guid parent_uuid)
 039        {
 040            return await propertyListService.GetPropertiesAsync(parent_uuid);
 041        }
 42
 43        // POST api/PropertyList/create
 44        [HttpPost("create")]
 45        public async Task<Guid> Create([FromBody] PropertyList userPreferneces)
 046        {
 047            return await propertyListService.CreatePropertyListAsync(userPreferneces);
 048        }
 49
 50        // PUT api/PropertyList/5
 51        [HttpPut("update")]
 52        public async Task Put([FromBody] PropertyList userpreferences)
 053        {
 054            await propertyListService.UpdatePropertyListAsync(userpreferences);
 055        }
 56
 57        // DELETE api/PropertyList/delete/5
 58        [HttpDelete("delete/{uuid}")]
 59        public async Task Delete(Guid uuid)
 060        {
 061            await propertyListService.DeletePropertyListAsync(uuid);
 062        }
 63    }
 64}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyListService.html b/coveragereport/chemistry_cafe_api.dll_PropertyListService.html new file mode 100644 index 0000000..df7520b --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyListService.html @@ -0,0 +1,359 @@ + + + + + + + +Chemistry_Cafe_API.Services.PropertyListService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.PropertyListService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyListService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:130
Coverable lines:130
Total lines:171
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyListService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class PropertyListService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<PropertyList>> GetPropertyListsAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM Property_List WHERE isDel = 0";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<PropertyList?> GetPropertyListAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM Property_List WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<IReadOnlyList<Property>> GetPropertiesAsync(Guid parent_uuid)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            command.CommandText = @"SELECT * FROM Property_List RIGHT JOIN Property_Version ON Property_List.uuid = Prop
 038                LEFT JOIN PropertyType ON Property_Version.property_type = PropertyType.uuid
 039                WHERE Property_List.parent_uuid = @parent_uuid AND Property_List.isDel = 0 AND Property_Version.isDel = 
 040            command.Parameters.AddWithValue("@parent_uuid", parent_uuid);
 41
 042            return await ReadAllPropertiesAsync(await command.ExecuteReaderAsync());
 043        }
 44
 45        public async Task<Guid> CreatePropertyListAsync(PropertyList userPreferences)
 046        {
 047            using var connection = await database.OpenConnectionAsync();
 048            using var command = connection.CreateCommand();
 49
 050            Guid userPreferencesID = Guid.NewGuid();
 51
 052            command.CommandText = @"INSERT INTO Property_List (uuid, parent_uuid, version) VALUES (@uuid, @parent_uuid, 
 53
 054            command.Parameters.AddWithValue("@uuid", userPreferencesID);
 055            command.Parameters.AddWithValue("@parent_uuid", userPreferences.parent_uuid);
 056            command.Parameters.AddWithValue("@version", userPreferences.version);
 57
 058            await command.ExecuteNonQueryAsync();
 59
 060            return userPreferencesID;
 061        }
 62        public async Task UpdatePropertyListAsync(PropertyList userPreferences)
 063        {
 064            using var connection = await database.OpenConnectionAsync();
 065            using var command = connection.CreateCommand();
 66
 067            command.CommandText = @"UPDATE Property_List SET parent_uuid = @parent_uuid, version = @version, isDel = @is
 68
 069            command.Parameters.AddWithValue("@uuid", userPreferences.uuid);
 070            command.Parameters.AddWithValue("@parent_uuid", userPreferences.parent_uuid);
 071            command.Parameters.AddWithValue("@version", userPreferences.version);
 072            command.Parameters.AddWithValue("@isDel", userPreferences.isDel);
 73
 074            await command.ExecuteNonQueryAsync();
 075        }
 76
 77        public async Task DeletePropertyListAsync(Guid uuid)
 078        {
 079            using var connection = await database.OpenConnectionAsync();
 080            using var command = connection.CreateCommand();
 81
 082            command.CommandText = @"UPDATE Property_List SET isDel = 1 WHERE uuid = @uuid;";
 83
 084            command.Parameters.AddWithValue("@uuid", uuid);
 85
 086            await command.ExecuteNonQueryAsync();
 087        }
 88
 89        private async Task<IReadOnlyList<PropertyList>> ReadAllAsync(DbDataReader reader)
 090        {
 091            var propertyList = new List<PropertyList>();
 092            using (reader)
 093            {
 094                while (await reader.ReadAsync())
 095                {
 096                    var property = new PropertyList
 097                    {
 098                        uuid = reader.GetGuid(0),
 099                        parent_uuid = reader.GetGuid(1),
 0100                        version = reader.GetString(2),
 0101                        isDel = reader.GetBoolean(3),
 0102                    };
 0103                    propertyList.Add(property);
 0104                }
 0105            }
 0106            return propertyList;
 0107        }
 108
 109        private async Task<IReadOnlyList<Property>> ReadAllPropertiesAsync(DbDataReader reader)
 0110        {
 0111            var propertyList = new List<Property>();
 0112            using (reader)
 0113            {
 0114                while (await reader.ReadAsync())
 0115                {
 0116                    var property = new Property
 0117                    {
 0118                        property_list_uuid = reader.GetGuid(0),
 0119                        parent_uuid = reader.GetGuid(1),
 0120                        version = reader.GetString(2),
 0121                        property_list_isDel = reader.GetBoolean(3),
 0122                        property_version_uuid = reader.GetGuid(4),
 0123                        parent_property_uuid = reader.GetGuid(5),
 0124                        frozen_version = reader.GetString(6),
 0125                        tag_mechanism_uuid = reader.GetGuid(7),
 0126                        property_type = reader.GetGuid(8),
 0127                        user_uuid = reader.GetGuid(14),
 0128                        datetime = reader.GetDateTime(15),
 0129                        property_version_isDel = reader.GetBoolean(16),
 0130                        property_type_uuid = reader.GetGuid(17),
 0131                        property_type_isDel = reader.GetBoolean(21)
 0132                    };
 0133                    if (!reader.IsDBNull(9))
 0134                    {
 0135                        property.float_value = reader.GetFloat(9);
 0136                    }
 0137                    if (!reader.IsDBNull(10))
 0138                    {
 0139                        property.double_value = reader.GetDouble(10);
 0140                    }
 0141                    if (!reader.IsDBNull(11))
 0142                    {
 0143                        property.int_value = reader.GetInt32(11);
 0144                    }
 0145                    if (!reader.IsDBNull(12))
 0146                    {
 0147                        property.string_value = reader.GetString(12);
 0148                    }
 0149                    if (!reader.IsDBNull(13))
 0150                    {
 0151                        property.action = reader.GetString(13);
 0152                    }
 0153                    if (!reader.IsDBNull(18))
 0154                    {
 0155                        property.name = reader.GetString(18);
 0156                    }
 0157                    if (!reader.IsDBNull(19))
 0158                    {
 0159                        property.units = reader.GetString(19);
 0160                    }
 0161                    if (!reader.IsDBNull(20))
 0162                    {
 0163                        property.validation = reader.GetString(20);
 0164                    }
 0165                    propertyList.Add(property);
 0166                }
 0167            }
 0168            return propertyList;
 0169        }
 170    }
 171}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyType.html b/coveragereport/chemistry_cafe_api.dll_PropertyType.html new file mode 100644 index 0000000..fe71ae4 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyType.html @@ -0,0 +1,178 @@ + + + + + + + +Chemistry_Cafe_API.Models.PropertyType - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.PropertyType
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyType.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyType.cs

+
+ + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class PropertyType
 4    {
 05        public Guid uuid { get; set; }
 06        public string? name { get; set; }
 07        public string? units { get; set; }
 08        public string? validation { get; set; }
 09        public bool isDel { get; set; }
 10    }
 11}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyTypeController.html b/coveragereport/chemistry_cafe_api.dll_PropertyTypeController.html new file mode 100644 index 0000000..d2730df --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyTypeController.html @@ -0,0 +1,248 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.PropertyTypeController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.PropertyTypeController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyTypeController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:64
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyTypeController(...)03
Get()018
Get()018
GetValidation()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyTypeController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class PropertyTypeController : ControllerBase
 13    {
 14        private PropertyTypeService propertyTypeService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public PropertyTypeController([FromServices] MySqlDataSource db)
 018        {
 019            this.propertyTypeService = new PropertyTypeService(db);
 020        }
 21
 22        // GET: api/PropertyType/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<PropertyType>> Get()
 025        {
 026            return await propertyTypeService.GetPropertyTypesAsync();
 027        }
 28
 29        // GET api/PropertyType/5
 30        [HttpGet("{uuid}")]
 31        public async Task<PropertyType?> Get(Guid uuid)
 032        {
 033            return await propertyTypeService.GetPropertyTypeAsync(uuid);
 034        }
 35
 36        // GET: api/PropertyType/Validation/uuid
 37        [HttpGet("Validation/{validation}")]
 38        public async Task<IReadOnlyList<PropertyType>> GetValidation(string validation)
 039        {
 040            return await propertyTypeService.GetPropertyTypeValidationAsync(validation);
 041        }
 42
 43        // POST api/PropertyType/create
 44        [HttpPost("create")]
 45        public async Task<Guid> Create([FromBody] PropertyType propertyType)
 046        {
 047            return await propertyTypeService.CreatePropertyTypeAsync(propertyType);
 048        }
 49
 50        // PUT api/PropertyType/5
 51        [HttpPut("update")]
 52        public async Task Put([FromBody] PropertyType propertytype)
 053        {
 054            await propertyTypeService.UpdatePropertyTypeAsync(propertytype);
 055        }
 56
 57        // DELETE api/PropertyType/delete/5
 58        [HttpDelete("delete/{uuid}")]
 59        public async Task Delete(Guid uuid)
 060        {
 061            await propertyTypeService.DeletePropertyTypeAsync(uuid);
 062        }
 63    }
 64}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyTypeService.html b/coveragereport/chemistry_cafe_api.dll_PropertyTypeService.html new file mode 100644 index 0000000..a4a4318 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyTypeService.html @@ -0,0 +1,306 @@ + + + + + + + +Chemistry_Cafe_API.Services.PropertyTypeService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.PropertyTypeService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyTypeService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:78
Coverable lines:78
Total lines:120
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyTypeService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5using System.Xml;
 6using System.Xml.Linq;
 7
 8
 9namespace Chemistry_Cafe_API.Services
 10{
 011    public class PropertyTypeService(MySqlDataSource database)
 12    {
 13        public async Task<IReadOnlyList<PropertyType>> GetPropertyTypesAsync()
 014        {
 015            using var connection = await database.OpenConnectionAsync();
 016            using var command = connection.CreateCommand();
 17
 018            command.CommandText = "SELECT * FROM PropertyType WHERE isDel = 0";
 019            return await ReadAllAsync(await command.ExecuteReaderAsync());
 020        }
 21
 22        public async Task<PropertyType?> GetPropertyTypeAsync(Guid uuid)
 023        {
 024            using var connection = await database.OpenConnectionAsync();
 025            using var command = connection.CreateCommand();
 26
 027            command.CommandText = @"SELECT * FROM PropertyType WHERE uuid = @id";
 028            command.Parameters.AddWithValue("@id", uuid);
 29
 030            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 031            return result.FirstOrDefault();
 032        }
 33
 34        public async Task<IReadOnlyList<PropertyType>> GetPropertyTypeValidationAsync(string validation)
 035        {
 036            using var connection = await database.OpenConnectionAsync();
 037            using var command = connection.CreateCommand();
 38
 039            command.CommandText = @"SELECT * FROM PropertyType WHERE validation = @validation AND isDel = 0";
 040            command.Parameters.AddWithValue("@validation", validation);
 41
 042            return await ReadAllAsync(await command.ExecuteReaderAsync());
 043        }
 44
 45        public async Task<Guid> CreatePropertyTypeAsync(PropertyType propertyType)
 046        {
 047            using var connection = await database.OpenConnectionAsync();
 048            using var command = connection.CreateCommand();
 49
 050            Guid propertytypeID = Guid.NewGuid();
 51
 052            command.CommandText = @"INSERT INTO PropertyType (uuid, name, units, validation) VALUES (@uuid, @name, @unit
 53
 054            command.Parameters.AddWithValue("@uuid", propertytypeID);
 055            command.Parameters.AddWithValue("@name", propertyType.name);
 056            command.Parameters.AddWithValue("@units", propertyType.units);
 057            command.Parameters.AddWithValue("@validation", propertyType.validation);
 58
 059            await command.ExecuteNonQueryAsync();
 60
 061            return propertytypeID;
 062        }
 63        public async Task UpdatePropertyTypeAsync(PropertyType propertyType)
 064        {
 065            using var connection = await database.OpenConnectionAsync();
 066            using var command = connection.CreateCommand();
 67
 068            command.CommandText = @"UPDATE PropertyType SET name = @name, units = @units, validation = @validation, isDe
 69
 070            command.Parameters.AddWithValue("@uuid", propertyType.uuid);
 071            command.Parameters.AddWithValue("@name", propertyType.name);
 072            command.Parameters.AddWithValue("@units", propertyType.units);
 073            command.Parameters.AddWithValue("@validation", propertyType.validation);
 074            command.Parameters.AddWithValue("@isDel", propertyType.isDel);
 75
 076            await command.ExecuteNonQueryAsync();
 077        }
 78
 79        public async Task DeletePropertyTypeAsync(Guid uuid)
 080        {
 081            using var connection = await database.OpenConnectionAsync();
 082            using var command = connection.CreateCommand();
 83
 084            command.CommandText = @"UPDATE PropertyType SET isDel = 1 WHERE uuid = @uuid;";
 85
 086            command.Parameters.AddWithValue("@uuid", uuid);
 87
 088            await command.ExecuteNonQueryAsync();
 089        }
 90
 91        private async Task<IReadOnlyList<PropertyType>> ReadAllAsync(DbDataReader reader)
 092        {
 093            var propertytypes = new List<PropertyType>();
 094            using (reader)
 095            {
 096                while (await reader.ReadAsync())
 097                {
 098                    var propertytype = new PropertyType();
 099                    propertytype.uuid = reader.GetGuid(0);
 0100                    if (!reader.IsDBNull(1))
 0101                    {
 0102                        propertytype.name = reader.GetString(1);
 0103                    }
 0104                    if (!reader.IsDBNull(2))
 0105                    {
 0106                        propertytype.units = reader.GetString(2);
 0107                    }
 0108                    if (!reader.IsDBNull(3))
 0109                    {
 0110                        propertytype.validation = reader.GetString(3);
 0111                    }
 0112                    propertytype.isDel = reader.GetBoolean(4);
 113
 0114                    propertytypes.Add(propertytype);
 0115                }
 0116            }
 0117            return propertytypes;
 0118        }
 119    }
 120}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyVersion.html b/coveragereport/chemistry_cafe_api.dll_PropertyVersion.html new file mode 100644 index 0000000..0b8bf03 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyVersion.html @@ -0,0 +1,202 @@ + + + + + + + +Chemistry_Cafe_API.Models.PropertyVersion - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.PropertyVersion
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyVersion.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:13
Coverable lines:13
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\PropertyVersion.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class PropertyVersion
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid parent_property_uuid { get; set; }
 07        public string? frozen_version { get; set; }
 08        public Guid tag_mechanism_uuid { get; set; }
 09        public Guid property_type { get; set; }
 010        public float? float_value { get; set; }
 011        public double? double_value { get; set; }
 012        public int? int_value { get; set; }
 013        public string? string_value { get; set; }
 014        public string? action { get; set; }
 015        public Guid user_uuid { get; set; }
 016        public DateTime datetime { get; set; }
 017        public bool isDel {  get; set; }
 18    }
 19}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyVersionController.html b/coveragereport/chemistry_cafe_api.dll_PropertyVersionController.html new file mode 100644 index 0000000..b7fed5e --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyVersionController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.PropertyVersionController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.PropertyVersionController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyVersionController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyVersionController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\PropertyVersionController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class PropertyVersionController : ControllerBase
 13    {
 14        private PropertyVersionService propertyVersionService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public PropertyVersionController([FromServices] MySqlDataSource db)
 018        {
 019            this.propertyVersionService = new PropertyVersionService(db);
 020        }
 21
 22        // GET: api/PropertyVersion/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<PropertyVersion>> Get()
 025        {
 026            return await propertyVersionService.GetPropertyVersionsAsync();
 027        }
 28
 29        // GET api/PropertyVersion/5
 30        [HttpGet("{uuid}")]
 31        public async Task<PropertyVersion?> Get(Guid uuid)
 032        {
 033            return await propertyVersionService.GetPropertyVersionAsync(uuid);
 034        }
 35
 36        // POST api/PropertyVersion/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] PropertyVersion newPropertyVersion)
 039        {
 040            return await propertyVersionService.CreatePropertyVersionAsync(newPropertyVersion);
 041        }
 42
 43        // PUT api/PropertyVersion/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] PropertyVersion newPropertyVersion)
 046        {
 047            await propertyVersionService.UpdatePropertyVersionAsync(newPropertyVersion);
 048        }
 49
 50        // DELETE api/PropertyVersion/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await propertyVersionService.DeletePropertyVersionAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyVersionService.html b/coveragereport/chemistry_cafe_api.dll_PropertyVersionService.html new file mode 100644 index 0000000..e7ac073 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyVersionService.html @@ -0,0 +1,326 @@ + + + + + + + +Chemistry_Cafe_API.Services.PropertyVersionService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.PropertyVersionService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyVersionService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:107
Coverable lines:107
Total lines:142
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\PropertyVersionService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5using System;
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class PropertyVersionService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<PropertyVersion>> GetPropertyVersionsAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM Property_Version WHERE isDel = 0";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<PropertyVersion?> GetPropertyVersionAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM Property_Version WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<Guid> CreatePropertyVersionAsync(PropertyVersion newPropertyVersion)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            Guid propertyVersionID = Guid.NewGuid();
 38
 039            command.CommandText = @"INSERT INTO Property_Version (uuid, parent_property_uuid, frozen_version, tag_mechan
 040            float_value, double_value, int_value, string_value, action, user_uuid, datetime)
 041            VALUES (@uuid, @parent_property_uuid, @frozen_version, @tag_mechanism_uuid, @property_type, @float_value, @d
 42
 043            command.Parameters.AddWithValue("@uuid", propertyVersionID);
 044            command.Parameters.AddWithValue("@parent_property_uuid", newPropertyVersion.parent_property_uuid);
 045            command.Parameters.AddWithValue("@frozen_version", newPropertyVersion.frozen_version);
 046            command.Parameters.AddWithValue("@tag_mechanism_uuid", newPropertyVersion.tag_mechanism_uuid);
 047            command.Parameters.AddWithValue("@property_type", newPropertyVersion.property_type);
 048            command.Parameters.AddWithValue("@float_value", newPropertyVersion.float_value);
 049            command.Parameters.AddWithValue("@double_value", newPropertyVersion.double_value);
 050            command.Parameters.AddWithValue("@int_value", newPropertyVersion.int_value);
 051            command.Parameters.AddWithValue("@string_value", newPropertyVersion.string_value);
 052            command.Parameters.AddWithValue("@action", newPropertyVersion.action);
 053            command.Parameters.AddWithValue("@user_uuid", newPropertyVersion.user_uuid);
 054            command.Parameters.AddWithValue("@datetime", newPropertyVersion.datetime);
 55
 056            await command.ExecuteNonQueryAsync();
 57
 058            return propertyVersionID;
 059        }
 60        public async Task UpdatePropertyVersionAsync(PropertyVersion propertyVersion)
 061        {
 062            using var connection = await database.OpenConnectionAsync();
 063            using var command = connection.CreateCommand();
 64
 065            command.CommandText = @"UPDATE Property_Version SET family_uuid = @family_uuid, frozen_version = @frozen_ver
 066            property_type = @property_type, float_value = @float_value, double_value = @double_value, int_value = @int_v
 067            user_uuid = @user_uuid, datetime = @datetime, isDel = @isDel WHERE uuid = @uuid;";
 68
 069            command.Parameters.AddWithValue("@uuid", propertyVersion.uuid);
 070            command.Parameters.AddWithValue("@parent_property_uuid", propertyVersion.parent_property_uuid);
 071            command.Parameters.AddWithValue("@frozen_version", propertyVersion.frozen_version);
 072            command.Parameters.AddWithValue("@mechanism_uuid", propertyVersion.tag_mechanism_uuid);
 073            command.Parameters.AddWithValue("@property_type", propertyVersion.property_type);
 074            command.Parameters.AddWithValue("@float_value", propertyVersion.float_value);
 075            command.Parameters.AddWithValue("@double_value", propertyVersion.double_value);
 076            command.Parameters.AddWithValue("@int_value", propertyVersion.int_value);
 077            command.Parameters.AddWithValue("@string_value", propertyVersion.string_value);
 078            command.Parameters.AddWithValue("@action", propertyVersion.action);
 079            command.Parameters.AddWithValue("@user_uuid", propertyVersion.user_uuid);
 080            command.Parameters.AddWithValue("@datetime", propertyVersion.datetime);
 081            command.Parameters.AddWithValue("@isDel", propertyVersion.isDel);
 82
 083            await command.ExecuteNonQueryAsync();
 084        }
 85
 86        public async Task DeletePropertyVersionAsync(Guid uuid)
 087        {
 088            using var connection = await database.OpenConnectionAsync();
 089            using var command = connection.CreateCommand();
 90
 091            command.CommandText = @"UPDATE Property_Version SET isDel = 1 WHERE uuid = @uuid;";
 92
 093            command.Parameters.AddWithValue("@uuid", uuid);
 94
 095            await command.ExecuteNonQueryAsync();
 096        }
 97
 98        private async Task<IReadOnlyList<PropertyVersion>> ReadAllAsync(DbDataReader reader)
 099        {
 0100            var propertyVersion = new List<PropertyVersion>();
 0101            using (reader)
 0102            {
 0103                while (await reader.ReadAsync())
 0104                {
 0105                    var property = new PropertyVersion
 0106                    {
 0107                        uuid = reader.GetGuid(0),
 0108                        parent_property_uuid = reader.GetGuid(1),
 0109                        frozen_version = reader.GetString(2),
 0110                        tag_mechanism_uuid = reader.GetGuid(3),
 0111                        property_type = reader.GetGuid(4),
 0112                        user_uuid = reader.GetGuid(10),
 0113                        datetime = reader.GetDateTime(11),
 0114                        isDel = reader.GetBoolean(12),
 0115                    };
 0116                    if (!reader.IsDBNull(5))
 0117                    {
 0118                        property.float_value = reader.GetFloat(5);
 0119                    }
 0120                    if (!reader.IsDBNull(6))
 0121                    {
 0122                        property.double_value = reader.GetDouble(6);
 0123                    }
 0124                    if (!reader.IsDBNull(7))
 0125                    {
 0126                        property.int_value = reader.GetInt32(7);
 0127                    }
 0128                    if (!reader.IsDBNull(8))
 0129                    {
 0130                        property.string_value = reader.GetString(8);
 0131                    }
 0132                    if (!reader.IsDBNull(9))
 0133                    {
 0134                        property.action = reader.GetString(9);
 0135                    }
 0136                    propertyVersion.Add(property);
 0137                }
 0138            }
 0139            return propertyVersion;
 0140        }
 141    }
 142}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactantProductList.html b/coveragereport/chemistry_cafe_api.dll_ReactantProductList.html new file mode 100644 index 0000000..3210c94 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactantProductList.html @@ -0,0 +1,175 @@ + + + + + + + +Chemistry_Cafe_API.Models.ReactantProductList - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.ReactantProductList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\ReactantProductList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:10
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\ReactantProductList.cs

+
+ + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class ReactantProductList
 4    {
 05        public Guid reactant_product_uuid { get; set; }
 06        public Guid reaction_uuid { get; set; }
 07        public Guid species_uuid { get; set;}
 08        public int quantity { get; set; }
 9    }
 10}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactantProductListController.html b/coveragereport/chemistry_cafe_api.dll_ReactantProductListController.html new file mode 100644 index 0000000..68ea402 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactantProductListController.html @@ -0,0 +1,258 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.ReactantProductListController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.ReactantProductListController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\ReactantProductListController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:25
Coverable lines:25
Total lines:72
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
ReactantProductListController(...)03
Get()018
Get()018
GetReactants()018
GetProducts()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\ReactantProductListController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5using System;
 6
 7// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 8
 9namespace Chemistry_Cafe_API.Controllers
 10{
 11    [Route("api/[controller]")]
 12    [ApiController]
 13    public class ReactantProductListController : ControllerBase
 14    {
 15        private ReactantProductListService userpreferencesService;
 16
 17        //Injects sql data source setup in Program.cs
 018        public ReactantProductListController([FromServices] MySqlDataSource db)
 019        {
 020            this.userpreferencesService = new ReactantProductListService(db);
 021        }
 22
 23        // GET: api/ReactantProductList/all
 24        [HttpGet("all")]
 25        public async Task<IReadOnlyList<ReactantProductList>> Get()
 026        {
 027            return await userpreferencesService.GetReactantProductListsAsync();
 028        }
 29
 30        // GET api/ReactantProductList/5
 31        [HttpGet("{uuid}")]
 32        public async Task<ReactantProductList?> Get(Guid uuid)
 033        {
 034            return await userpreferencesService.GetReactantProductListAsync(uuid);
 035        }
 36
 37        // GET api/ReactantProductList/Reactants/5
 38        [HttpGet("Reactants/{reaction_reactant_list_uuid}")]
 39        public async Task<IReadOnlyList<ReactantsProducts>> GetReactants(Guid reaction_reactant_list_uuid)
 040        {
 041            return await userpreferencesService.GetReactantsAsync(reaction_reactant_list_uuid);
 042        }
 43
 44        // GET api/ReactantProductList/Products/5
 45        [HttpGet("Products/{reaction_product_list_uuid}")]
 46        public async Task<IReadOnlyList<ReactantsProducts>> GetProducts(Guid reaction_product_list_uuid)
 047        {
 048            return await userpreferencesService.GetProductsAsync(reaction_product_list_uuid);
 049        }
 50
 51        // POST api/ReactantProductList/create
 52        [HttpPost("create")]
 53        public async Task Create([FromBody] ReactantProductList reactantProduct)
 054        {
 055            await userpreferencesService.CreateReactantProductListAsync(reactantProduct);
 056        }
 57
 58        // PUT api/ReactantProductList/5
 59        [HttpPut("update")]
 60        public async Task Put([FromBody] ReactantProductList reactantProductList)
 061        {
 062            await userpreferencesService.UpdateReactantProductListAsync(reactantProductList);
 063        }
 64
 65        // DELETE api/ReactantProductList/delete  Body [reaction_product_uuid, species_uuid]
 66        [HttpDelete("delete")]
 67        public async Task Delete([FromBody]DeleteReactantProductList uuid)
 068        {
 069            await userpreferencesService.DeleteReactantProductListAsync(uuid);
 070        }
 71    }
 72}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactantProductListService.html b/coveragereport/chemistry_cafe_api.dll_ReactantProductListService.html new file mode 100644 index 0000000..c0d8207 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactantProductListService.html @@ -0,0 +1,331 @@ + + + + + + + +Chemistry_Cafe_API.Services.ReactantProductListService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.ReactantProductListService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\ReactantProductListService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:96
Coverable lines:96
Total lines:141
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\ReactantProductListService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5using System;
 6
 7
 8namespace Chemistry_Cafe_API.Services
 9{
 010    public class ReactantProductListService(MySqlDataSource database)
 11    {
 12        public async Task<IReadOnlyList<ReactantProductList>> GetReactantProductListsAsync()
 013        {
 014            using var connection = await database.OpenConnectionAsync();
 015            using var command = connection.CreateCommand();
 16
 017            command.CommandText = "SELECT * FROM Reactant_Product_List";
 018            return await ReadAllAsync(await command.ExecuteReaderAsync());
 019        }
 20
 21        public async Task<ReactantProductList?> GetReactantProductListAsync(Guid uuid)
 022        {
 023            using var connection = await database.OpenConnectionAsync();
 024            using var command = connection.CreateCommand();
 25
 026            command.CommandText = @"SELECT * FROM Reactant_Product_List WHERE reactant_product_uuid = @id";
 027            command.Parameters.AddWithValue("@id", uuid);
 28
 029            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 030            return result.FirstOrDefault();
 031        }
 32
 33        public async Task<IReadOnlyList<ReactantsProducts>> GetReactantsAsync(Guid reaction_reactant_list_uuid)
 034        {
 035            using var connection = await database.OpenConnectionAsync();
 036            using var command = connection.CreateCommand();
 37
 038            command.CommandText = "SELECT Reactant_Product_List.reactant_product_uuid, Reactant_Product_List.reaction_uu
 039                "FROM Reactant_Product_List LEFT JOIN Species ON species_uuid = uuid WHERE reactant_product_uuid = @reac
 040            command.Parameters.AddWithValue("@reaction_reactant_list_uuid", reaction_reactant_list_uuid);
 041            return await ReadAllReactantsProductsAsync(await command.ExecuteReaderAsync());
 042        }
 43
 44        public async Task<IReadOnlyList<ReactantsProducts>> GetProductsAsync(Guid reaction_product_list_uuid)
 045        {
 046            using var connection = await database.OpenConnectionAsync();
 047            using var command = connection.CreateCommand();
 48
 049            command.CommandText = "SELECT Reactant_Product_List.reactant_product_uuid, Reactant_Product_List.reaction_uu
 050                "FROM Reactant_Product_List LEFT JOIN Species ON species_uuid = uuid WHERE reactant_product_uuid = @reac
 051            command.Parameters.AddWithValue("@reaction_product_list_uuid", reaction_product_list_uuid);
 052            return await ReadAllReactantsProductsAsync(await command.ExecuteReaderAsync());
 053        }
 54
 55        public async Task CreateReactantProductListAsync(ReactantProductList reactantProduct)
 056        {
 057            using var connection = await database.OpenConnectionAsync();
 058            using var command = connection.CreateCommand();
 59
 60
 061            command.CommandText = @"INSERT INTO Reactant_Product_List (reactant_product_uuid, reaction_uuid, species_uui
 62
 063            command.Parameters.AddWithValue("@reactant_product_uuid", reactantProduct.reactant_product_uuid);
 064            command.Parameters.AddWithValue("@reaction_uuid", reactantProduct.reaction_uuid);
 065            command.Parameters.AddWithValue("@species_uuid", reactantProduct.species_uuid);
 066            command.Parameters.AddWithValue("@quantity", reactantProduct.quantity);
 67
 068            await command.ExecuteNonQueryAsync();
 069        }
 70        public async Task UpdateReactantProductListAsync(ReactantProductList reactantProduct)
 071        {
 072            using var connection = await database.OpenConnectionAsync();
 073            using var command = connection.CreateCommand();
 74
 075            command.CommandText = @"UPDATE Reactant_Product_List SET quantity = @quantity WHERE reactant_product_uuid = 
 76
 077            command.Parameters.AddWithValue("@reactant_product_uuid", reactantProduct.reactant_product_uuid);
 078            command.Parameters.AddWithValue("@reaction_uuid", reactantProduct.reaction_uuid);
 079            command.Parameters.AddWithValue("@species_uuid", reactantProduct.species_uuid);
 080            command.Parameters.AddWithValue("@quantity", reactantProduct.quantity);
 81
 82
 83
 084            await command.ExecuteNonQueryAsync();
 085        }
 86
 87        public async Task DeleteReactantProductListAsync(DeleteReactantProductList uuids)
 088        {
 089            using var connection = await database.OpenConnectionAsync();
 090            using var command = connection.CreateCommand();
 91
 092            command.CommandText = @"DELETE FROM Reactant_Product_List WHERE reactant_product_uuid = @reactant_product_uu
 93
 094            command.Parameters.AddWithValue("@reactant_product_uuid", uuids.reactant_product_uuid);
 095            command.Parameters.AddWithValue("@species_uuid", uuids.species_uuid);
 96
 097            await command.ExecuteNonQueryAsync();
 098        }
 99
 100        private async Task<IReadOnlyList<ReactantProductList>> ReadAllAsync(DbDataReader reader)
 0101        {
 0102            var reactantProductList = new List<ReactantProductList>();
 0103            using (reader)
 0104            {
 0105                while (await reader.ReadAsync())
 0106                {
 0107                    var property = new ReactantProductList
 0108                    {
 0109                        reactant_product_uuid = reader.GetGuid(0),
 0110                        reaction_uuid = reader.GetGuid(1),
 0111                        species_uuid = reader.GetGuid(2),
 0112                        quantity = reader.GetInt32(3)
 0113                    };
 0114                    reactantProductList.Add(property);
 0115                }
 0116            }
 0117            return reactantProductList;
 0118        }
 119
 120        private async Task<IReadOnlyList<ReactantsProducts>> ReadAllReactantsProductsAsync(DbDataReader reader)
 0121        {
 0122            var reactantProductList = new List<ReactantsProducts>();
 0123            using (reader)
 0124            {
 0125                while (await reader.ReadAsync())
 0126                {
 0127                    var property = new ReactantsProducts
 0128                    {
 0129                        reactant_product_uuid = reader.GetGuid(0),
 0130                        reaction_uuid = reader.GetGuid(1),
 0131                        species_uuid = reader.GetGuid(2),
 0132                        quantity = reader.GetInt32(3),
 0133                        type = reader.GetString(4)
 0134                    };
 0135                    reactantProductList.Add(property);
 0136                }
 0137            }
 0138            return reactantProductList;
 0139        }
 140    }
 141}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactantsProducts.html b/coveragereport/chemistry_cafe_api.dll_ReactantsProducts.html new file mode 100644 index 0000000..fa585f1 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactantsProducts.html @@ -0,0 +1,178 @@ + + + + + + + +Chemistry_Cafe_API.Models.ReactantsProducts - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.ReactantsProducts
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\ReactantsProducts.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\ReactantsProducts.cs

+
+ + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class ReactantsProducts
 4    {
 05        public Guid reactant_product_uuid { get; set; }
 06        public Guid reaction_uuid { get; set; }
 07        public Guid species_uuid { get; set;}
 08        public int quantity { get; set; }
 09        public string? type { get; set; }
 10    }
 11}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_Reaction.html b/coveragereport/chemistry_cafe_api.dll_Reaction.html new file mode 100644 index 0000000..b333894 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_Reaction.html @@ -0,0 +1,181 @@ + + + + + + + +Chemistry_Cafe_API.Models.Reaction - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.Reaction
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Reaction.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Reaction.cs

+
+ + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class Reaction
 4    {
 05        public Guid uuid { get; set; }
 06        public string? type { get; set; }
 07        public bool isDel {  get; set; }
 08        public Guid reactant_list_uuid { get; set; }
 09        public Guid product_list_uuid { get; set; }
 010        public string reaction_string {  get; set; }
 11    }
 12}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactionController.html b/coveragereport/chemistry_cafe_api.dll_ReactionController.html new file mode 100644 index 0000000..8aebc59 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactionController.html @@ -0,0 +1,258 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.ReactionController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.ReactionController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\ReactionController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:25
Coverable lines:25
Total lines:72
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
ReactionController(...)03
Get()018
Get()018
GetString()018
GetTags()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\ReactionController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class ReactionController : ControllerBase
 13    {
 14        private ReactionService reactionService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public ReactionController([FromServices] MySqlDataSource db)
 018        {
 019            this.reactionService = new ReactionService(db);
 020        }
 21
 22        // GET: api/Reaction/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<Reaction>> Get()
 025        {
 026            return await reactionService.GetReactionsAsync();
 027        }
 28
 29        // GET api/Reaction/5
 30        [HttpGet("{uuid}")]
 31        public async Task<Reaction?> Get(Guid uuid)
 032        {
 033            return await reactionService.GetReactionAsync(uuid);
 034        }
 35
 36        // GET api/Reaction/String/5
 37        [HttpGet("String/{uuid}")]
 38        public async Task<String?> GetString(Guid uuid)
 039        {
 040            return await reactionService.GetReactionStringAsync(uuid);
 041        }
 42
 43        // GET api/Reaction/TagMechanism/5
 44        [HttpGet("TagMechanism/{tag_mechanism_uuid}")]
 45        public async Task<IReadOnlyList<Reaction>> GetTags(Guid tag_mechanism_uuid)
 046        {
 047            return await reactionService.GetTags(tag_mechanism_uuid);
 048        }
 49
 50        // POST api/Reaction/create
 51        [HttpPost("create")]
 52
 53        public async Task<Guid> Create([FromBody] string type)
 054        {
 055            return await reactionService.CreateReactionAsync(type);
 056        }
 57
 58        // PUT api/Reaction/5
 59        [HttpPut("update")]
 60        public async Task Put([FromBody] Reaction reaction)
 061        {
 062            await reactionService.UpdateReactionAsync(reaction);
 063        }
 64
 65        // DELETE api/Reaction/delete/5
 66        [HttpDelete("delete/{uuid}")]
 67        public async Task Delete(Guid uuid)
 068        {
 069            await reactionService.DeleteReactionAsync(uuid);
 070        }
 71    }
 72}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactionService.html b/coveragereport/chemistry_cafe_api.dll_ReactionService.html new file mode 100644 index 0000000..f6b838a --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactionService.html @@ -0,0 +1,391 @@ + + + + + + + +Chemistry_Cafe_API.Services.ReactionService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.ReactionService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\ReactionService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:142
Coverable lines:142
Total lines:203
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\ReactionService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5using System;
 6using System.Collections.Generic;
 7
 8
 9namespace Chemistry_Cafe_API.Services
 10{
 011    public class ReactionService(MySqlDataSource database)
 12    {
 13        public async Task<IReadOnlyList<Reaction>> GetReactionsAsync()
 014        {
 015            using var connection = await database.OpenConnectionAsync();
 016            using var command = connection.CreateCommand();
 17
 018            command.CommandText = "SELECT * FROM Reaction WHERE isDel = 0";
 019            var list = ReadAllAsync(await command.ExecuteReaderAsync()).Result;
 20
 021            List<string> reactions = new List<string>();
 022            foreach (var item in list)
 023            {
 024                reactions.Add(GetReactionStringAsync(item.uuid).Result);
 025            }
 26
 027            return await ReadAllAsync(await command.ExecuteReaderAsync(), reactions);
 028        }
 29
 30        public async Task<Reaction?> GetReactionAsync(Guid uuid)
 031        {
 032            using var connection = await database.OpenConnectionAsync();
 033            using var command = connection.CreateCommand();
 34
 035            command.CommandText = @"SELECT * FROM Reaction WHERE uuid = @id";
 036            command.Parameters.AddWithValue("@id", uuid);
 37
 038            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 039            List<string> reactions = new List<string>();
 040            foreach (var item in result)
 041            {
 042                reactions.Add(GetReactionStringAsync(item.uuid).Result);
 043            }
 44
 045            var result2 = await ReadAllAsync(await command.ExecuteReaderAsync(), reactions);
 046            return result2.FirstOrDefault();
 047        }
 48
 49        public async Task<IReadOnlyList<Reaction>> GetTags(Guid tag_mechanism_uuid)
 050        {
 051            using var connection = await database.OpenConnectionAsync();
 052            using var command = connection.CreateCommand();
 53
 054            command.CommandText = @"SELECT Reaction.uuid, Reaction.type, Reaction.isDel, Reaction.reactant_list_uuid, Re
 055            command.Parameters.AddWithValue("@tag_mechanism_uuid", tag_mechanism_uuid);
 56
 057            var list = ReadAllAsync(await command.ExecuteReaderAsync()).Result;
 58
 059            List<string> reactions = new List<string>();
 060            foreach (var item in list)
 061            {
 062                reactions.Add(GetReactionStringAsync(item.uuid).Result);
 063            }
 64
 065            return await ReadAllAsync(await command.ExecuteReaderAsync(), reactions);
 066        }
 67
 68        public async Task<String?> GetReactionStringAsync(Guid uuid)
 069        {
 070            using var connection = await database.OpenConnectionAsync();
 071            using var command = connection.CreateCommand();
 72
 073            command.CommandText = @"SELECT * FROM Reaction WHERE uuid = @id AND isDel = 0";
 074            command.Parameters.AddWithValue("@id", uuid);
 75
 076            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 77
 078            ReactantProductListService reactantProductListService = new ReactantProductListService(database);
 79
 080            var reactants = reactantProductListService.GetReactantsAsync(result[0].reactant_list_uuid).Result;
 081            var products = reactantProductListService.GetProductsAsync(result[0].product_list_uuid).Result;
 82
 083            string reactionString = "";
 084            bool isReact = false;
 085            bool isProduct = false;
 86
 087            foreach( var reactant in reactants)
 088            {
 089                reactionString += "" + reactant.quantity + reactant.type + " + ";
 090                isReact = true;
 091            }
 092            if (isReact)
 093            {
 094                reactionString = reactionString.Remove(reactionString.LastIndexOf('+'));
 095            }
 96            else
 097            {
 098                reactionString += "<none> ";
 099            }
 100
 0101            reactionString += "-> ";
 102
 0103            foreach ( var product in products)
 0104            {
 0105                reactionString += "" + product.quantity + product.type + " + ";
 0106                isProduct = true;
 0107            }
 108
 0109            if (isProduct)
 0110            {
 0111                reactionString = reactionString.Remove(reactionString.LastIndexOf('+'));
 0112            }
 113            else
 0114            {
 0115                reactionString += "<none>";
 0116            }
 117
 0118            return reactionString;
 0119        }
 120
 121
 122        public async Task<Guid> CreateReactionAsync(string type)
 0123        {
 0124            using var connection = await database.OpenConnectionAsync();
 0125            using var command = connection.CreateCommand();
 126
 0127            Guid reactionID = Guid.NewGuid();
 0128            Guid reactant_list_uuid = Guid.NewGuid();
 0129            Guid product_list_uuid = Guid.NewGuid();
 130
 0131            command.CommandText = @"INSERT INTO Reaction (uuid, type, reactant_list_uuid, product_list_uuid) VALUES (@uu
 132
 0133            command.Parameters.AddWithValue("@uuid", reactionID);
 0134            command.Parameters.AddWithValue("@type", type);
 0135            command.Parameters.AddWithValue("@reactant_list_uuid", reactant_list_uuid);
 0136            command.Parameters.AddWithValue("@product_list_uuid", product_list_uuid);
 137
 0138            await command.ExecuteNonQueryAsync();
 139
 0140            return reactionID;
 0141        }
 142        public async Task UpdateReactionAsync(Reaction reaction)
 0143        {
 0144            using var connection = await database.OpenConnectionAsync();
 0145            using var command = connection.CreateCommand();
 146
 0147            command.CommandText = @"UPDATE Reaction SET type = @type, isDel = @isDel, reactant_list_uuid = @reactant_lis
 148
 0149            command.Parameters.AddWithValue("@uuid", reaction.uuid);
 0150            command.Parameters.AddWithValue("@type", reaction.type);
 0151            command.Parameters.AddWithValue("@isDel", reaction.isDel);
 0152            command.Parameters.AddWithValue("@reactant_list_uuid", reaction.reactant_list_uuid);
 0153            command.Parameters.AddWithValue("@product_list_uuid", reaction.product_list_uuid);
 154
 0155            await command.ExecuteNonQueryAsync();
 0156        }
 157
 158        public async Task DeleteReactionAsync(Guid uuid)
 0159        {
 0160            using var connection = await database.OpenConnectionAsync();
 0161            using var command = connection.CreateCommand();
 162
 0163            command.CommandText = @"UPDATE Reaction SET isDel = 1 WHERE uuid = @uuid;";
 164
 0165            command.Parameters.AddWithValue("@uuid", uuid);
 166
 0167            await command.ExecuteNonQueryAsync();
 0168        }
 169
 170        private async Task<IReadOnlyList<Reaction>> ReadAllAsync(DbDataReader reader, List<string> reactionString = null
 0171        {
 0172            var reactions = new List<Reaction>();
 0173            int i = 0;
 0174            using (reader)
 0175            {
 0176                while (await reader.ReadAsync())
 0177                {
 0178                    var reaction = new Reaction
 0179                    {
 0180                        uuid = reader.GetGuid(0),
 0181                        type = reader.GetString(1),
 0182                        isDel = reader.GetBoolean(2)
 0183                    };
 0184                    if (!reader.IsDBNull(3))
 0185                    {
 0186                        reaction.reactant_list_uuid = reader.GetGuid(3);
 0187                    }
 0188                    if (!reader.IsDBNull(4))
 0189                    {
 0190                        reaction.product_list_uuid = reader.GetGuid(4);
 0191                    }
 0192                    if (reactionString != null)
 0193                    {
 0194                        reaction.reaction_string = reactionString[i];
 0195                    }
 0196                    reactions.Add(reaction);
 0197                    i++;
 0198                }
 0199            }
 0200            return reactions;
 0201        }
 202    }
 203}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_Species.html b/coveragereport/chemistry_cafe_api.dll_Species.html new file mode 100644 index 0000000..e923dcb --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_Species.html @@ -0,0 +1,172 @@ + + + + + + + +Chemistry_Cafe_API.Models.Species - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.Species
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Species.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:9
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\Species.cs

+
+ + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class Species
 4    {
 05        public Guid uuid { get; set; }
 06        public string? type { get; set; }
 07        public bool isDel {  get; set; }
 8    }
 9}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_SpeciesController.html b/coveragereport/chemistry_cafe_api.dll_SpeciesController.html new file mode 100644 index 0000000..59f9f1a --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_SpeciesController.html @@ -0,0 +1,248 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.SpeciesController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.SpeciesController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\SpeciesController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:64
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
SpeciesController(...)03
Get()018
GetTags()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\SpeciesController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class SpeciesController : ControllerBase
 13    {
 14        private SpeciesService speciesService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public SpeciesController([FromServices] MySqlDataSource db)
 018        {
 019            this.speciesService = new SpeciesService(db);
 020        }
 21
 22        // GET: api/Species/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<Species>> Get()
 025        {
 026            return await speciesService.GetSpeciesAsync();
 027        }
 28
 29        // GET api/Species/TagMechanism/5
 30        [HttpGet("TagMechanism/{tag_mechanism_uuid}")]
 31        public async Task<IReadOnlyList<Species>> GetTags(Guid tag_mechanism_uuid)
 032        {
 033            return await speciesService.GetTags(tag_mechanism_uuid);
 034        }
 35
 36        // GET api/Species/5
 37        [HttpGet("{uuid}")]
 38        public async Task<Species?> Get(Guid uuid)
 039        {
 040            return await speciesService.GetSpeciesAsync(uuid);
 041        }
 42
 43        // POST api/Species/create
 44        [HttpPost("create")]
 45        public async Task<Guid> Create([FromBody] string type)
 046        {
 047            return await speciesService.CreateSpeciesAsync(type);
 048        }
 49
 50        // PUT api/Species/5
 51        [HttpPut("update")]
 52        public async Task Put([FromBody] Species species)
 053        {
 054            await speciesService.UpdateSpeciesAsync(species);
 055        }
 56
 57        // DELETE api/Species/delete/5
 58        [HttpDelete("delete/{uuid}")]
 59        public async Task Delete(Guid uuid)
 060        {
 061            await speciesService.DeleteSpeciesAsync(uuid);
 062        }
 63    }
 64}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_SpeciesService.html b/coveragereport/chemistry_cafe_api.dll_SpeciesService.html new file mode 100644 index 0000000..f99bbd5 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_SpeciesService.html @@ -0,0 +1,290 @@ + + + + + + + +Chemistry_Cafe_API.Services.SpeciesService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.SpeciesService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\SpeciesService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:65
Coverable lines:65
Total lines:104
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
SpeciesService(...)02
GetSpeciesAsync()062
GetSpeciesAsync()065
GetTags()064
CreateSpeciesAsync()056
UpdateSpeciesAsync()060
DeleteSpeciesAsync()053
ReadAllAsync()041
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\SpeciesService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class SpeciesService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<Species>> GetSpeciesAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM Species WHERE isDel = 0";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<Species?> GetSpeciesAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM Species WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<IReadOnlyList<Species>> GetTags(Guid tag_mechanism_uuid)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            command.CommandText = @"SELECT Species.uuid, Species.type, Species.isDel FROM TagMechanism_Species_List LEFT
 038            command.Parameters.AddWithValue("@tag_mechanism_uuid", tag_mechanism_uuid);
 39
 040            return await ReadAllAsync(await command.ExecuteReaderAsync());
 041        }
 42
 43        public async Task<Guid> CreateSpeciesAsync(string type)
 044        {
 045            using var connection = await database.OpenConnectionAsync();
 046            using var command = connection.CreateCommand();
 47
 048            Guid speciesID = Guid.NewGuid();
 49
 050            command.CommandText = @"INSERT INTO Species (uuid, type) VALUES (@uuid, @type);";
 51
 052            command.Parameters.AddWithValue("@uuid", speciesID);
 053            command.Parameters.AddWithValue("@type", type);
 54
 055            await command.ExecuteNonQueryAsync();
 56
 057            return speciesID;
 058        }
 59        public async Task UpdateSpeciesAsync(Species species)
 060        {
 061            using var connection = await database.OpenConnectionAsync();
 062            using var command = connection.CreateCommand();
 63
 064            command.CommandText = @"UPDATE Species SET type = @type, isDel = @isDel WHERE uuid = @uuid;";
 65
 066            command.Parameters.AddWithValue("@uuid", species.uuid);
 067            command.Parameters.AddWithValue("@type", species.type);
 068            command.Parameters.AddWithValue("@isDel", species.isDel);
 69
 070            await command.ExecuteNonQueryAsync();
 071        }
 72
 73        public async Task DeleteSpeciesAsync(Guid uuid)
 074        {
 075            using var connection = await database.OpenConnectionAsync();
 076            using var command = connection.CreateCommand();
 77
 078            command.CommandText = @"UPDATE Species SET isDel = 1 WHERE uuid = @uuid;";
 79
 080            command.Parameters.AddWithValue("@uuid", uuid);
 81
 082            await command.ExecuteNonQueryAsync();
 083        }
 84
 85        private async Task<IReadOnlyList<Species>> ReadAllAsync(DbDataReader reader)
 086        {
 087            var speciess = new List<Species>();
 088            using (reader)
 089            {
 090                while (await reader.ReadAsync())
 091                {
 092                    var species = new Species
 093                    {
 094                        uuid = reader.GetGuid(0),
 095                        type = reader.GetString(1),
 096                        isDel = reader.GetBoolean(2),
 097                    };
 098                    speciess.Add(species);
 099                }
 0100            }
 0101            return speciess;
 0102        }
 103    }
 104}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanism.html b/coveragereport/chemistry_cafe_api.dll_TagMechanism.html new file mode 100644 index 0000000..07a8119 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanism.html @@ -0,0 +1,172 @@ + + + + + + + +Chemistry_Cafe_API.Models.TagMechanism - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.TagMechanism
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanism.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:9
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanism.cs

+
+ + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class TagMechanism
 4    {
 05        public Guid uuid { get; set; }
 06        public string? tag { get; set; }
 07        public bool isDel {  get; set; }
 8    }
 9}
+
+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismController.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismController.html new file mode 100644 index 0000000..82943c6 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismController.html @@ -0,0 +1,247 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.TagMechanismController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.TagMechanismController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:63
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
TagMechanismController(...)03
Get()018
Get()018
GetTags()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class TagMechanismController : ControllerBase
 13    {
 14        private TagMechanismService tagMechanismService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public TagMechanismController([FromServices] MySqlDataSource db)
 018        {
 019            this.tagMechanismService = new TagMechanismService(db);
 020        }
 21
 22        // GET: api/TagMechanism/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<TagMechanism>> Get()
 025        {
 026            return await tagMechanismService.GetTagMechanismsAsync();
 027        }
 28
 29        // GET api/TagMechanism/5
 30        [HttpGet("{uuid}")]
 31        public async Task<TagMechanism?> Get(Guid uuid)
 032        {
 033            return await tagMechanismService.GetTagMechanismAsync(uuid);
 034        }
 35
 36        [HttpGet("Family/{family_uuid}")]
 37        public async Task<IReadOnlyList<TagMechanism>> GetTags(Guid family_uuid)
 038        {
 039            return await tagMechanismService.GetTagsAsync(family_uuid);
 040        }
 41
 42        // POST api/TagMechanism/create
 43        [HttpPost("create")]
 44        public async Task<Guid> Create([FromBody] string tag)
 045        {
 046            return await tagMechanismService.CreateTagMechanismAsync(tag);
 047        }
 48
 49        // PUT api/TagMechanism/5
 50        [HttpPut("update")]
 51        public async Task Put([FromBody] TagMechanism tagMechanism)
 052        {
 053            await tagMechanismService.UpdateTagMechanismAsync(tagMechanism);
 054        }
 55
 56        // DELETE api/TagMechanism/delete/5
 57        [HttpDelete("delete/{uuid}")]
 58        public async Task Delete(Guid uuid)
 059        {
 060            await tagMechanismService.DeleteTagMechanismAsync(uuid);
 061        }
 62    }
 63}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html new file mode 100644 index 0000000..28c1263 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html @@ -0,0 +1,178 @@ + + + + + + + +Chemistry_Cafe_API.Models.TagMechanismReactionList - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.TagMechanismReactionList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismReactionList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismReactionList.cs

+
+ + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class TagMechanismReactionList
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid reaction_uuid { get; set; }
 07        public Guid tag_mechanism_uuid { get; set; }
 08        public string? version { get; set; }
 09        public bool isDel { get; set; }
 10    }
 11}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListController.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListController.html new file mode 100644 index 0000000..c2b5e39 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.TagMechanismReactionListController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.TagMechanismReactionListController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismReactionListController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
TagMechanismReactionListController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismReactionListController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class TagMechanismReactionListController : ControllerBase
 13    {
 14        private TagMechanismReactionListService tagMechReationListService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public TagMechanismReactionListController([FromServices] MySqlDataSource db)
 018        {
 019            this.tagMechReationListService = new TagMechanismReactionListService(db);
 020        }
 21
 22        // GET: api/TagMechanismReaction/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<TagMechanismReactionList>> Get()
 025        {
 026            return await tagMechReationListService.GetTagMechanismReactionsAsync();
 027        }
 28
 29        // GET api/TagMechanismReaction/5
 30        [HttpGet("{uuid}")]
 31        public async Task<TagMechanismReactionList?> Get(Guid uuid)
 032        {
 033            return await tagMechReationListService.GetTagMechanismReactionAsync(uuid);
 034        }
 35
 36        // POST api/TagMechanismReaction/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] TagMechanismReactionList newTagMechanismReaction)
 039        {
 040            return await tagMechReationListService.CreateTagMechanismReactionAsync(newTagMechanismReaction);
 041        }
 42
 43        // PUT api/TagMechanismReaction/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] TagMechanismReactionList newTagMechanismReaction)
 046        {
 047            await tagMechReationListService.UpdateTagMechanismReactionAsync(newTagMechanismReaction);
 048        }
 49
 50        // DELETE api/TagMechanismReaction/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await tagMechReationListService.DeleteTagMechanismReactionAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListService.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListService.html new file mode 100644 index 0000000..8d4a508 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListService.html @@ -0,0 +1,282 @@ + + + + + + + +Chemistry_Cafe_API.Services.TagMechanismReactionListService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.TagMechanismReactionListService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismReactionListService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:64
Coverable lines:64
Total lines:98
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismReactionListService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class TagMechanismReactionListService (MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<TagMechanismReactionList>> GetTagMechanismReactionsAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM TagMechanism_Reaction_List WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<TagMechanismReactionList?> GetTagMechanismReactionAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM TagMechanism_Reaction_List WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateTagMechanismReactionAsync(TagMechanismReactionList newTagMechanismReaction)
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid tagMechanismReactionID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO TagMechanism_Reaction_List (uuid, reaction_uuid, tag_mechanism_uuid, ver
 39
 040            command.Parameters.AddWithValue("@uuid", tagMechanismReactionID);
 041            command.Parameters.AddWithValue("@reaction_uuid", newTagMechanismReaction.reaction_uuid);
 042            command.Parameters.AddWithValue("@tag_mechanism_uuid", newTagMechanismReaction.tag_mechanism_uuid);
 043            command.Parameters.AddWithValue("@version", newTagMechanismReaction.version);
 44
 045            await command.ExecuteNonQueryAsync();
 46
 047            return tagMechanismReactionID;
 048        }
 49        public async Task UpdateTagMechanismReactionAsync(TagMechanismReactionList tagMechanismReaction)
 050        {
 051            using var connection = await database.OpenConnectionAsync();
 052            using var command = connection.CreateCommand();
 53
 054            command.CommandText = @"UPDATE TagMechanism_Reaction_List SET reaction_uuid = @reaction_uuid, tag_mechanism_
 55
 056            command.Parameters.AddWithValue("@uuid", tagMechanismReaction.uuid);
 057            command.Parameters.AddWithValue("@reaction_uuid", tagMechanismReaction.reaction_uuid);
 058            command.Parameters.AddWithValue("@tag_mechanism_uuid", tagMechanismReaction.tag_mechanism_uuid);
 059            command.Parameters.AddWithValue("@version", tagMechanismReaction.version);
 060            command.Parameters.AddWithValue("@isDel", tagMechanismReaction.isDel);
 61
 062            await command.ExecuteNonQueryAsync();
 063        }
 64
 65        public async Task DeleteTagMechanismReactionAsync(Guid uuid)
 066        {
 067            using var connection = await database.OpenConnectionAsync();
 068            using var command = connection.CreateCommand();
 69
 070            command.CommandText = @"UPDATE TagMechanism_Reaction_List SET isDel = 1 WHERE uuid = @uuid;";
 71
 072            command.Parameters.AddWithValue("@uuid", uuid);
 73
 074            await command.ExecuteNonQueryAsync();
 075        }
 76
 77        private async Task<IReadOnlyList<TagMechanismReactionList>> ReadAllAsync(DbDataReader reader)
 078        {
 079            var tagMechanismReaction = new List<TagMechanismReactionList>();
 080            using (reader)
 081            {
 082                while (await reader.ReadAsync())
 083                {
 084                    var mechTag = new TagMechanismReactionList
 085                    {
 086                        uuid = reader.GetGuid(0),
 087                        reaction_uuid = reader.GetGuid(1),
 088                        tag_mechanism_uuid = reader.GetGuid(2),
 089                        version = reader.GetString(3),
 090                        isDel = reader.GetBoolean(4),
 091                    };
 092                    tagMechanismReaction.Add(mechTag);
 093                }
 094            }
 095            return tagMechanismReaction;
 096        }
 97    }
 98}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersion.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersion.html new file mode 100644 index 0000000..c8bef1e --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersion.html @@ -0,0 +1,187 @@ + + + + + + + +Chemistry_Cafe_API.Models.TagMechanismReactionListVersion - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.TagMechanismReactionListVersion
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismReactionListVersion.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:8
Coverable lines:8
Total lines:14
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismReactionListVersion.cs

+
+ + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class TagMechanismReactionListVersion
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid tag_mechanism_uuid { get; set; }
 07        public Guid reaction_uuid { get; set; }
 08        public string? frozen_version { get; set; }
 09        public string? action { get; set; }
 010        public Guid user_uuid { get; set; }
 011        public DateTime datetime { get; set; }
 012        public bool isDel {  get; set; }
 13    }
 14}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionController.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionController.html new file mode 100644 index 0000000..9560e4a --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismReactionListVersionController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
TagMechanismReactionListVersionController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismReactionListVersionController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class TagMechanismReactionListVersionController : ControllerBase
 13    {
 14        private TagMechanismReactionListVersionService tagMechanismReactionListVersionService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public TagMechanismReactionListVersionController([FromServices] MySqlDataSource db)
 018        {
 019            this.tagMechanismReactionListVersionService = new TagMechanismReactionListVersionService(db);
 020        }
 21
 22        // GET: api/TagMechanismReactionListVersion/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<TagMechanismReactionListVersion>> Get()
 025        {
 026            return await tagMechanismReactionListVersionService.GetTagMechanismReactionListVersionsAsync();
 027        }
 28
 29        // GET api/TagMechanismReactionListVersion/5
 30        [HttpGet("{uuid}")]
 31        public async Task<TagMechanismReactionListVersion?> Get(Guid uuid)
 032        {
 033            return await tagMechanismReactionListVersionService.GetTagMechanismReactionListVersionAsync(uuid);
 034        }
 35
 36        // POST api/TagMechanismReactionListVersion/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] TagMechanismReactionListVersion newTagMechanismReactionListVersion)
 039        {
 040            return await tagMechanismReactionListVersionService.CreateTagMechanismReactionListVersionAsync(newTagMechani
 041        }
 42
 43        // PUT api/TagMechanismReactionListVersion/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] TagMechanismReactionListVersion newTagMechanismReactionListVersion)
 046        {
 047            await tagMechanismReactionListVersionService.UpdateTagMechanismReactionListVersionAsync(newTagMechanismReact
 048        }
 49
 50        // DELETE api/TagMechanismReactionListVersion/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await tagMechanismReactionListVersionService.DeleteTagMechanismReactionListVersionAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionService.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionService.html new file mode 100644 index 0000000..593012e --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionService.html @@ -0,0 +1,291 @@ + + + + + + + +Chemistry_Cafe_API.Services.TagMechanismReactionListVersionService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.TagMechanismReactionListVersionService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismReactionListVersionService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:73
Coverable lines:73
Total lines:107
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismReactionListVersionService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class TagMechanismReactionListVersionService(MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<TagMechanismReactionListVersion>> GetTagMechanismReactionListVersionsAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM TagMechanism_Reaction_List_Version WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<TagMechanismReactionListVersion?> GetTagMechanismReactionListVersionAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM TagMechanism_Reaction_List_Version WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateTagMechanismReactionListVersionAsync(TagMechanismReactionListVersion newTagMechani
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid tagMechanismReactionListVersionID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO TagMechanism_Reaction_List_Version (uuid, tag_mechanism_uuid, reaction_u
 39
 040            command.Parameters.AddWithValue("@uuid", tagMechanismReactionListVersionID);
 041            command.Parameters.AddWithValue("@tag_mechanism_uuid", newTagMechanismReactionListVersion.tag_mechanism_uuid
 042            command.Parameters.AddWithValue("@reaction_uuid", newTagMechanismReactionListVersion.reaction_uuid);
 043            command.Parameters.AddWithValue("@frozen_version", newTagMechanismReactionListVersion.frozen_version);
 044            command.Parameters.AddWithValue("@action", newTagMechanismReactionListVersion.action);
 045            command.Parameters.AddWithValue("@user_uuid", newTagMechanismReactionListVersion.user_uuid);
 046            command.Parameters.AddWithValue("@datetime", newTagMechanismReactionListVersion.datetime);
 47
 048            await command.ExecuteNonQueryAsync();
 49
 050            return tagMechanismReactionListVersionID;
 051        }
 52        public async Task UpdateTagMechanismReactionListVersionAsync(TagMechanismReactionListVersion tagMechanismReactio
 053        {
 054            using var connection = await database.OpenConnectionAsync();
 055            using var command = connection.CreateCommand();
 56
 057            command.CommandText = @"UPDATE TagMechanism_Reaction_List_Version SET tag_mechanism_uuid = @tag_mechanism_uu
 58
 059            command.Parameters.AddWithValue("@uuid", tagMechanismReactionListVersion.uuid);
 060            command.Parameters.AddWithValue("@tag_mechanism_uuid", tagMechanismReactionListVersion.tag_mechanism_uuid);
 061            command.Parameters.AddWithValue("@reaction_uuid", tagMechanismReactionListVersion.reaction_uuid);
 062            command.Parameters.AddWithValue("@frozen_version", tagMechanismReactionListVersion.frozen_version);
 063            command.Parameters.AddWithValue("@action", tagMechanismReactionListVersion.action);
 064            command.Parameters.AddWithValue("@user_uuid", tagMechanismReactionListVersion.user_uuid);
 065            command.Parameters.AddWithValue("@datetime", tagMechanismReactionListVersion.datetime);
 066            command.Parameters.AddWithValue("@isDel", tagMechanismReactionListVersion.isDel);
 67
 068            await command.ExecuteNonQueryAsync();
 069        }
 70
 71        public async Task DeleteTagMechanismReactionListVersionAsync(Guid uuid)
 072        {
 073            using var connection = await database.OpenConnectionAsync();
 074            using var command = connection.CreateCommand();
 75
 076            command.CommandText = @"UPDATE TagMechanism_Reaction_List_Version SET isDel = 1 WHERE uuid = @uuid;";
 77
 078            command.Parameters.AddWithValue("@uuid", uuid);
 79
 080            await command.ExecuteNonQueryAsync();
 081        }
 82
 83        private async Task<IReadOnlyList<TagMechanismReactionListVersion>> ReadAllAsync(DbDataReader reader)
 084        {
 085            var tagMechanismReactionListVersion = new List<TagMechanismReactionListVersion>();
 086            using (reader)
 087            {
 088                while (await reader.ReadAsync())
 089                {
 090                    var familyMechVersion = new TagMechanismReactionListVersion
 091                    {
 092                        uuid = reader.GetGuid(0),
 093                        tag_mechanism_uuid = reader.GetGuid(1),
 094                        reaction_uuid = reader.GetGuid(2),
 095                        frozen_version = reader.GetString(3),
 096                        action = reader.GetString(4),
 097                        user_uuid = reader.GetGuid(5),
 098                        datetime = reader.GetDateTime(6),
 099                        isDel = reader.GetBoolean(7),
 0100                    };
 0101                    tagMechanismReactionListVersion.Add(familyMechVersion);
 0102                }
 0103            }
 0104            return tagMechanismReactionListVersion;
 0105        }
 106    }
 107}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismService.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismService.html new file mode 100644 index 0000000..ac45d7f --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismService.html @@ -0,0 +1,290 @@ + + + + + + + +Chemistry_Cafe_API.Services.TagMechanismService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.TagMechanismService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:65
Coverable lines:65
Total lines:104
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5using System;
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class TagMechanismService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<TagMechanism>> GetTagMechanismsAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM TagMechanism WHERE isDel = FALSE";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<TagMechanism?> GetTagMechanismAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM TagMechanism WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<IReadOnlyList<TagMechanism>> GetTagsAsync(Guid family_uuid)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            command.CommandText = @"SELECT TagMechanism.uuid, TagMechanism.tag, TagMechanism.isDel FROM Family_TagMechan
 038            command.Parameters.AddWithValue("@family_uuid", family_uuid);
 39
 040            return await ReadAllAsync(await command.ExecuteReaderAsync());
 041        }
 42
 43        public async Task<Guid> CreateTagMechanismAsync(string tag)
 044        {
 045            using var connection = await database.OpenConnectionAsync();
 046            using var command = connection.CreateCommand();
 47
 048            Guid tagMechanismID = Guid.NewGuid();
 49
 050            command.CommandText = @"INSERT INTO TagMechanism (uuid, tag) VALUES (@uuid, @tag);";
 51
 052            command.Parameters.AddWithValue("@uuid", tagMechanismID);
 053            command.Parameters.AddWithValue("@tag", tag);
 54
 055            await command.ExecuteNonQueryAsync();
 56
 057            return tagMechanismID;
 058        }
 59        public async Task UpdateTagMechanismAsync(TagMechanism tagMechanism)
 060        {
 061            using var connection = await database.OpenConnectionAsync();
 062            using var command = connection.CreateCommand();
 63
 064            command.CommandText = @"UPDATE TagMechanism SET tag = @tag, isDel = @isDel WHERE uuid = @uuid;";
 65
 066            command.Parameters.AddWithValue("@uuid", tagMechanism.uuid);
 067            command.Parameters.AddWithValue("@tag", tagMechanism.tag);
 068            command.Parameters.AddWithValue("@isDel", tagMechanism.isDel);
 69
 070            await command.ExecuteNonQueryAsync();
 071        }
 72
 73        public async Task DeleteTagMechanismAsync(Guid uuid)
 074        {
 075            using var connection = await database.OpenConnectionAsync();
 076            using var command = connection.CreateCommand();
 77
 078            command.CommandText = @"UPDATE TagMechanism SET isDel = 1 WHERE uuid = @uuid;";
 79
 080            command.Parameters.AddWithValue("@uuid", uuid);
 81
 082            await command.ExecuteNonQueryAsync();
 083        }
 84
 85        private async Task<IReadOnlyList<TagMechanism>> ReadAllAsync(DbDataReader reader)
 086        {
 087            var tagMechanisms = new List<TagMechanism>();
 088            using (reader)
 089            {
 090                while (await reader.ReadAsync())
 091                {
 092                    var tagMechanism = new TagMechanism
 093                    {
 094                        uuid = reader.GetGuid(0),
 095                        tag = reader.GetString(1),
 096                        isDel = reader.GetBoolean(2),
 097                    };
 098                    tagMechanisms.Add(tagMechanism);
 099                }
 0100            }
 0101            return tagMechanisms;
 0102        }
 103    }
 104}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesList.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesList.html new file mode 100644 index 0000000..0634a57 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesList.html @@ -0,0 +1,178 @@ + + + + + + + +Chemistry_Cafe_API.Models.TagMechanismSpeciesList - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.TagMechanismSpeciesList
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismSpeciesList.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismSpeciesList.cs

+
+ + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class TagMechanismSpeciesList
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid species_uuid { get; set; }
 07        public Guid tag_mechanism_uuid { get; set; }
 08        public string? version { get; set; }
 09        public bool isDel { get; set; }
 10    }
 11}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListController.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListController.html new file mode 100644 index 0000000..765c243 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismSpeciesListController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
TagMechanismSpeciesListController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismSpeciesListController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class TagMechanismSpeciesListController : ControllerBase
 13    {
 14        private TagMechanismSpeciesListService tagMechSpeciesList;
 15
 16        //Injects sql data source setup in Program.cs
 017        public TagMechanismSpeciesListController([FromServices] MySqlDataSource db)
 018        {
 019            this.tagMechSpeciesList = new TagMechanismSpeciesListService(db);
 020        }
 21
 22        // GET: api/TagMechanismSpecies/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<TagMechanismSpeciesList>> Get()
 025        {
 026            return await tagMechSpeciesList.GetTagMechanismSpeciessAsync();
 027        }
 28
 29        // GET api/TagMechanismSpecies/5
 30        [HttpGet("{uuid}")]
 31        public async Task<TagMechanismSpeciesList?> Get(Guid uuid)
 032        {
 033            return await tagMechSpeciesList.GetTagMechanismSpeciesAsync(uuid);
 034        }
 35
 36        // POST api/TagMechanismSpecies/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] TagMechanismSpeciesList newTagMechanismSpecies)
 039        {
 040            return await tagMechSpeciesList.CreateTagMechanismSpeciesAsync(newTagMechanismSpecies);
 041        }
 42
 43        // PUT api/TagMechanismSpecies/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] TagMechanismSpeciesList newTagMechanismSpecies)
 046        {
 047            await tagMechSpeciesList.UpdateTagMechanismSpeciesAsync(newTagMechanismSpecies);
 048        }
 49
 50        // DELETE api/TagMechanismSpecies/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await tagMechSpeciesList.DeleteTagMechanismSpeciesAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListService.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListService.html new file mode 100644 index 0000000..9c07018 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListService.html @@ -0,0 +1,282 @@ + + + + + + + +Chemistry_Cafe_API.Services.TagMechanismSpeciesListService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.TagMechanismSpeciesListService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismSpeciesListService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:64
Coverable lines:64
Total lines:98
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismSpeciesListService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class TagMechanismSpeciesListService (MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<TagMechanismSpeciesList>> GetTagMechanismSpeciessAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM TagMechanism_Species_List WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<TagMechanismSpeciesList?> GetTagMechanismSpeciesAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM TagMechanism_Species_List WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateTagMechanismSpeciesAsync(TagMechanismSpeciesList newTagMechanismSpecies)
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid tagMechanismSpeciesID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO TagMechanism_Species_List (uuid, species_uuid, tag_mechanism_uuid, versi
 39
 040            command.Parameters.AddWithValue("@uuid", tagMechanismSpeciesID);
 041            command.Parameters.AddWithValue("@species_uuid", newTagMechanismSpecies.species_uuid);
 042            command.Parameters.AddWithValue("@tag_mechanism_uuid", newTagMechanismSpecies.tag_mechanism_uuid);
 043            command.Parameters.AddWithValue("@version", newTagMechanismSpecies.version);
 44
 045            await command.ExecuteNonQueryAsync();
 46
 047            return tagMechanismSpeciesID;
 048        }
 49        public async Task UpdateTagMechanismSpeciesAsync(TagMechanismSpeciesList tagMechanismSpecies)
 050        {
 051            using var connection = await database.OpenConnectionAsync();
 052            using var command = connection.CreateCommand();
 53
 054            command.CommandText = @"UPDATE TagMechanism_Species_List SET species_uuid = @species_uuid, tag_mechanism_uui
 55
 056            command.Parameters.AddWithValue("@uuid", tagMechanismSpecies.uuid);
 057            command.Parameters.AddWithValue("@species_uuid", tagMechanismSpecies.species_uuid);
 058            command.Parameters.AddWithValue("@tag_mechanism_uuid", tagMechanismSpecies.tag_mechanism_uuid);
 059            command.Parameters.AddWithValue("@version", tagMechanismSpecies.version);
 060            command.Parameters.AddWithValue("@isDel", tagMechanismSpecies.isDel);
 61
 062            await command.ExecuteNonQueryAsync();
 063        }
 64
 65        public async Task DeleteTagMechanismSpeciesAsync(Guid uuid)
 066        {
 067            using var connection = await database.OpenConnectionAsync();
 068            using var command = connection.CreateCommand();
 69
 070            command.CommandText = @"UPDATE TagMechanism_Species_List SET isDel = 1 WHERE uuid = @uuid;";
 71
 072            command.Parameters.AddWithValue("@uuid", uuid);
 73
 074            await command.ExecuteNonQueryAsync();
 075        }
 76
 77        private async Task<IReadOnlyList<TagMechanismSpeciesList>> ReadAllAsync(DbDataReader reader)
 078        {
 079            var tagMechanismSpecies = new List<TagMechanismSpeciesList>();
 080            using (reader)
 081            {
 082                while (await reader.ReadAsync())
 083                {
 084                    var mechTag = new TagMechanismSpeciesList
 085                    {
 086                        uuid = reader.GetGuid(0),
 087                        species_uuid = reader.GetGuid(1),
 088                        tag_mechanism_uuid = reader.GetGuid(2),
 089                        version = reader.GetString(3),
 090                        isDel = reader.GetBoolean(4),
 091                    };
 092                    tagMechanismSpecies.Add(mechTag);
 093                }
 094            }
 095            return tagMechanismSpecies;
 096        }
 97    }
 98}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersion.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersion.html new file mode 100644 index 0000000..eeaf686 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersion.html @@ -0,0 +1,187 @@ + + + + + + + +Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismSpeciesListVersion.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:8
Coverable lines:8
Total lines:14
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\TagMechanismSpeciesListVersion.cs

+
+ + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class TagMechanismSpeciesListVersion
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid tag_mechanism_uuid { get; set; }
 07        public Guid species_uuid { get; set; }
 08        public Guid? frozen_uuid { get; set; }
 09        public string? action { get; set; }
 010        public Guid user_uuid { get; set; }
 011        public DateTime datetime { get; set; }
 012        public bool isDel {  get; set; }
 13    }
 14}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionController.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionController.html new file mode 100644 index 0000000..fc91b19 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismSpeciesListVersionController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
TagMechanismSpeciesListVersionController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\TagMechanismSpeciesListVersionController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class TagMechanismSpeciesListVersionController : ControllerBase
 13    {
 14        private TagMechanismSpeciesListVersionService tagMechanismSpeciesListVersionService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public TagMechanismSpeciesListVersionController([FromServices] MySqlDataSource db)
 018        {
 019            this.tagMechanismSpeciesListVersionService = new TagMechanismSpeciesListVersionService(db);
 020        }
 21
 22        // GET: api/TagMechanismSpeciesListVersion/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<TagMechanismSpeciesListVersion>> Get()
 025        {
 026            return await tagMechanismSpeciesListVersionService.GetTagMechanismSpeciesListVersionsAsync();
 027        }
 28
 29        // GET api/TagMechanismSpeciesListVersion/5
 30        [HttpGet("{uuid}")]
 31        public async Task<TagMechanismSpeciesListVersion?> Get(Guid uuid)
 032        {
 033            return await tagMechanismSpeciesListVersionService.GetTagMechanismSpeciesListVersionAsync(uuid);
 034        }
 35
 36        // POST api/TagMechanismSpeciesListVersion/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] TagMechanismSpeciesListVersion newTagMechanismSpeciesListVersion)
 039        {
 040            return await tagMechanismSpeciesListVersionService.CreateTagMechanismSpeciesListVersionAsync(newTagMechanism
 041        }
 42
 43        // PUT api/TagMechanismSpeciesListVersion/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] TagMechanismSpeciesListVersion newTagMechanismSpeciesListVersion)
 046        {
 047            await tagMechanismSpeciesListVersionService.UpdateTagMechanismSpeciesListVersionAsync(newTagMechanismSpecies
 048        }
 49
 50        // DELETE api/TagMechanismSpeciesListVersion/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await tagMechanismSpeciesListVersionService.DeleteTagMechanismSpeciesListVersionAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionService.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionService.html new file mode 100644 index 0000000..cef9e2c --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionService.html @@ -0,0 +1,291 @@ + + + + + + + +Chemistry_Cafe_API.Services.TagMechanismSpeciesListVersionService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.TagMechanismSpeciesListVersionService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismSpeciesListVersionService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:73
Coverable lines:73
Total lines:107
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\TagMechanismSpeciesListVersionService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chemistry_Cafe_API.Services
 7{
 08    public class TagMechanismSpeciesListVersionService(MySqlDataSource database)
 9    {
 10        public async Task<IReadOnlyList<TagMechanismSpeciesListVersion>> GetTagMechanismSpeciesListVersionsAsync()
 011        {
 012            using var connection = await database.OpenConnectionAsync();
 013            using var command = connection.CreateCommand();
 14
 015            command.CommandText = "SELECT * FROM TagMechanism_Species_List_Version WHERE isDel = 0";
 016            return await ReadAllAsync(await command.ExecuteReaderAsync());
 017        }
 18
 19        public async Task<TagMechanismSpeciesListVersion?> GetTagMechanismSpeciesListVersionAsync(Guid uuid)
 020        {
 021            using var connection = await database.OpenConnectionAsync();
 022            using var command = connection.CreateCommand();
 23
 024            command.CommandText = @"SELECT * FROM TagMechanism_Species_List_Version WHERE uuid = @id";
 025            command.Parameters.AddWithValue("@id", uuid);
 26
 027            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 028            return result.FirstOrDefault();
 029        }
 30
 31        public async Task<Guid> CreateTagMechanismSpeciesListVersionAsync(TagMechanismSpeciesListVersion newTagMechanism
 032        {
 033            using var connection = await database.OpenConnectionAsync();
 034            using var command = connection.CreateCommand();
 35
 036            Guid tagMechanismSpeciesListVersionID = Guid.NewGuid();
 37
 038            command.CommandText = @"INSERT INTO TagMechanism_Species_List_Version (uuid, tag_mechanism_uuid, species_uui
 39
 040            command.Parameters.AddWithValue("@uuid", tagMechanismSpeciesListVersionID);
 041            command.Parameters.AddWithValue("@tag_mechanism_uuid", newTagMechanismSpeciesListVersion.tag_mechanism_uuid)
 042            command.Parameters.AddWithValue("@species_uuid", newTagMechanismSpeciesListVersion.species_uuid);
 043            command.Parameters.AddWithValue("@frozen_uuid", newTagMechanismSpeciesListVersion.frozen_uuid);
 044            command.Parameters.AddWithValue("@action", newTagMechanismSpeciesListVersion.action);
 045            command.Parameters.AddWithValue("@user_uuid", newTagMechanismSpeciesListVersion.user_uuid);
 046            command.Parameters.AddWithValue("@datetime", newTagMechanismSpeciesListVersion.datetime);
 47
 048            await command.ExecuteNonQueryAsync();
 49
 050            return tagMechanismSpeciesListVersionID;
 051        }
 52        public async Task UpdateTagMechanismSpeciesListVersionAsync(TagMechanismSpeciesListVersion tagMechanismSpeciesLi
 053        {
 054            using var connection = await database.OpenConnectionAsync();
 055            using var command = connection.CreateCommand();
 56
 057            command.CommandText = @"UPDATE TagMechanism_Species_List_Version SET tag_mechanism_uuid = @tag_mechanism_uui
 58
 059            command.Parameters.AddWithValue("@uuid", tagMechanismSpeciesListVersion.uuid);
 060            command.Parameters.AddWithValue("@tag_mechanism_uuid", tagMechanismSpeciesListVersion.tag_mechanism_uuid);
 061            command.Parameters.AddWithValue("@species_uuid", tagMechanismSpeciesListVersion.species_uuid);
 062            command.Parameters.AddWithValue("@frozen_uuid", tagMechanismSpeciesListVersion.frozen_uuid);
 063            command.Parameters.AddWithValue("@action", tagMechanismSpeciesListVersion.action);
 064            command.Parameters.AddWithValue("@user_uuid", tagMechanismSpeciesListVersion.user_uuid);
 065            command.Parameters.AddWithValue("@datetime", tagMechanismSpeciesListVersion.datetime);
 066            command.Parameters.AddWithValue("@isDel", tagMechanismSpeciesListVersion.isDel);
 67
 068            await command.ExecuteNonQueryAsync();
 069        }
 70
 71        public async Task DeleteTagMechanismSpeciesListVersionAsync(Guid uuid)
 072        {
 073            using var connection = await database.OpenConnectionAsync();
 074            using var command = connection.CreateCommand();
 75
 076            command.CommandText = @"UPDATE TagMechanism_Species_List_Version SET isDel = 1 WHERE uuid = @uuid;";
 77
 078            command.Parameters.AddWithValue("@uuid", uuid);
 79
 080            await command.ExecuteNonQueryAsync();
 081        }
 82
 83        private async Task<IReadOnlyList<TagMechanismSpeciesListVersion>> ReadAllAsync(DbDataReader reader)
 084        {
 085            var tagMechanismSpeciesListVersion = new List<TagMechanismSpeciesListVersion>();
 086            using (reader)
 087            {
 088                while (await reader.ReadAsync())
 089                {
 090                    var familyMechVersion = new TagMechanismSpeciesListVersion
 091                    {
 092                        uuid = reader.GetGuid(0),
 093                        tag_mechanism_uuid = reader.GetGuid(1),
 094                        species_uuid = reader.GetGuid(2),
 095                        frozen_uuid = reader.GetGuid(3),
 096                        action = reader.GetString(4),
 097                        user_uuid = reader.GetGuid(5),
 098                        datetime = reader.GetDateTime(6),
 099                        isDel = reader.GetBoolean(7),
 0100                    };
 0101                    tagMechanismSpeciesListVersion.Add(familyMechVersion);
 0102                }
 0103            }
 0104            return tagMechanismSpeciesListVersion;
 0105        }
 106    }
 107}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_User.html b/coveragereport/chemistry_cafe_api.dll_User.html new file mode 100644 index 0000000..cf60096 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_User.html @@ -0,0 +1,172 @@ + + + + + + + +Chemistry_Cafe_API.Models.User - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.User
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\User.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:9
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\User.cs

+
+ + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class User
 4    {
 05        public Guid uuid { get; set; }
 06        public string? log_in_info { get; set; }
 07        public bool isDel {  get; set; }
 8    }
 9}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserController.html b/coveragereport/chemistry_cafe_api.dll_UserController.html new file mode 100644 index 0000000..52024d4 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.UserController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.UserController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\UserController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
UserController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\UserController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class UserController : ControllerBase
 13    {
 14        private UserService userService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public UserController([FromServices] MySqlDataSource db)
 018        {
 019            this.userService = new UserService(db);
 020        }
 21
 22        // GET: api/User/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<User>> Get()
 025        {
 026            return await userService.GetUsersAsync();
 027        }
 28
 29        // GET api/User/5
 30        [HttpGet("{uuid}")]
 31        public async Task<User?> Get(Guid uuid)
 032        {
 033            return await userService.GetUserAsync(uuid);
 034        }
 35
 36        // POST api/User/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] string log_in_info)
 039        {
 040            return await userService.CreateUserAsync(log_in_info);
 041        }
 42
 43        // PUT api/User/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] User user)
 046        {
 047            await userService.UpdateUserAsync(user);
 048        }
 49
 50        // DELETE api/User/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await userService.DeleteUserAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserPreferences.html b/coveragereport/chemistry_cafe_api.dll_UserPreferences.html new file mode 100644 index 0000000..5d781ec --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserPreferences.html @@ -0,0 +1,175 @@ + + + + + + + +Chemistry_Cafe_API.Models.UserPreferences - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Models.UserPreferences
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\UserPreferences.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:10
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Models\UserPreferences.cs

+
+ + + + + + + + + + + + + + +
#LineLine coverage
 1namespace Chemistry_Cafe_API.Models
 2{
 3    public class UserPreferences
 4    {
 05        public Guid uuid { get; set; }
 06        public Guid user_uuid { get; set; }
 07        public string? preferences { get; set; }
 08        public bool isDel {  get; set; }
 9    }
 10}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserPreferencesController.html b/coveragereport/chemistry_cafe_api.dll_UserPreferencesController.html new file mode 100644 index 0000000..3f35c23 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserPreferencesController.html @@ -0,0 +1,239 @@ + + + + + + + +Chemistry_Cafe_API.Controllers.UserPreferencesController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Controllers.UserPreferencesController
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\UserPreferencesController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:57
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
UserPreferencesController(...)03
Get()018
Get()018
Create()018
Put()018
Delete()018
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Controllers\UserPreferencesController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using Chemistry_Cafe_API.Services;
 3using Microsoft.AspNetCore.Mvc;
 4using MySqlConnector;
 5
 6// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 7
 8namespace Chemistry_Cafe_API.Controllers
 9{
 10    [Route("api/[controller]")]
 11    [ApiController]
 12    public class UserPreferencesController : ControllerBase
 13    {
 14        private UserPreferencesService userpreferencesService;
 15
 16        //Injects sql data source setup in Program.cs
 017        public UserPreferencesController([FromServices] MySqlDataSource db)
 018        {
 019            this.userpreferencesService = new UserPreferencesService(db);
 020        }
 21
 22        // GET: api/UserPreferences/all
 23        [HttpGet("all")]
 24        public async Task<IReadOnlyList<UserPreferences>> Get()
 025        {
 026            return await userpreferencesService.GetUserPreferencesAsync();
 027        }
 28
 29        // GET api/UserPreferences/5
 30        [HttpGet("{uuid}")]
 31        public async Task<UserPreferences?> Get(Guid uuid)
 032        {
 033            return await userpreferencesService.GetUserPreferencesAsync(uuid);
 034        }
 35
 36        // POST api/UserPreferences/create
 37        [HttpPost("create")]
 38        public async Task<Guid> Create([FromBody] UserPreferences userPreferneces)
 039        {
 040            return await userpreferencesService.CreateUserPreferencesAsync(userPreferneces);
 041        }
 42
 43        // PUT api/UserPreferences/5
 44        [HttpPut("update")]
 45        public async Task Put([FromBody] UserPreferences userpreferences)
 046        {
 047            await userpreferencesService.UpdateUserPreferencesAsync(userpreferences);
 048        }
 49
 50        // DELETE api/UserPreferences/delete/5
 51        [HttpDelete("delete/{uuid}")]
 52        public async Task Delete(Guid uuid)
 053        {
 054            await userpreferencesService.DeleteUserPreferencesAsync(uuid);
 055        }
 56    }
 57}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserPreferencesService.html b/coveragereport/chemistry_cafe_api.dll_UserPreferencesService.html new file mode 100644 index 0000000..a64918b --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserPreferencesService.html @@ -0,0 +1,280 @@ + + + + + + + +Chemistry_Cafe_API.Services.UserPreferencesService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.UserPreferencesService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\UserPreferencesService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:61
Coverable lines:61
Total lines:96
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\UserPreferencesService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class UserPreferencesService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<UserPreferences>> GetUserPreferencesAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM User_Preferences WHERE isDel = 0";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<UserPreferences?> GetUserPreferencesAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM User_Preferences WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<Guid> CreateUserPreferencesAsync(UserPreferences userPreferences)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            Guid userPreferencesID = Guid.NewGuid();
 38
 039            command.CommandText = @"INSERT INTO User_Preferences (uuid, user_uuid, preferences) VALUES (@uuid, @user_uui
 40
 041            command.Parameters.AddWithValue("@uuid", userPreferencesID);
 042            command.Parameters.AddWithValue("@user_uuid", userPreferences.user_uuid);
 043            command.Parameters.AddWithValue("@preferences", userPreferences.preferences);
 44
 045            await command.ExecuteNonQueryAsync();
 46
 047            return userPreferencesID;
 048        }
 49        public async Task UpdateUserPreferencesAsync(UserPreferences userPreferences)
 050        {
 051            using var connection = await database.OpenConnectionAsync();
 052            using var command = connection.CreateCommand();
 53
 054            command.CommandText = @"UPDATE User_Preferences SET user_uuid = @user_uuid, preferences = @preferences, isDe
 55
 056            command.Parameters.AddWithValue("@uuid", userPreferences.uuid);
 057            command.Parameters.AddWithValue("@user_uuid", userPreferences.user_uuid);
 058            command.Parameters.AddWithValue("@preferences", userPreferences.preferences);
 059            command.Parameters.AddWithValue("@isDel", userPreferences.isDel);
 60
 061            await command.ExecuteNonQueryAsync();
 062        }
 63
 64        public async Task DeleteUserPreferencesAsync(Guid uuid)
 065        {
 066            using var connection = await database.OpenConnectionAsync();
 067            using var command = connection.CreateCommand();
 68
 069            command.CommandText = @"UPDATE User_Preferences SET isDel = 1 WHERE uuid = @uuid;";
 70
 071            command.Parameters.AddWithValue("@uuid", uuid);
 72
 073            await command.ExecuteNonQueryAsync();
 074        }
 75
 76        private async Task<IReadOnlyList<UserPreferences>> ReadAllAsync(DbDataReader reader)
 077        {
 078            var userPreferences = new List<UserPreferences>();
 079            using (reader)
 080            {
 081                while (await reader.ReadAsync())
 082                {
 083                    var userPreference = new UserPreferences
 084                    {
 085                        uuid = reader.GetGuid(0),
 086                        user_uuid = reader.GetGuid(1),
 087                        preferences = reader.GetString(2),
 088                        isDel = reader.GetBoolean(3),
 089                    };
 090                    userPreferences.Add(userPreference);
 091                }
 092            }
 093            return userPreferences;
 094        }
 95    }
 96}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserService.html b/coveragereport/chemistry_cafe_api.dll_UserService.html new file mode 100644 index 0000000..4db935f --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserService.html @@ -0,0 +1,277 @@ + + + + + + + +Chemistry_Cafe_API.Services.UserService - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Services.UserService
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\UserService.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:58
Coverable lines:58
Total lines:93
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
UserService(...)02
GetUsersAsync()062
GetUserAsync()065
CreateUserAsync()056
UpdateUserAsync()060
DeleteUserAsync()053
ReadAllAsync()041
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Services\UserService.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Models;
 2using System.Data.Common;
 3using MySqlConnector;
 4using Microsoft.AspNetCore.Mvc;
 5
 6
 7namespace Chemistry_Cafe_API.Services
 8{
 09    public class UserService(MySqlDataSource database)
 10    {
 11        public async Task<IReadOnlyList<User>> GetUsersAsync()
 012        {
 013            using var connection = await database.OpenConnectionAsync();
 014            using var command = connection.CreateCommand();
 15
 016            command.CommandText = "SELECT * FROM User WHERE isDel = 0";
 017            return await ReadAllAsync(await command.ExecuteReaderAsync());
 018        }
 19
 20        public async Task<User?> GetUserAsync(Guid uuid)
 021        {
 022            using var connection = await database.OpenConnectionAsync();
 023            using var command = connection.CreateCommand();
 24
 025            command.CommandText = @"SELECT * FROM User WHERE uuid = @id";
 026            command.Parameters.AddWithValue("@id", uuid);
 27
 028            var result = await ReadAllAsync(await command.ExecuteReaderAsync());
 029            return result.FirstOrDefault();
 030        }
 31
 32        public async Task<Guid> CreateUserAsync(string log_in_info)
 033        {
 034            using var connection = await database.OpenConnectionAsync();
 035            using var command = connection.CreateCommand();
 36
 037            Guid userID = Guid.NewGuid();
 38
 039            command.CommandText = @"INSERT INTO User (uuid, log_in_info) VALUES (@uuid, @log_in_info);";
 40
 041            command.Parameters.AddWithValue("@uuid", userID);
 042            command.Parameters.AddWithValue("@log_in_info", log_in_info);
 43
 044            await command.ExecuteNonQueryAsync();
 45
 046            return userID;
 047        }
 48        public async Task UpdateUserAsync(User user)
 049        {
 050            using var connection = await database.OpenConnectionAsync();
 051            using var command = connection.CreateCommand();
 52
 053            command.CommandText = @"UPDATE User SET log_in_info = @log_in_info, isDel = @isDel WHERE uuid = @uuid;";
 54
 055            command.Parameters.AddWithValue("@uuid", user.uuid);
 056            command.Parameters.AddWithValue("@log_in_info", user.log_in_info);
 057            command.Parameters.AddWithValue("@isDel", user.isDel);
 58
 059            await command.ExecuteNonQueryAsync();
 060        }
 61
 62        public async Task DeleteUserAsync(Guid uuid)
 063        {
 064            using var connection = await database.OpenConnectionAsync();
 065            using var command = connection.CreateCommand();
 66
 067            command.CommandText = @"UPDATE User SET isDel = 1 WHERE uuid = @uuid;";
 68
 069            command.Parameters.AddWithValue("@uuid", uuid);
 70
 071            await command.ExecuteNonQueryAsync();
 072        }
 73
 74        private async Task<IReadOnlyList<User>> ReadAllAsync(DbDataReader reader)
 075        {
 076            var users = new List<User>();
 077            using (reader)
 078            {
 079                while (await reader.ReadAsync())
 080                {
 081                    var user = new User
 082                    {
 083                        uuid = reader.GetGuid(0),
 084                        log_in_info = reader.GetString(1),
 085                        isDel = reader.GetBoolean(2),
 086                    };
 087                    users.Add(user);
 088                }
 089            }
 090            return users;
 091        }
 92    }
 93}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/class.js b/coveragereport/class.js new file mode 100644 index 0000000..b7a43b2 --- /dev/null +++ b/coveragereport/class.js @@ -0,0 +1,218 @@ +/* Chartist.js 0.11.4 + * Copyright © 2019 Gion Kunz + * Free to use under either the WTFPL license or the MIT license. + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT + */ + +!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { + var a = { version: "0.11.4" }; return function (a, b) { "use strict"; var c = a.window, d = a.document; b.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, b.noop = function (a) { return a }, b.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, b.extend = function (a) { var c, d, e; for (a = a || {}, c = 1; c < arguments.length; c++) { d = arguments[c]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = b.extend(a[f], e) } return a }, b.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, b.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, b.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, b.querySelector = function (a) { return a instanceof Node ? a : d.querySelector(a) }, b.times = function (a) { return Array.apply(null, new Array(a)) }, b.sum = function (a, b) { return a + (b ? b : 0) }, b.mapMultiply = function (a) { return function (b) { return b * a } }, b.mapAdd = function (a) { return function (b) { return b + a } }, b.serialMap = function (a, c) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return b.times(e).forEach(function (b, e) { var f = a.map(function (a) { return a[e] }); d[e] = c.apply(null, f) }), d }, b.roundWithPrecision = function (a, c) { var d = Math.pow(10, c || b.precision); return Math.round(a * d) / d }, b.precision = 8, b.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, b.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(b.escapingMap).reduce(function (a, c) { return b.replaceAll(a, c, b.escapingMap[c]) }, a)) }, b.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(b.escapingMap).reduce(function (a, c) { return b.replaceAll(a, b.escapingMap[c], c) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (c) { } return a }, b.createSvg = function (a, c, d, e) { var f; return c = c || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(b.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new b.Svg("svg").attr({ width: c, height: d }).addClass(e), f._node.style.width = c, f._node.style.height = d, a.appendChild(f._node), f }, b.normalizeData = function (a, c, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = b.getDataArray({ series: a.series || [] }, c, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, b.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), c && b.reverseData(f.normalized), f }, b.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, b.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, b.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, b.getDataArray = function (a, c, d) { function e(a) { if (b.safeHasProperty(a, "value")) return e(a.value); if (b.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!b.isDataHoleValue(a)) { if (d) { var c = {}; return "string" == typeof d ? c[d] = b.getNumberOrUndefined(a) : c.y = b.getNumberOrUndefined(a), c.x = a.hasOwnProperty("x") ? b.getNumberOrUndefined(a.x) : c.x, c.y = a.hasOwnProperty("y") ? b.getNumberOrUndefined(a.y) : c.y, c } return b.getNumberOrUndefined(a) } } return a.series.map(e) }, b.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, b.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, b.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, b.projectLength = function (a, b, c) { return b / c.range * a }, b.getAvailableHeight = function (a, c) { return Math.max((b.quantity(c.height).value || a.height()) - (c.chartPadding.top + c.chartPadding.bottom) - c.axisX.offset, 0) }, b.getHighLow = function (a, c, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } c = b.extend({}, c, d ? c["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === c.high ? -Number.MAX_VALUE : +c.high, low: void 0 === c.low ? Number.MAX_VALUE : +c.low }, g = void 0 === c.high, h = void 0 === c.low; return (g || h) && e(a), (c.referenceValue || 0 === c.referenceValue) && (f.high = Math.max(c.referenceValue, f.high), f.low = Math.min(c.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, b.isNumeric = function (a) { return null !== a && isFinite(a) }, b.isFalseyButZero = function (a) { return !a && 0 !== a }, b.getNumberOrUndefined = function (a) { return b.isNumeric(a) ? +a : void 0 }, b.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, b.getMultiValue = function (a, c) { return b.isMultiValue(a) ? b.getNumberOrUndefined(a[c || "y"]) : b.getNumberOrUndefined(a) }, b.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, b.getBounds = function (a, c, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: c.high, low: c.low }; k.valueRange = k.high - k.low, k.oom = b.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = b.projectLength(a, k.step, k), m = l < d, n = e ? b.rho(k.range) : 0; if (e && b.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && b.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && b.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(b.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = b.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, b.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, b.createChartRect = function (a, c, d) { var e = !(!c.axisX && !c.axisY), f = e ? c.axisY.offset : 0, g = e ? c.axisX.offset : 0, h = a.width() || b.quantity(c.width).value || 0, i = a.height() || b.quantity(c.height).value || 0, j = b.normalizePadding(c.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === c.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === c.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, b.createGrid = function (a, c, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", b.extend({ type: "grid", axis: d, index: c, group: g, element: k }, j)) }, b.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, b.createLabel = function (a, c, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = c, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = d.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", b.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, b.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", b.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, b.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, b.optionsProvider = function (a, d, e) { function f(a) { var f = h; if (h = b.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = c.matchMedia(d[i][0]); g.matches && (h = b.extend(h, d[i][1])) } e && a && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = b.extend({}, a), k = []; if (!c.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = c.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return b.extend({}, h) } } }, b.splitIntoSegments = function (a, c, d) { var e = { increasingX: !1, fillHoles: !1 }; d = b.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === b.getMultiValue(c[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(c[h / 2])); return f } }(this || global, a), function (a, b) { "use strict"; b.Interpolation = {}, b.Interpolation.none = function (a) { var c = { fillHoles: !1 }; return a = b.extend({}, c, a), function (c, d) { for (var e = new b.Svg.Path, f = !0, g = 0; g < c.length; g += 2) { var h = c[g], i = c[g + 1], j = d[g / 2]; void 0 !== b.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, b.Interpolation.simple = function (a) { var c = { divisor: 2, fillHoles: !1 }; a = b.extend({}, c, a); var d = 1 / Math.max(1, a.divisor); return function (c, e) { for (var f, g, h, i = new b.Svg.Path, j = 0; j < c.length; j += 2) { var k = c[j], l = c[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, b.Interpolation.cardinal = function (a) { var c = { tension: 1, fillHoles: !1 }; a = b.extend({}, c, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(c, g) { var h = b.splitIntoSegments(c, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), b.Svg.Path.join(i) } if (c = h[0].pathCoordinates, g = h[0].valueData, c.length <= 4) return b.Interpolation.none()(c, g); for (var j, k = (new b.Svg.Path).move(c[0], c[1], !1, g[0]), l = 0, m = c.length; m - 2 * !j > l; l += 2) { var n = [{ x: +c[l - 2], y: +c[l - 1] }, { x: +c[l], y: +c[l + 1] }, { x: +c[l + 2], y: +c[l + 3] }, { x: +c[l + 4], y: +c[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +c[0], y: +c[1] } : m - 2 === l && (n[2] = { x: +c[0], y: +c[1] }, n[3] = { x: +c[2], y: +c[3] }) : n[0] = { x: +c[m - 2], y: +c[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +c[l], y: +c[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return b.Interpolation.none()([]) } }, b.Interpolation.monotoneCubic = function (a) { var c = { fillHoles: !1 }; return a = b.extend({}, c, a), function d(c, e) { var f = b.splitIntoSegments(c, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), b.Svg.Path.join(g) } if (c = f[0].pathCoordinates, e = f[0].valueData, c.length <= 4) return b.Interpolation.none()(c, e); var h, i, j = [], k = [], l = c.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = c[2 * h], k[h] = c[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new b.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return b.Interpolation.none()([]) } }, b.Interpolation.step = function (a) { var c = { postpone: !0, fillHoles: !1 }; return a = b.extend({}, c, a), function (c, d) { for (var e, f, g, h = new b.Svg.Path, i = 0; i < c.length; i += 2) { var j = c[i], k = c[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(this || global, a), function (a, b) { "use strict"; b.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(this || global, a), function (a, b) { "use strict"; function c(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function d(a, c) { var d = c || this.prototype || b.Class, e = Object.create(d); b.Class.cloneDefinitions(e, a); var f = function () { var a, c = e.constructor || function () { }; return a = this === b ? Object.create(e) : this, c.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function e() { var a = c(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } b.Class = { extend: d, cloneDefinitions: e } }(this || global, a), function (a, b) { "use strict"; function c(a, c, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), c && (this.options = b.extend({}, d ? this.options : this.defaultOptions, c), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = b.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function d() { return this.initializeTimeoutId ? i.clearTimeout(this.initializeTimeoutId) : (i.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function e(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function f(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function g() { i.addEventListener("resize", this.resizeListener), this.optionsProvider = b.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function h(a, c, d, e, f) { this.container = b.querySelector(a), this.data = c || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = b.EventEmitter(), this.supportsForeignObject = b.Svg.isSupported("Extensibility"), this.supportsAnimations = b.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(g.bind(this), 0) } var i = a.window; b.Base = b.Class.extend({ constructor: h, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: c, detach: d, on: e, off: f, version: b.version, supportsForeignObject: !1 }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e, f) { a instanceof Element ? this._node = a : (this._node = y.createElementNS(b.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": b.namespaces.ct })), c && this.attr(c), d && this.addClass(d), e && (f && e._node.firstChild ? e._node.insertBefore(this._node, e._node.firstChild) : e._node.appendChild(this._node)) } function d(a, c) { return "string" == typeof a ? c ? this._node.getAttributeNS(c, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (c) { if (void 0 !== a[c]) if (c.indexOf(":") !== -1) { var d = c.split(":"); this._node.setAttributeNS(b.namespaces[d[0]], c, a[c]) } else this._node.setAttribute(c, a[c]) }.bind(this)), this) } function e(a, c, d, e) { return new b.Svg(a, c, d, this, e) } function f() { return this._node.parentNode instanceof SVGElement ? new b.Svg(this._node.parentNode) : null } function g() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new b.Svg(a) } function h(a) { var c = this._node.querySelector(a); return c ? new b.Svg(c) : null } function i(a) { var c = this._node.querySelectorAll(a); return c.length ? new b.Svg.List(c) : null } function j() { return this._node } function k(a, c, d, e) { if ("string" == typeof a) { var f = y.createElement("div"); f.innerHTML = a, a = f.firstChild } a.setAttribute("xmlns", b.namespaces.xmlns); var g = this.elem("foreignObject", c, d, e); return g._node.appendChild(a), g } function l(a) { return this._node.appendChild(y.createTextNode(a)), this } function m() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function n() { return this._node.parentNode.removeChild(this._node), this.parent() } function o(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function p(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function q() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function r(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function s(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function t() { return this._node.setAttribute("class", ""), this } function u() { return this._node.getBoundingClientRect().height } function v() { return this._node.getBoundingClientRect().width } function w(a, c, d) { return void 0 === c && (c = !0), Object.keys(a).forEach(function (e) { function f(a, c) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : b.Svg.Easing[a.easing], delete a.easing), a.begin = b.ensureUnit(a.begin, "ms"), a.dur = b.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), c && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = b.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", b.extend({ attributeName: e }, a)), c && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), c && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], c) }.bind(this)), this } function x(a) { var c = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new b.Svg(a[d])); Object.keys(b.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { c[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return c.svgElements.forEach(function (c) { b.Svg.prototype[a].apply(c, d) }), c } }) } var y = a.document; b.Svg = b.Class.extend({ constructor: c, attr: d, elem: e, parent: f, root: g, querySelector: h, querySelectorAll: i, getNode: j, foreignObject: k, text: l, empty: m, remove: n, replace: o, append: p, classes: q, addClass: r, removeClass: s, removeAllClasses: t, height: u, width: v, animate: w }), b.Svg.isSupported = function (a) { return y.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; b.Svg.Easing = z, b.Svg.List = b.Class.extend({ constructor: x }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e, f, g) { var h = b.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, c, g ? { data: g } : {}); d.splice(e, 0, h) } function d(a, b) { a.forEach(function (c, d) { t[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function e(a, c) { this.pathElements = [], this.pos = 0, this.close = a, this.options = b.extend({}, u, c) } function f(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function g(a) { return this.pathElements.splice(this.pos, a), this } function h(a, b, d, e) { return c("M", { x: +a, y: +b }, this.pathElements, this.pos++, d, e), this } function i(a, b, d, e) { return c("L", { x: +a, y: +b }, this.pathElements, this.pos++, d, e), this } function j(a, b, d, e, f, g, h, i) { return c("C", { x1: +a, y1: +b, x2: +d, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function k(a, b, d, e, f, g, h, i, j) { return c("A", { rx: +a, ry: +b, xAr: +d, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function l(a) { var c = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === c[c.length - 1][0].toUpperCase() && c.pop(); var d = c.map(function (a) { var c = a.shift(), d = t[c.toLowerCase()]; return b.extend({ command: c }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function m() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = t[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function n(a, b) { return d(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function o(a, b) { return d(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function p(a) { return d(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function q(a) { var c = new b.Svg.Path(a || this.close); return c.pos = this.pos, c.pathElements = this.pathElements.slice().map(function (a) { return b.extend({}, a) }), c.options = b.extend({}, this.options), c } function r(a) { var c = [new b.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== c[c.length - 1].pathElements.length && c.push(new b.Svg.Path), c[c.length - 1].pathElements.push(d) }), c } function s(a, c, d) { for (var e = new b.Svg.Path(c, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var t = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, u = { accuracy: 3 }; b.Svg.Path = b.Class.extend({ constructor: e, position: f, remove: g, move: h, line: i, curve: j, arc: k, scale: n, translate: o, transform: p, parse: l, stringify: m, clone: q, splitByCommand: r }), b.Svg.Path.elementDescriptions = t, b.Svg.Path.join = s }(this || global, a), function (a, b) { "use strict"; function c(a, b, c, d) { this.units = a, this.counterUnits = a === e.x ? e.y : e.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function d(a, c, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), b.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && b.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && b.createLabel(j, l, k, i, this, g.offset, m, c, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var e = (a.window, a.document, { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }); b.Axis = b.Class.extend({ constructor: c, createGridAndLabels: d, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), b.Axis.units = e }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { var f = e.highLow || b.getHighLow(c, e, a.pos); this.bounds = b.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, b.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function d(a) { return this.axisLength * (+b.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } a.window, a.document; b.AutoScaleAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { var f = e.highLow || b.getHighLow(c, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || b.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, b.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function d(a) { return this.axisLength * (+b.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } a.window, a.document; b.FixedScaleAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { b.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function d(a, b) { return this.stepLength * b } a.window, a.document; b.StepAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a) { var c = b.normalizeData(this.data, a.reverseData, !0); this.svg = b.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, f, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = b.createChartRect(this.svg, a, e.padding); d = void 0 === a.axisX.type ? new b.StepAxis(b.Axis.units.x, c.normalized.series, j, b.extend({}, a.axisX, { ticks: c.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, j, a.axisX), f = void 0 === a.axisY.type ? new b.AutoScaleAxis(b.Axis.units.y, c.normalized.series, j, b.extend({}, a.axisY, { high: b.isNumeric(a.high) ? a.high : a.axisY.high, low: b.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), f.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && b.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), c.raw.series.forEach(function (e, g) { var i = h.elem("g"); i.attr({ "ct:series-name": e.name, "ct:meta": b.serialize(e.meta) }), i.addClass([a.classNames.series, e.className || a.classNames.series + "-" + b.alphaNumerate(g)].join(" ")); var k = [], l = []; c.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, c.normalized.series[g]), y: j.y1 - f.projectValue(a, h, c.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: b.getMetaData(e, h) }) }.bind(this)); var m = { lineSmooth: b.getSeriesOption(e, a, "lineSmooth"), showPoint: b.getSeriesOption(e, a, "showPoint"), showLine: b.getSeriesOption(e, a, "showLine"), showArea: b.getSeriesOption(e, a, "showArea"), areaBase: b.getSeriesOption(e, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? b.Interpolation.monotoneCubic() : b.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (c) { var h = i.elem("line", { x1: c.x, y1: c.y, x2: c.x + .01, y2: c.y }, a.classNames.point).attr({ "ct:value": [c.data.value.x, c.data.value.y].filter(b.isNumeric).join(","), "ct:meta": b.serialize(c.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: c.data.value, index: c.data.valueIndex, meta: c.data.meta, series: e, seriesIndex: g, axisX: d, axisY: f, group: i, element: h, x: c.x, y: c.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: c.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: e, seriesIndex: g, seriesMeta: e.meta, axisX: d, axisY: f, group: i, element: p }) } if (m.showArea && f.range) { var q = Math.max(Math.min(m.areaBase, f.range.max), f.range.min), r = j.y1 - f.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (b) { var h = i.elem("path", { d: b.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: c.normalized.series[g], path: b.clone(), series: e, seriesIndex: g, axisX: d, axisY: f, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: f.bounds, chartRect: j, axisX: d, axisY: f, svg: this.svg, options: a }) } function d(a, c, d, f) { b.Line["super"].constructor.call(this, a, c, e, b.extend({}, e, d), f) } var e = (a.window, a.document, { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }); b.Line = b.Base.extend({ constructor: d, createChart: c }) }(this || global, a), function (a, b) { + "use strict"; function c(a) { + var c, d; a.distributeSeries ? (c = b.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), c.normalized.series = c.normalized.series.map(function (a) { return [a] })) : c = b.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = b.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var f = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); + if (a.stackBars && 0 !== c.normalized.series.length) { var i = b.serialMap(c.normalized.series, function () { return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) }); d = b.getHighLow([i], a, a.horizontalBars ? "x" : "y") } else d = b.getHighLow(c.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = b.createChartRect(this.svg, a, e.padding); k = a.distributeSeries && a.stackBars ? c.normalized.labels.slice(0, 1) : c.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new b.AutoScaleAxis(b.Axis.units.x, c.normalized.series, o, b.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, o, b.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new b.StepAxis(b.Axis.units.y, c.normalized.series, o, { ticks: k }) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new b.StepAxis(b.Axis.units.x, c.normalized.series, o, { ticks: k }) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new b.AutoScaleAxis(b.Axis.units.y, c.normalized.series, o, b.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, o, b.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(f, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(f, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && b.createGridBackground(f, o, a.classNames.gridBackground, this.eventEmitter), c.raw.series.forEach(function (d, e) { var f, h, i = e - (c.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / c.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / c.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": b.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + b.alphaNumerate(e)].join(" ")), c.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, c.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, c.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, c.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, c.normalized.series[e]) }, l instanceof b.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = b.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(b.isNumeric).join(","), "ct:meta": b.serialize(w) }), this.eventEmitter.emit("draw", b.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) + } function d(a, c, d, f) { b.Bar["super"].constructor.call(this, a, c, e, b.extend({}, e, d), f) } var e = (a.window, a.document, { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }); b.Bar = b.Base.extend({ constructor: d, createChart: c }) + }(this || global, a), function (a, b) { "use strict"; function c(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function d(a) { var d, e, g, h, i, j = b.normalizeData(this.data), k = [], l = a.startAngle; this.svg = b.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = b.createChartRect(this.svg, a, f.padding), g = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = b.quantity(a.donutWidth); "%" === m.unit && (m.value *= g / 100), g -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? g : "center" === a.labelPosition ? 0 : a.donutSolid ? g - m.value / 2 : g / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (d = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, f) { if (0 !== j.normalized.series[f] || !a.ignoreEmptyValues) { k[f].attr({ "ct:series-name": e.name }), k[f].addClass([a.classNames.series, e.className || a.classNames.series + "-" + b.alphaNumerate(f)].join(" ")); var p = i > 0 ? l + j.normalized.series[f] / i * 360 : 0, q = Math.max(0, l - (0 === f || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = b.polarToCartesian(n.x, n.y, g, q), v = b.polarToCartesian(n.x, n.y, g, p), w = new b.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(g, g, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = g - m.value, r = b.polarToCartesian(n.x, n.y, t, l - (0 === f || o ? 0 : .2)), s = b.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[f].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[f], "ct:meta": b.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[f], totalDataSum: i, index: f, meta: e.meta, series: e, group: k[f], element: y, path: w.clone(), center: n, radius: g, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : b.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !b.isFalseyButZero(j.normalized.labels[f]) ? j.normalized.labels[f] : j.normalized.series[f]; var B = a.labelInterpolationFnc(A, f); if (B || 0 === B) { var C = d.elem("text", { dx: z.x, dy: z.y, "text-anchor": c(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: f, group: d, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function e(a, c, d, e) { b.Pie["super"].constructor.call(this, a, c, f, b.extend({}, f, d), e) } var f = (a.window, a.document, { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: b.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }); b.Pie = b.Base.extend({ constructor: e, createChart: d, determineAnchorPosition: c }) }(this || global, a), a +}); +//# sourceMappingURL=chartist.min.js.map + +var i, l, selectedLine = null; + +/* Navigate to hash without browser history entry */ +var navigateToHash = function () { + if (window.history !== undefined && window.history.replaceState !== undefined) { + window.history.replaceState(undefined, undefined, this.getAttribute("href")); + } +}; + +var hashLinks = document.getElementsByClassName('navigatetohash'); +for (i = 0, l = hashLinks.length; i < l; i++) { + hashLinks[i].addEventListener('click', navigateToHash); +} + +/* Switch test method */ +var switchTestMethod = function () { + var method = this.getAttribute("value"); + console.log("Selected test method: " + method); + + var lines, i, l, coverageData, lineAnalysis, cells; + + lines = document.querySelectorAll('.lineAnalysis tr'); + + for (i = 1, l = lines.length; i < l; i++) { + coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); + lineAnalysis = coverageData[method]; + cells = lines[i].querySelectorAll('td'); + if (lineAnalysis === undefined) { + lineAnalysis = coverageData.AllTestMethods; + if (lineAnalysis.LVS !== 'gray') { + cells[0].setAttribute('class', 'red'); + cells[1].innerText = cells[1].textContent = '0'; + cells[4].setAttribute('class', 'lightred'); + } + } else { + cells[0].setAttribute('class', lineAnalysis.LVS); + cells[1].innerText = cells[1].textContent = lineAnalysis.VC; + cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); + } + } +}; + +var testMethods = document.getElementsByClassName('switchtestmethod'); +for (i = 0, l = testMethods.length; i < l; i++) { + testMethods[i].addEventListener('change', switchTestMethod); +} + +/* Highlight test method by line */ +var toggleLine = function () { + if (selectedLine === this) { + selectedLine = null; + } else { + selectedLine = null; + unhighlightTestMethods(); + highlightTestMethods.call(this); + selectedLine = this; + } + +}; +var highlightTestMethods = function () { + if (selectedLine !== null) { + return; + } + + var lineAnalysis; + var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); + var testMethods = document.getElementsByClassName('testmethod'); + + for (i = 0, l = testMethods.length; i < l; i++) { + lineAnalysis = coverageData[testMethods[i].id]; + if (lineAnalysis === undefined) { + testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); + } else { + testMethods[i].className += ' light' + lineAnalysis.LVS; + } + } +}; +var unhighlightTestMethods = function () { + if (selectedLine !== null) { + return; + } + + var testMethods = document.getElementsByClassName('testmethod'); + for (i = 0, l = testMethods.length; i < l; i++) { + testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); + } +}; +var coverableLines = document.getElementsByClassName('coverableline'); +for (i = 0, l = coverableLines.length; i < l; i++) { + coverableLines[i].addEventListener('click', toggleLine); + coverableLines[i].addEventListener('mouseenter', highlightTestMethods); + coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); +} + +/* History charts */ +var renderChart = function (chart) { + // Remove current children (e.g. PNG placeholder) + while (chart.firstChild) { + chart.firstChild.remove(); + } + + var chartData = window[chart.getAttribute('data-data')]; + var options = { + axisY: { + type: undefined, + onlyInteger: true + }, + lineSmooth: false, + low: 0, + high: 100, + scaleMinSpace: 20, + onlyInteger: true, + fullWidth: true + }; + var lineChart = new Chartist.Line(chart, { + labels: [], + series: chartData.series + }, options); + + /* Zoom */ + var zoomButtonDiv = document.createElement("div"); + zoomButtonDiv.className = "toggleZoom"; + var zoomButtonLink = document.createElement("a"); + zoomButtonLink.setAttribute("href", ""); + var zoomButtonText = document.createElement("i"); + zoomButtonText.className = "icon-search-plus"; + + zoomButtonLink.appendChild(zoomButtonText); + zoomButtonDiv.appendChild(zoomButtonLink); + + chart.appendChild(zoomButtonDiv); + + zoomButtonDiv.addEventListener('click', function (event) { + event.preventDefault(); + + if (options.axisY.type === undefined) { + options.axisY.type = Chartist.AutoScaleAxis; + zoomButtonText.className = "icon-search-minus"; + } else { + options.axisY.type = undefined; + zoomButtonText.className = "icon-search-plus"; + } + + lineChart.update(null, options); + }); + + var tooltip = document.createElement("div"); + tooltip.className = "tooltip"; + + chart.appendChild(tooltip); + + /* Tooltips */ + var showToolTip = function () { + var index = this.getAttribute('ct:meta'); + + tooltip.innerHTML = chartData.tooltips[index]; + tooltip.style.display = 'block'; + }; + + var moveToolTip = function (event) { + var box = chart.getBoundingClientRect(); + var left = event.pageX - box.left - window.pageXOffset; + var top = event.pageY - box.top - window.pageYOffset; + + left = left + 20; + top = top - tooltip.offsetHeight / 2; + + if (left + tooltip.offsetWidth > box.width) { + left -= tooltip.offsetWidth + 40; + } + + if (top < 0) { + top = 0; + } + + if (top + tooltip.offsetHeight > box.height) { + top = box.height - tooltip.offsetHeight; + } + + tooltip.style.left = left + 'px'; + tooltip.style.top = top + 'px'; + }; + + var hideToolTip = function () { + tooltip.style.display = 'none'; + }; + chart.addEventListener('mousemove', moveToolTip); + + lineChart.on('created', function () { + var chartPoints = chart.getElementsByClassName('ct-point'); + for (i = 0, l = chartPoints.length; i < l; i++) { + chartPoints[i].addEventListener('mousemove', showToolTip); + chartPoints[i].addEventListener('mouseout', hideToolTip); + } + }); +}; + +var charts = document.getElementsByClassName('historychart'); +for (i = 0, l = charts.length; i < l; i++) { + renderChart(charts[i]); +} \ No newline at end of file diff --git a/coveragereport/icon_cog.svg b/coveragereport/icon_cog.svg new file mode 100644 index 0000000..d730bf1 --- /dev/null +++ b/coveragereport/icon_cog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_cog_dark.svg b/coveragereport/icon_cog_dark.svg new file mode 100644 index 0000000..ccbcd9b --- /dev/null +++ b/coveragereport/icon_cog_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_cube.svg b/coveragereport/icon_cube.svg new file mode 100644 index 0000000..3302443 --- /dev/null +++ b/coveragereport/icon_cube.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_cube_dark.svg b/coveragereport/icon_cube_dark.svg new file mode 100644 index 0000000..3e7f0fa --- /dev/null +++ b/coveragereport/icon_cube_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_down-dir_active.svg b/coveragereport/icon_down-dir_active.svg new file mode 100644 index 0000000..d11cf04 --- /dev/null +++ b/coveragereport/icon_down-dir_active.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_down-dir_active_dark.svg b/coveragereport/icon_down-dir_active_dark.svg new file mode 100644 index 0000000..fa34aeb --- /dev/null +++ b/coveragereport/icon_down-dir_active_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_fork.svg b/coveragereport/icon_fork.svg new file mode 100644 index 0000000..f0148b3 --- /dev/null +++ b/coveragereport/icon_fork.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_fork_dark.svg b/coveragereport/icon_fork_dark.svg new file mode 100644 index 0000000..11930c9 --- /dev/null +++ b/coveragereport/icon_fork_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_info-circled.svg b/coveragereport/icon_info-circled.svg new file mode 100644 index 0000000..252166b --- /dev/null +++ b/coveragereport/icon_info-circled.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_info-circled_dark.svg b/coveragereport/icon_info-circled_dark.svg new file mode 100644 index 0000000..252166b --- /dev/null +++ b/coveragereport/icon_info-circled_dark.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_minus.svg b/coveragereport/icon_minus.svg new file mode 100644 index 0000000..3c30c36 --- /dev/null +++ b/coveragereport/icon_minus.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_minus_dark.svg b/coveragereport/icon_minus_dark.svg new file mode 100644 index 0000000..2516b6f --- /dev/null +++ b/coveragereport/icon_minus_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_plus.svg b/coveragereport/icon_plus.svg new file mode 100644 index 0000000..7932723 --- /dev/null +++ b/coveragereport/icon_plus.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_plus_dark.svg b/coveragereport/icon_plus_dark.svg new file mode 100644 index 0000000..6ed4edd --- /dev/null +++ b/coveragereport/icon_plus_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_search-minus.svg b/coveragereport/icon_search-minus.svg new file mode 100644 index 0000000..c174eb5 --- /dev/null +++ b/coveragereport/icon_search-minus.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_search-minus_dark.svg b/coveragereport/icon_search-minus_dark.svg new file mode 100644 index 0000000..9caaffb --- /dev/null +++ b/coveragereport/icon_search-minus_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_search-plus.svg b/coveragereport/icon_search-plus.svg new file mode 100644 index 0000000..04b24ec --- /dev/null +++ b/coveragereport/icon_search-plus.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_search-plus_dark.svg b/coveragereport/icon_search-plus_dark.svg new file mode 100644 index 0000000..5324194 --- /dev/null +++ b/coveragereport/icon_search-plus_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/icon_sponsor.svg b/coveragereport/icon_sponsor.svg new file mode 100644 index 0000000..bf6d959 --- /dev/null +++ b/coveragereport/icon_sponsor.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_star.svg b/coveragereport/icon_star.svg new file mode 100644 index 0000000..b23c54e --- /dev/null +++ b/coveragereport/icon_star.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_star_dark.svg b/coveragereport/icon_star_dark.svg new file mode 100644 index 0000000..49c0d03 --- /dev/null +++ b/coveragereport/icon_star_dark.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_up-dir.svg b/coveragereport/icon_up-dir.svg new file mode 100644 index 0000000..567c11f --- /dev/null +++ b/coveragereport/icon_up-dir.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_up-dir_active.svg b/coveragereport/icon_up-dir_active.svg new file mode 100644 index 0000000..bb22554 --- /dev/null +++ b/coveragereport/icon_up-dir_active.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_wrench.svg b/coveragereport/icon_wrench.svg new file mode 100644 index 0000000..b6aa318 --- /dev/null +++ b/coveragereport/icon_wrench.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/coveragereport/icon_wrench_dark.svg b/coveragereport/icon_wrench_dark.svg new file mode 100644 index 0000000..5c77a9c --- /dev/null +++ b/coveragereport/icon_wrench_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coveragereport/index.htm b/coveragereport/index.htm new file mode 100644 index 0000000..2e441b4 --- /dev/null +++ b/coveragereport/index.htm @@ -0,0 +1,404 @@ + + + + + + + +Summary - Coverage Report + +
+

SummaryStarSponsor

+
+
+
Information
+
+
+ + + + + + + + + + + + + + + + + +
Parser:DynamicCodeCoverage
Assemblies:2
Classes:220
Files:208
+
+
+
+
+
Line coverage
+
+
15%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:2029
Uncovered lines:10666
Coverable lines:12695
Total lines:25880
Line coverage:15.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Total329426680
+
+ + +

Coverage

+ +
+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Line coverage
NameCoveredUncoveredCoverableTotalPercentage
chemistry cafe api.dll281995202335081.3%
  
Chemistry_Cafe_API.Controllers.FamilyController712195736.8%
  
Chemistry_Cafe_API.Controllers.FamilyTagMechListController01919570%
 
Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.OpenAtmosController01010370%
 
Chemistry_Cafe_API.Controllers.PropertyListController02222640%
 
Chemistry_Cafe_API.Controllers.PropertyTypeController02222640%
 
Chemistry_Cafe_API.Controllers.PropertyVersionController01919570%
 
Chemistry_Cafe_API.Controllers.ReactantProductListController02525720%
 
Chemistry_Cafe_API.Controllers.ReactionController02525720%
 
Chemistry_Cafe_API.Controllers.SpeciesController02222640%
 
Chemistry_Cafe_API.Controllers.TagMechanismController02222630%
 
Chemistry_Cafe_API.Controllers.TagMechanismReactionListController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.UserController01919570%
 
Chemistry_Cafe_API.Controllers.UserPreferencesController01919570%
 
Chemistry_Cafe_API.Models.DeleteReactantProductList02280%
 
Chemistry_Cafe_API.Models.Family044100%
 
Chemistry_Cafe_API.Models.FamilyTagMechList055110%
 
Chemistry_Cafe_API.Models.FamilyTagMechListVersion088140%
 
Chemistry_Cafe_API.Models.Property02222280%
 
Chemistry_Cafe_API.Models.PropertyList044100%
 
Chemistry_Cafe_API.Models.PropertyType055110%
 
Chemistry_Cafe_API.Models.PropertyVersion01313190%
 
Chemistry_Cafe_API.Models.ReactantProductList044100%
 
Chemistry_Cafe_API.Models.ReactantsProducts055110%
 
Chemistry_Cafe_API.Models.Reaction066120%
 
Chemistry_Cafe_API.Models.Species03390%
 
Chemistry_Cafe_API.Models.TagMechanism03390%
 
Chemistry_Cafe_API.Models.TagMechanismReactionList055110%
 
Chemistry_Cafe_API.Models.TagMechanismReactionListVersion088140%
 
Chemistry_Cafe_API.Models.TagMechanismSpeciesList055110%
 
Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion088140%
 
Chemistry_Cafe_API.Models.User03390%
 
Chemistry_Cafe_API.Models.UserPreferences044100%
 
Chemistry_Cafe_API.Services.FamilyService15557010921.4%
  
Chemistry_Cafe_API.Services.FamilyTagMechListService06464980%
 
Chemistry_Cafe_API.Services.FamilyTagMechListVersionService073731070%
 
Chemistry_Cafe_API.Services.OpenAtmosService02582583110%
 
Chemistry_Cafe_API.Services.PropertyListService01301301710%
 
Chemistry_Cafe_API.Services.PropertyTypeService078781200%
 
Chemistry_Cafe_API.Services.PropertyVersionService01071071420%
 
Chemistry_Cafe_API.Services.ReactantProductListService096961410%
 
Chemistry_Cafe_API.Services.ReactionService01421422030%
 
Chemistry_Cafe_API.Services.SpeciesService065651040%
 
Chemistry_Cafe_API.Services.TagMechanismReactionListService06464980%
 
Chemistry_Cafe_API.Services.TagMechanismReactionListVersionService073731070%
 
Chemistry_Cafe_API.Services.TagMechanismService065651040%
 
Chemistry_Cafe_API.Services.TagMechanismSpeciesListService06464980%
 
Chemistry_Cafe_API.Services.TagMechanismSpeciesListVersionService073731070%
 
Chemistry_Cafe_API.Services.UserPreferencesService06161960%
 
Chemistry_Cafe_API.Services.UserService05858930%
 
Chemistry_Cafe_API.Tests.FamilyControllerTests60623100%
 
Program02121390%
 
mysqlconnector.dll20018671106723336318.7%
  
MySqlConnector.Authentication.AuthenticationPlugins01010400%
 
MySqlConnector.ColumnReaders.BinaryBooleanColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryDateTimeColumnReader02828620%
 
MySqlConnector.ColumnReaders.BinaryDoubleColumnReader022120%
 
MySqlConnector.ColumnReaders.BinaryFloatColumnReader022120%
 
MySqlConnector.ColumnReaders.BinarySignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt8ColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryTimeColumnReader01616330%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt8ColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryYearColumnReader044200%
 
MySqlConnector.ColumnReaders.BitColumnReader01111370%
 
MySqlConnector.ColumnReaders.BytesColumnReader022110%
 
MySqlConnector.ColumnReaders.ColumnReader059591250%
 
MySqlConnector.ColumnReaders.DecimalColumnReader044200%
 
MySqlConnector.ColumnReaders.GuidBinary16ColumnReader033200%
 
MySqlConnector.ColumnReaders.GuidChar32ColumnReader033150%
 
MySqlConnector.ColumnReaders.GuidChar36ColumnReader033150%
 
MySqlConnector.ColumnReaders.GuidLittleEndianBinary16ColumnReader033170%
 
MySqlConnector.ColumnReaders.GuidTimeSwapBinary16ColumnReader033200%
 
MySqlConnector.ColumnReaders.NullColumnReader022110%
 
MySqlConnector.ColumnReaders.StringColumnReader022130%
 
MySqlConnector.ColumnReaders.TextBooleanColumnReader044190%
 
MySqlConnector.ColumnReaders.TextDateTimeColumnReader04242950%
 
MySqlConnector.ColumnReaders.TextDoubleColumnReader01010230%
 
MySqlConnector.ColumnReaders.TextFloatColumnReader01010230%
 
MySqlConnector.ColumnReaders.TextSignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt8ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextTimeColumnReader022120%
 
MySqlConnector.ColumnReaders.TextUnsignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextUnsignedInt32ColumnReader044180%
 
MySqlConnector.ColumnReaders.TextUnsignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextUnsignedInt8ColumnReader044200%
 
MySqlConnector.Core.CachedParameter01919260%
 
MySqlConnector.Core.CachedProcedure01551552680%
 
MySqlConnector.Core.ColumnTypeMetadata01212180%
 
MySqlConnector.Core.CommandExecutor1916357954.2%
  
MySqlConnector.Core.CommandListPosition1701729100%
 
MySqlConnector.Core.ConcatenatedCommandPayloadCreator01616430%
 
MySqlConnector.Core.ConnectionPool12225437682232.4%
  
MySqlConnector.Core.ConnectionSettings10711722433047.7%
  
MySqlConnector.Core.DataReaderValuesEnumerator066370%
 
MySqlConnector.Core.DataRowsValuesEnumerator01313630%
 
MySqlConnector.Core.DbDataReaderValuesEnumerator055240%
 
MySqlConnector.Core.DbTypeMapping066150%
 
MySqlConnector.Core.EnlistedTransactionBase02828590%
 
MySqlConnector.Core.FailOverLoadBalancer40421100%
 
MySqlConnector.Core.ICancellableCommandExtensions166229272.7%
  
MySqlConnector.Core.IMySqlCommandExtensions175225477.2%
  
MySqlConnector.Core.MetricsReporter335386086.8%
  
MySqlConnector.Core.NormalizedSchema027271080%
 
MySqlConnector.Core.ParsedStatement044310%
 
MySqlConnector.Core.ParsedStatements066190%
 
MySqlConnector.Core.PreparedStatement055140%
 
MySqlConnector.Core.PreparedStatements055120%
 
MySqlConnector.Core.RandomLoadBalancer01111480%
 
MySqlConnector.Core.ResultSet7212219437437.1%
  
MySqlConnector.Core.RoundRobinLoadBalancer099680%
 
MySqlConnector.Core.Row02992994990%
 
MySqlConnector.Core.SchemaProvider01193119314630%
 
MySqlConnector.Core.ServerSession3117081019377030.5%
  
MySqlConnector.Core.ServerVersion254296086.2%
  
MySqlConnector.Core.ServerVersions60622100%
 
MySqlConnector.Core.SingleCommandPayloadCreator2511814327217.4%
  
MySqlConnector.Core.SqlParser589915734636.9%
  
MySqlConnector.Core.StandardEnlistedTransaction02727480%
 
MySqlConnector.Core.StatementPreparer15597415220.2%
  
MySqlConnector.Core.TypeMapper01991993500%
 
MySqlConnector.Core.XaEnlistedTransaction02121520%
 
MySqlConnector.Logging.ConsoleLoggerProvider05353830%
 
MySqlConnector.Logging.Log3283086221243.7%
  
MySqlConnector.Logging.MySqlConnectorLoggingConfiguration80816100%
 
MySqlConnector.Logging.MySqlConnectorLogManager02020620%
 
MySqlConnector.Logging.NoOpLogger033250%
 
MySqlConnector.Logging.NoOpLoggerProvider011120%
 
MySqlConnector.MySqlAttribute01010410%
 
MySqlConnector.MySqlAttributeCollection02121960%
 
MySqlConnector.MySqlBatch01381384130%
 
MySqlConnector.MySqlBatchCommand02626930%
 
MySqlConnector.MySqlBatchCommandCollection01818540%
 
MySqlConnector.MySqlBulkCopy02942947050%
 
MySqlConnector.MySqlBulkCopyColumnMapping066610%
 
MySqlConnector.MySqlBulkCopyResult066240%
 
MySqlConnector.MySqlBulkLoader01201203240%
 
MySqlConnector.MySqlCommand7112019146437.1%
  
MySqlConnector.MySqlCommandBuilder051511030%
 
MySqlConnector.MySqlConnection107382489112621.8%
  
MySqlConnector.MySqlConnectionStringBuilder737614988648.9%
  
MySqlConnector.MySqlConnectionStringOption2281229136399.5%
 
MySqlConnector.MySqlConnectionStringReferenceOption<T>819138088.8%
  
MySqlConnector.MySqlConnectionStringValueOption<T>111223135347.8%
  
MySqlConnector.MySqlConnectorFactory016161030%
 
MySqlConnector.MySqlConversionException044270%
 
MySqlConnector.MySqlDataAdapter01101102370%
 
MySqlConnector.MySqlDataReader7930638569420.5%
  
MySqlConnector.MySqlDataSource35498421241.6%
  
MySqlConnector.MySqlDataSourceBuilder026261130%
 
MySqlConnector.MySqlDateTime074742030%
 
MySqlConnector.MySqlDbColumn03737540%
 
MySqlConnector.MySqlDecimal01313500%
 
MySqlConnector.MySqlEndOfStreamException066150%
 
MySqlConnector.MySqlError01010380%
 
MySqlConnector.MySqlException041411290%
 
MySqlConnector.MySqlGeometry01010520%
 
MySqlConnector.MySqlHelper01313380%
 
MySqlConnector.MySqlInfoMessageEventArgs022140%
 
MySqlConnector.MySqlParameter04664669500%
 
MySqlConnector.MySqlParameterCollection01001002050%
 
MySqlConnector.MySqlProtocolException055320%
 
MySqlConnector.MySqlProvidePasswordContext01010350%
 
MySqlConnector.MySqlRowsCopiedEventArgs044180%
 
MySqlConnector.MySqlRowUpdatedEventArgs0332680%
 
MySqlConnector.MySqlRowUpdatingEventArgs0332580%
 
MySqlConnector.MySqlTransaction079792950%
 
MySqlConnector.Protocol.PayloadData1001025100%
 
MySqlConnector.Protocol.Payloads.AuthenticationMethodSwitchRequestPayload01313400%
 
MySqlConnector.Protocol.Payloads.AuthenticationMoreDataPayload055190%
 
MySqlConnector.Protocol.Payloads.CachingSha2ServerResponsePayload01111320%
 
MySqlConnector.Protocol.Payloads.ChangeUserPayload01212230%
 
MySqlConnector.Protocol.Payloads.ColumnCountPayload90927100%
 
MySqlConnector.Protocol.Payloads.ColumnDefinitionPayload31346513747.6%
  
MySqlConnector.Protocol.Payloads.EmptyPayload01160%
 
MySqlConnector.Protocol.Payloads.EofPayload01515420%
 
MySqlConnector.Protocol.Payloads.ErrorPayload01818450%
 
MySqlConnector.Protocol.Payloads.HandshakeResponse41Payload431447797.7%
  
MySqlConnector.Protocol.Payloads.InitDatabasePayload044150%
 
MySqlConnector.Protocol.Payloads.InitialHandshakePayload402427095.2%
  
MySqlConnector.Protocol.Payloads.LocalInfilePayload077260%
 
MySqlConnector.Protocol.Payloads.OkPayload43125514078.1%
  
MySqlConnector.Protocol.Payloads.PingPayload01160%
 
MySqlConnector.Protocol.Payloads.QueryPayload60613100%
 
MySqlConnector.Protocol.Payloads.QuitPayload01160%
 
MySqlConnector.Protocol.Payloads.ResetConnectionPayload01160%
 
MySqlConnector.Protocol.Payloads.StatementPrepareResponsePayload01515300%
 
MySqlConnector.Protocol.Serialization.ArraySegmentHolder<T>4372157.1%
  
MySqlConnector.Protocol.Serialization.AuthenticationUtility14183210843.7%
  
MySqlConnector.Protocol.Serialization.AuthGSSAPI014142350%
 
MySqlConnector.Protocol.Serialization.BufferedByteReader177245470.8%
  
MySqlConnector.Protocol.Serialization.ByteArrayReader65238818073.8%
  
MySqlConnector.Protocol.Serialization.ByteBufferWriter398612524231.2%
  
MySqlConnector.Protocol.Serialization.ByteBufferWriterExtensions10112129447.6%
  
MySqlConnector.Protocol.Serialization.CompressedPayloadHandler099992690%
 
MySqlConnector.Protocol.Serialization.NegotiateToMySqlConverterStream083832000%
 
MySqlConnector.Protocol.Serialization.Packet30311100%
 
MySqlConnector.Protocol.Serialization.ProtocolUtility28214950157.1%
  
MySqlConnector.Protocol.Serialization.SerializationUtility80821100%
 
MySqlConnector.Protocol.Serialization.SocketByteHandler26234913653%
  
MySqlConnector.Protocol.Serialization.StandardPayloadHandler154195778.9%
  
MySqlConnector.Protocol.Serialization.StreamByteHandler23275010746%
  
MySqlConnector.Utilities.ActivitySourceHelper614206530%
  
MySqlConnector.Utilities.ResizableArray<T>60622100%
 
MySqlConnector.Utilities.ResizableArraySegment<T>40414100%
 
MySqlConnector.Utilities.SocketExtensions3477242.8%
  
MySqlConnector.Utilities.TimerQueue35225713261.4%
  
MySqlConnector.Utilities.Utility141381526849.2%
  
MySqlConnector.Utilities.ValueTaskExtensions022190%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__NameRegex_002882888900%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__TlsVersionsRegex_1014214212770%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__Utilities0414113810%
 
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/index.html b/coveragereport/index.html new file mode 100644 index 0000000..2e441b4 --- /dev/null +++ b/coveragereport/index.html @@ -0,0 +1,404 @@ + + + + + + + +Summary - Coverage Report + +
+

SummaryStarSponsor

+
+
+
Information
+
+
+ + + + + + + + + + + + + + + + + +
Parser:DynamicCodeCoverage
Assemblies:2
Classes:220
Files:208
+
+
+
+
+
Line coverage
+
+
15%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:2029
Uncovered lines:10666
Coverable lines:12695
Total lines:25880
Line coverage:15.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Total329426680
+
+ + +

Coverage

+ +
+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Line coverage
NameCoveredUncoveredCoverableTotalPercentage
chemistry cafe api.dll281995202335081.3%
  
Chemistry_Cafe_API.Controllers.FamilyController712195736.8%
  
Chemistry_Cafe_API.Controllers.FamilyTagMechListController01919570%
 
Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.OpenAtmosController01010370%
 
Chemistry_Cafe_API.Controllers.PropertyListController02222640%
 
Chemistry_Cafe_API.Controllers.PropertyTypeController02222640%
 
Chemistry_Cafe_API.Controllers.PropertyVersionController01919570%
 
Chemistry_Cafe_API.Controllers.ReactantProductListController02525720%
 
Chemistry_Cafe_API.Controllers.ReactionController02525720%
 
Chemistry_Cafe_API.Controllers.SpeciesController02222640%
 
Chemistry_Cafe_API.Controllers.TagMechanismController02222630%
 
Chemistry_Cafe_API.Controllers.TagMechanismReactionListController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController01919570%
 
Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController01919570%
 
Chemistry_Cafe_API.Controllers.UserController01919570%
 
Chemistry_Cafe_API.Controllers.UserPreferencesController01919570%
 
Chemistry_Cafe_API.Models.DeleteReactantProductList02280%
 
Chemistry_Cafe_API.Models.Family044100%
 
Chemistry_Cafe_API.Models.FamilyTagMechList055110%
 
Chemistry_Cafe_API.Models.FamilyTagMechListVersion088140%
 
Chemistry_Cafe_API.Models.Property02222280%
 
Chemistry_Cafe_API.Models.PropertyList044100%
 
Chemistry_Cafe_API.Models.PropertyType055110%
 
Chemistry_Cafe_API.Models.PropertyVersion01313190%
 
Chemistry_Cafe_API.Models.ReactantProductList044100%
 
Chemistry_Cafe_API.Models.ReactantsProducts055110%
 
Chemistry_Cafe_API.Models.Reaction066120%
 
Chemistry_Cafe_API.Models.Species03390%
 
Chemistry_Cafe_API.Models.TagMechanism03390%
 
Chemistry_Cafe_API.Models.TagMechanismReactionList055110%
 
Chemistry_Cafe_API.Models.TagMechanismReactionListVersion088140%
 
Chemistry_Cafe_API.Models.TagMechanismSpeciesList055110%
 
Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion088140%
 
Chemistry_Cafe_API.Models.User03390%
 
Chemistry_Cafe_API.Models.UserPreferences044100%
 
Chemistry_Cafe_API.Services.FamilyService15557010921.4%
  
Chemistry_Cafe_API.Services.FamilyTagMechListService06464980%
 
Chemistry_Cafe_API.Services.FamilyTagMechListVersionService073731070%
 
Chemistry_Cafe_API.Services.OpenAtmosService02582583110%
 
Chemistry_Cafe_API.Services.PropertyListService01301301710%
 
Chemistry_Cafe_API.Services.PropertyTypeService078781200%
 
Chemistry_Cafe_API.Services.PropertyVersionService01071071420%
 
Chemistry_Cafe_API.Services.ReactantProductListService096961410%
 
Chemistry_Cafe_API.Services.ReactionService01421422030%
 
Chemistry_Cafe_API.Services.SpeciesService065651040%
 
Chemistry_Cafe_API.Services.TagMechanismReactionListService06464980%
 
Chemistry_Cafe_API.Services.TagMechanismReactionListVersionService073731070%
 
Chemistry_Cafe_API.Services.TagMechanismService065651040%
 
Chemistry_Cafe_API.Services.TagMechanismSpeciesListService06464980%
 
Chemistry_Cafe_API.Services.TagMechanismSpeciesListVersionService073731070%
 
Chemistry_Cafe_API.Services.UserPreferencesService06161960%
 
Chemistry_Cafe_API.Services.UserService05858930%
 
Chemistry_Cafe_API.Tests.FamilyControllerTests60623100%
 
Program02121390%
 
mysqlconnector.dll20018671106723336318.7%
  
MySqlConnector.Authentication.AuthenticationPlugins01010400%
 
MySqlConnector.ColumnReaders.BinaryBooleanColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryDateTimeColumnReader02828620%
 
MySqlConnector.ColumnReaders.BinaryDoubleColumnReader022120%
 
MySqlConnector.ColumnReaders.BinaryFloatColumnReader022120%
 
MySqlConnector.ColumnReaders.BinarySignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinarySignedInt8ColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryTimeColumnReader01616330%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.BinaryUnsignedInt8ColumnReader044190%
 
MySqlConnector.ColumnReaders.BinaryYearColumnReader044200%
 
MySqlConnector.ColumnReaders.BitColumnReader01111370%
 
MySqlConnector.ColumnReaders.BytesColumnReader022110%
 
MySqlConnector.ColumnReaders.ColumnReader059591250%
 
MySqlConnector.ColumnReaders.DecimalColumnReader044200%
 
MySqlConnector.ColumnReaders.GuidBinary16ColumnReader033200%
 
MySqlConnector.ColumnReaders.GuidChar32ColumnReader033150%
 
MySqlConnector.ColumnReaders.GuidChar36ColumnReader033150%
 
MySqlConnector.ColumnReaders.GuidLittleEndianBinary16ColumnReader033170%
 
MySqlConnector.ColumnReaders.GuidTimeSwapBinary16ColumnReader033200%
 
MySqlConnector.ColumnReaders.NullColumnReader022110%
 
MySqlConnector.ColumnReaders.StringColumnReader022130%
 
MySqlConnector.ColumnReaders.TextBooleanColumnReader044190%
 
MySqlConnector.ColumnReaders.TextDateTimeColumnReader04242950%
 
MySqlConnector.ColumnReaders.TextDoubleColumnReader01010230%
 
MySqlConnector.ColumnReaders.TextFloatColumnReader01010230%
 
MySqlConnector.ColumnReaders.TextSignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt32ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextSignedInt8ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextTimeColumnReader022120%
 
MySqlConnector.ColumnReaders.TextUnsignedInt16ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextUnsignedInt32ColumnReader044180%
 
MySqlConnector.ColumnReaders.TextUnsignedInt64ColumnReader044200%
 
MySqlConnector.ColumnReaders.TextUnsignedInt8ColumnReader044200%
 
MySqlConnector.Core.CachedParameter01919260%
 
MySqlConnector.Core.CachedProcedure01551552680%
 
MySqlConnector.Core.ColumnTypeMetadata01212180%
 
MySqlConnector.Core.CommandExecutor1916357954.2%
  
MySqlConnector.Core.CommandListPosition1701729100%
 
MySqlConnector.Core.ConcatenatedCommandPayloadCreator01616430%
 
MySqlConnector.Core.ConnectionPool12225437682232.4%
  
MySqlConnector.Core.ConnectionSettings10711722433047.7%
  
MySqlConnector.Core.DataReaderValuesEnumerator066370%
 
MySqlConnector.Core.DataRowsValuesEnumerator01313630%
 
MySqlConnector.Core.DbDataReaderValuesEnumerator055240%
 
MySqlConnector.Core.DbTypeMapping066150%
 
MySqlConnector.Core.EnlistedTransactionBase02828590%
 
MySqlConnector.Core.FailOverLoadBalancer40421100%
 
MySqlConnector.Core.ICancellableCommandExtensions166229272.7%
  
MySqlConnector.Core.IMySqlCommandExtensions175225477.2%
  
MySqlConnector.Core.MetricsReporter335386086.8%
  
MySqlConnector.Core.NormalizedSchema027271080%
 
MySqlConnector.Core.ParsedStatement044310%
 
MySqlConnector.Core.ParsedStatements066190%
 
MySqlConnector.Core.PreparedStatement055140%
 
MySqlConnector.Core.PreparedStatements055120%
 
MySqlConnector.Core.RandomLoadBalancer01111480%
 
MySqlConnector.Core.ResultSet7212219437437.1%
  
MySqlConnector.Core.RoundRobinLoadBalancer099680%
 
MySqlConnector.Core.Row02992994990%
 
MySqlConnector.Core.SchemaProvider01193119314630%
 
MySqlConnector.Core.ServerSession3117081019377030.5%
  
MySqlConnector.Core.ServerVersion254296086.2%
  
MySqlConnector.Core.ServerVersions60622100%
 
MySqlConnector.Core.SingleCommandPayloadCreator2511814327217.4%
  
MySqlConnector.Core.SqlParser589915734636.9%
  
MySqlConnector.Core.StandardEnlistedTransaction02727480%
 
MySqlConnector.Core.StatementPreparer15597415220.2%
  
MySqlConnector.Core.TypeMapper01991993500%
 
MySqlConnector.Core.XaEnlistedTransaction02121520%
 
MySqlConnector.Logging.ConsoleLoggerProvider05353830%
 
MySqlConnector.Logging.Log3283086221243.7%
  
MySqlConnector.Logging.MySqlConnectorLoggingConfiguration80816100%
 
MySqlConnector.Logging.MySqlConnectorLogManager02020620%
 
MySqlConnector.Logging.NoOpLogger033250%
 
MySqlConnector.Logging.NoOpLoggerProvider011120%
 
MySqlConnector.MySqlAttribute01010410%
 
MySqlConnector.MySqlAttributeCollection02121960%
 
MySqlConnector.MySqlBatch01381384130%
 
MySqlConnector.MySqlBatchCommand02626930%
 
MySqlConnector.MySqlBatchCommandCollection01818540%
 
MySqlConnector.MySqlBulkCopy02942947050%
 
MySqlConnector.MySqlBulkCopyColumnMapping066610%
 
MySqlConnector.MySqlBulkCopyResult066240%
 
MySqlConnector.MySqlBulkLoader01201203240%
 
MySqlConnector.MySqlCommand7112019146437.1%
  
MySqlConnector.MySqlCommandBuilder051511030%
 
MySqlConnector.MySqlConnection107382489112621.8%
  
MySqlConnector.MySqlConnectionStringBuilder737614988648.9%
  
MySqlConnector.MySqlConnectionStringOption2281229136399.5%
 
MySqlConnector.MySqlConnectionStringReferenceOption<T>819138088.8%
  
MySqlConnector.MySqlConnectionStringValueOption<T>111223135347.8%
  
MySqlConnector.MySqlConnectorFactory016161030%
 
MySqlConnector.MySqlConversionException044270%
 
MySqlConnector.MySqlDataAdapter01101102370%
 
MySqlConnector.MySqlDataReader7930638569420.5%
  
MySqlConnector.MySqlDataSource35498421241.6%
  
MySqlConnector.MySqlDataSourceBuilder026261130%
 
MySqlConnector.MySqlDateTime074742030%
 
MySqlConnector.MySqlDbColumn03737540%
 
MySqlConnector.MySqlDecimal01313500%
 
MySqlConnector.MySqlEndOfStreamException066150%
 
MySqlConnector.MySqlError01010380%
 
MySqlConnector.MySqlException041411290%
 
MySqlConnector.MySqlGeometry01010520%
 
MySqlConnector.MySqlHelper01313380%
 
MySqlConnector.MySqlInfoMessageEventArgs022140%
 
MySqlConnector.MySqlParameter04664669500%
 
MySqlConnector.MySqlParameterCollection01001002050%
 
MySqlConnector.MySqlProtocolException055320%
 
MySqlConnector.MySqlProvidePasswordContext01010350%
 
MySqlConnector.MySqlRowsCopiedEventArgs044180%
 
MySqlConnector.MySqlRowUpdatedEventArgs0332680%
 
MySqlConnector.MySqlRowUpdatingEventArgs0332580%
 
MySqlConnector.MySqlTransaction079792950%
 
MySqlConnector.Protocol.PayloadData1001025100%
 
MySqlConnector.Protocol.Payloads.AuthenticationMethodSwitchRequestPayload01313400%
 
MySqlConnector.Protocol.Payloads.AuthenticationMoreDataPayload055190%
 
MySqlConnector.Protocol.Payloads.CachingSha2ServerResponsePayload01111320%
 
MySqlConnector.Protocol.Payloads.ChangeUserPayload01212230%
 
MySqlConnector.Protocol.Payloads.ColumnCountPayload90927100%
 
MySqlConnector.Protocol.Payloads.ColumnDefinitionPayload31346513747.6%
  
MySqlConnector.Protocol.Payloads.EmptyPayload01160%
 
MySqlConnector.Protocol.Payloads.EofPayload01515420%
 
MySqlConnector.Protocol.Payloads.ErrorPayload01818450%
 
MySqlConnector.Protocol.Payloads.HandshakeResponse41Payload431447797.7%
  
MySqlConnector.Protocol.Payloads.InitDatabasePayload044150%
 
MySqlConnector.Protocol.Payloads.InitialHandshakePayload402427095.2%
  
MySqlConnector.Protocol.Payloads.LocalInfilePayload077260%
 
MySqlConnector.Protocol.Payloads.OkPayload43125514078.1%
  
MySqlConnector.Protocol.Payloads.PingPayload01160%
 
MySqlConnector.Protocol.Payloads.QueryPayload60613100%
 
MySqlConnector.Protocol.Payloads.QuitPayload01160%
 
MySqlConnector.Protocol.Payloads.ResetConnectionPayload01160%
 
MySqlConnector.Protocol.Payloads.StatementPrepareResponsePayload01515300%
 
MySqlConnector.Protocol.Serialization.ArraySegmentHolder<T>4372157.1%
  
MySqlConnector.Protocol.Serialization.AuthenticationUtility14183210843.7%
  
MySqlConnector.Protocol.Serialization.AuthGSSAPI014142350%
 
MySqlConnector.Protocol.Serialization.BufferedByteReader177245470.8%
  
MySqlConnector.Protocol.Serialization.ByteArrayReader65238818073.8%
  
MySqlConnector.Protocol.Serialization.ByteBufferWriter398612524231.2%
  
MySqlConnector.Protocol.Serialization.ByteBufferWriterExtensions10112129447.6%
  
MySqlConnector.Protocol.Serialization.CompressedPayloadHandler099992690%
 
MySqlConnector.Protocol.Serialization.NegotiateToMySqlConverterStream083832000%
 
MySqlConnector.Protocol.Serialization.Packet30311100%
 
MySqlConnector.Protocol.Serialization.ProtocolUtility28214950157.1%
  
MySqlConnector.Protocol.Serialization.SerializationUtility80821100%
 
MySqlConnector.Protocol.Serialization.SocketByteHandler26234913653%
  
MySqlConnector.Protocol.Serialization.StandardPayloadHandler154195778.9%
  
MySqlConnector.Protocol.Serialization.StreamByteHandler23275010746%
  
MySqlConnector.Utilities.ActivitySourceHelper614206530%
  
MySqlConnector.Utilities.ResizableArray<T>60622100%
 
MySqlConnector.Utilities.ResizableArraySegment<T>40414100%
 
MySqlConnector.Utilities.SocketExtensions3477242.8%
  
MySqlConnector.Utilities.TimerQueue35225713261.4%
  
MySqlConnector.Utilities.Utility141381526849.2%
  
MySqlConnector.Utilities.ValueTaskExtensions022190%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__NameRegex_002882888900%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__TlsVersionsRegex_1014214212770%
 
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__Utilities0414113810%
 
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/main.js b/coveragereport/main.js new file mode 100644 index 0000000..487454e --- /dev/null +++ b/coveragereport/main.js @@ -0,0 +1,511 @@ +/* Chartist.js 0.11.4 + * Copyright © 2019 Gion Kunz + * Free to use under either the WTFPL license or the MIT license. + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT + */ + +!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { + var a = { version: "0.11.4" }; return function (a, b) { "use strict"; var c = a.window, d = a.document; b.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, b.noop = function (a) { return a }, b.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, b.extend = function (a) { var c, d, e; for (a = a || {}, c = 1; c < arguments.length; c++) { d = arguments[c]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = b.extend(a[f], e) } return a }, b.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, b.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, b.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, b.querySelector = function (a) { return a instanceof Node ? a : d.querySelector(a) }, b.times = function (a) { return Array.apply(null, new Array(a)) }, b.sum = function (a, b) { return a + (b ? b : 0) }, b.mapMultiply = function (a) { return function (b) { return b * a } }, b.mapAdd = function (a) { return function (b) { return b + a } }, b.serialMap = function (a, c) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return b.times(e).forEach(function (b, e) { var f = a.map(function (a) { return a[e] }); d[e] = c.apply(null, f) }), d }, b.roundWithPrecision = function (a, c) { var d = Math.pow(10, c || b.precision); return Math.round(a * d) / d }, b.precision = 8, b.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, b.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(b.escapingMap).reduce(function (a, c) { return b.replaceAll(a, c, b.escapingMap[c]) }, a)) }, b.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(b.escapingMap).reduce(function (a, c) { return b.replaceAll(a, b.escapingMap[c], c) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (c) { } return a }, b.createSvg = function (a, c, d, e) { var f; return c = c || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(b.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new b.Svg("svg").attr({ width: c, height: d }).addClass(e), f._node.style.width = c, f._node.style.height = d, a.appendChild(f._node), f }, b.normalizeData = function (a, c, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = b.getDataArray({ series: a.series || [] }, c, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, b.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), c && b.reverseData(f.normalized), f }, b.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, b.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, b.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, b.getDataArray = function (a, c, d) { function e(a) { if (b.safeHasProperty(a, "value")) return e(a.value); if (b.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!b.isDataHoleValue(a)) { if (d) { var c = {}; return "string" == typeof d ? c[d] = b.getNumberOrUndefined(a) : c.y = b.getNumberOrUndefined(a), c.x = a.hasOwnProperty("x") ? b.getNumberOrUndefined(a.x) : c.x, c.y = a.hasOwnProperty("y") ? b.getNumberOrUndefined(a.y) : c.y, c } return b.getNumberOrUndefined(a) } } return a.series.map(e) }, b.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, b.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, b.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, b.projectLength = function (a, b, c) { return b / c.range * a }, b.getAvailableHeight = function (a, c) { return Math.max((b.quantity(c.height).value || a.height()) - (c.chartPadding.top + c.chartPadding.bottom) - c.axisX.offset, 0) }, b.getHighLow = function (a, c, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } c = b.extend({}, c, d ? c["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === c.high ? -Number.MAX_VALUE : +c.high, low: void 0 === c.low ? Number.MAX_VALUE : +c.low }, g = void 0 === c.high, h = void 0 === c.low; return (g || h) && e(a), (c.referenceValue || 0 === c.referenceValue) && (f.high = Math.max(c.referenceValue, f.high), f.low = Math.min(c.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, b.isNumeric = function (a) { return null !== a && isFinite(a) }, b.isFalseyButZero = function (a) { return !a && 0 !== a }, b.getNumberOrUndefined = function (a) { return b.isNumeric(a) ? +a : void 0 }, b.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, b.getMultiValue = function (a, c) { return b.isMultiValue(a) ? b.getNumberOrUndefined(a[c || "y"]) : b.getNumberOrUndefined(a) }, b.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, b.getBounds = function (a, c, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: c.high, low: c.low }; k.valueRange = k.high - k.low, k.oom = b.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = b.projectLength(a, k.step, k), m = l < d, n = e ? b.rho(k.range) : 0; if (e && b.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && b.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && b.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(b.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = b.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, b.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, b.createChartRect = function (a, c, d) { var e = !(!c.axisX && !c.axisY), f = e ? c.axisY.offset : 0, g = e ? c.axisX.offset : 0, h = a.width() || b.quantity(c.width).value || 0, i = a.height() || b.quantity(c.height).value || 0, j = b.normalizePadding(c.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === c.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === c.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, b.createGrid = function (a, c, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", b.extend({ type: "grid", axis: d, index: c, group: g, element: k }, j)) }, b.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, b.createLabel = function (a, c, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = c, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = d.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", b.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, b.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", b.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, b.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, b.optionsProvider = function (a, d, e) { function f(a) { var f = h; if (h = b.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = c.matchMedia(d[i][0]); g.matches && (h = b.extend(h, d[i][1])) } e && a && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = b.extend({}, a), k = []; if (!c.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = c.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return b.extend({}, h) } } }, b.splitIntoSegments = function (a, c, d) { var e = { increasingX: !1, fillHoles: !1 }; d = b.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === b.getMultiValue(c[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(c[h / 2])); return f } }(this || global, a), function (a, b) { "use strict"; b.Interpolation = {}, b.Interpolation.none = function (a) { var c = { fillHoles: !1 }; return a = b.extend({}, c, a), function (c, d) { for (var e = new b.Svg.Path, f = !0, g = 0; g < c.length; g += 2) { var h = c[g], i = c[g + 1], j = d[g / 2]; void 0 !== b.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, b.Interpolation.simple = function (a) { var c = { divisor: 2, fillHoles: !1 }; a = b.extend({}, c, a); var d = 1 / Math.max(1, a.divisor); return function (c, e) { for (var f, g, h, i = new b.Svg.Path, j = 0; j < c.length; j += 2) { var k = c[j], l = c[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, b.Interpolation.cardinal = function (a) { var c = { tension: 1, fillHoles: !1 }; a = b.extend({}, c, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(c, g) { var h = b.splitIntoSegments(c, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), b.Svg.Path.join(i) } if (c = h[0].pathCoordinates, g = h[0].valueData, c.length <= 4) return b.Interpolation.none()(c, g); for (var j, k = (new b.Svg.Path).move(c[0], c[1], !1, g[0]), l = 0, m = c.length; m - 2 * !j > l; l += 2) { var n = [{ x: +c[l - 2], y: +c[l - 1] }, { x: +c[l], y: +c[l + 1] }, { x: +c[l + 2], y: +c[l + 3] }, { x: +c[l + 4], y: +c[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +c[0], y: +c[1] } : m - 2 === l && (n[2] = { x: +c[0], y: +c[1] }, n[3] = { x: +c[2], y: +c[3] }) : n[0] = { x: +c[m - 2], y: +c[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +c[l], y: +c[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return b.Interpolation.none()([]) } }, b.Interpolation.monotoneCubic = function (a) { var c = { fillHoles: !1 }; return a = b.extend({}, c, a), function d(c, e) { var f = b.splitIntoSegments(c, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), b.Svg.Path.join(g) } if (c = f[0].pathCoordinates, e = f[0].valueData, c.length <= 4) return b.Interpolation.none()(c, e); var h, i, j = [], k = [], l = c.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = c[2 * h], k[h] = c[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new b.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return b.Interpolation.none()([]) } }, b.Interpolation.step = function (a) { var c = { postpone: !0, fillHoles: !1 }; return a = b.extend({}, c, a), function (c, d) { for (var e, f, g, h = new b.Svg.Path, i = 0; i < c.length; i += 2) { var j = c[i], k = c[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(this || global, a), function (a, b) { "use strict"; b.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(this || global, a), function (a, b) { "use strict"; function c(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function d(a, c) { var d = c || this.prototype || b.Class, e = Object.create(d); b.Class.cloneDefinitions(e, a); var f = function () { var a, c = e.constructor || function () { }; return a = this === b ? Object.create(e) : this, c.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function e() { var a = c(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } b.Class = { extend: d, cloneDefinitions: e } }(this || global, a), function (a, b) { "use strict"; function c(a, c, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), c && (this.options = b.extend({}, d ? this.options : this.defaultOptions, c), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = b.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function d() { return this.initializeTimeoutId ? i.clearTimeout(this.initializeTimeoutId) : (i.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function e(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function f(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function g() { i.addEventListener("resize", this.resizeListener), this.optionsProvider = b.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function h(a, c, d, e, f) { this.container = b.querySelector(a), this.data = c || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = b.EventEmitter(), this.supportsForeignObject = b.Svg.isSupported("Extensibility"), this.supportsAnimations = b.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(g.bind(this), 0) } var i = a.window; b.Base = b.Class.extend({ constructor: h, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: c, detach: d, on: e, off: f, version: b.version, supportsForeignObject: !1 }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e, f) { a instanceof Element ? this._node = a : (this._node = y.createElementNS(b.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": b.namespaces.ct })), c && this.attr(c), d && this.addClass(d), e && (f && e._node.firstChild ? e._node.insertBefore(this._node, e._node.firstChild) : e._node.appendChild(this._node)) } function d(a, c) { return "string" == typeof a ? c ? this._node.getAttributeNS(c, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (c) { if (void 0 !== a[c]) if (c.indexOf(":") !== -1) { var d = c.split(":"); this._node.setAttributeNS(b.namespaces[d[0]], c, a[c]) } else this._node.setAttribute(c, a[c]) }.bind(this)), this) } function e(a, c, d, e) { return new b.Svg(a, c, d, this, e) } function f() { return this._node.parentNode instanceof SVGElement ? new b.Svg(this._node.parentNode) : null } function g() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new b.Svg(a) } function h(a) { var c = this._node.querySelector(a); return c ? new b.Svg(c) : null } function i(a) { var c = this._node.querySelectorAll(a); return c.length ? new b.Svg.List(c) : null } function j() { return this._node } function k(a, c, d, e) { if ("string" == typeof a) { var f = y.createElement("div"); f.innerHTML = a, a = f.firstChild } a.setAttribute("xmlns", b.namespaces.xmlns); var g = this.elem("foreignObject", c, d, e); return g._node.appendChild(a), g } function l(a) { return this._node.appendChild(y.createTextNode(a)), this } function m() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function n() { return this._node.parentNode.removeChild(this._node), this.parent() } function o(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function p(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function q() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function r(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function s(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function t() { return this._node.setAttribute("class", ""), this } function u() { return this._node.getBoundingClientRect().height } function v() { return this._node.getBoundingClientRect().width } function w(a, c, d) { return void 0 === c && (c = !0), Object.keys(a).forEach(function (e) { function f(a, c) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : b.Svg.Easing[a.easing], delete a.easing), a.begin = b.ensureUnit(a.begin, "ms"), a.dur = b.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), c && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = b.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", b.extend({ attributeName: e }, a)), c && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), c && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], c) }.bind(this)), this } function x(a) { var c = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new b.Svg(a[d])); Object.keys(b.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { c[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return c.svgElements.forEach(function (c) { b.Svg.prototype[a].apply(c, d) }), c } }) } var y = a.document; b.Svg = b.Class.extend({ constructor: c, attr: d, elem: e, parent: f, root: g, querySelector: h, querySelectorAll: i, getNode: j, foreignObject: k, text: l, empty: m, remove: n, replace: o, append: p, classes: q, addClass: r, removeClass: s, removeAllClasses: t, height: u, width: v, animate: w }), b.Svg.isSupported = function (a) { return y.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; b.Svg.Easing = z, b.Svg.List = b.Class.extend({ constructor: x }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e, f, g) { var h = b.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, c, g ? { data: g } : {}); d.splice(e, 0, h) } function d(a, b) { a.forEach(function (c, d) { t[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function e(a, c) { this.pathElements = [], this.pos = 0, this.close = a, this.options = b.extend({}, u, c) } function f(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function g(a) { return this.pathElements.splice(this.pos, a), this } function h(a, b, d, e) { return c("M", { x: +a, y: +b }, this.pathElements, this.pos++, d, e), this } function i(a, b, d, e) { return c("L", { x: +a, y: +b }, this.pathElements, this.pos++, d, e), this } function j(a, b, d, e, f, g, h, i) { return c("C", { x1: +a, y1: +b, x2: +d, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function k(a, b, d, e, f, g, h, i, j) { return c("A", { rx: +a, ry: +b, xAr: +d, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function l(a) { var c = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === c[c.length - 1][0].toUpperCase() && c.pop(); var d = c.map(function (a) { var c = a.shift(), d = t[c.toLowerCase()]; return b.extend({ command: c }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function m() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = t[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function n(a, b) { return d(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function o(a, b) { return d(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function p(a) { return d(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function q(a) { var c = new b.Svg.Path(a || this.close); return c.pos = this.pos, c.pathElements = this.pathElements.slice().map(function (a) { return b.extend({}, a) }), c.options = b.extend({}, this.options), c } function r(a) { var c = [new b.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== c[c.length - 1].pathElements.length && c.push(new b.Svg.Path), c[c.length - 1].pathElements.push(d) }), c } function s(a, c, d) { for (var e = new b.Svg.Path(c, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var t = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, u = { accuracy: 3 }; b.Svg.Path = b.Class.extend({ constructor: e, position: f, remove: g, move: h, line: i, curve: j, arc: k, scale: n, translate: o, transform: p, parse: l, stringify: m, clone: q, splitByCommand: r }), b.Svg.Path.elementDescriptions = t, b.Svg.Path.join = s }(this || global, a), function (a, b) { "use strict"; function c(a, b, c, d) { this.units = a, this.counterUnits = a === e.x ? e.y : e.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function d(a, c, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), b.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && b.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && b.createLabel(j, l, k, i, this, g.offset, m, c, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var e = (a.window, a.document, { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }); b.Axis = b.Class.extend({ constructor: c, createGridAndLabels: d, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), b.Axis.units = e }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { var f = e.highLow || b.getHighLow(c, e, a.pos); this.bounds = b.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, b.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function d(a) { return this.axisLength * (+b.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } a.window, a.document; b.AutoScaleAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { var f = e.highLow || b.getHighLow(c, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || b.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, b.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function d(a) { return this.axisLength * (+b.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } a.window, a.document; b.FixedScaleAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a, c, d, e) { b.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function d(a, b) { return this.stepLength * b } a.window, a.document; b.StepAxis = b.Axis.extend({ constructor: c, projectValue: d }) }(this || global, a), function (a, b) { "use strict"; function c(a) { var c = b.normalizeData(this.data, a.reverseData, !0); this.svg = b.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, f, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = b.createChartRect(this.svg, a, e.padding); d = void 0 === a.axisX.type ? new b.StepAxis(b.Axis.units.x, c.normalized.series, j, b.extend({}, a.axisX, { ticks: c.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, j, a.axisX), f = void 0 === a.axisY.type ? new b.AutoScaleAxis(b.Axis.units.y, c.normalized.series, j, b.extend({}, a.axisY, { high: b.isNumeric(a.high) ? a.high : a.axisY.high, low: b.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), f.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && b.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), c.raw.series.forEach(function (e, g) { var i = h.elem("g"); i.attr({ "ct:series-name": e.name, "ct:meta": b.serialize(e.meta) }), i.addClass([a.classNames.series, e.className || a.classNames.series + "-" + b.alphaNumerate(g)].join(" ")); var k = [], l = []; c.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, c.normalized.series[g]), y: j.y1 - f.projectValue(a, h, c.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: b.getMetaData(e, h) }) }.bind(this)); var m = { lineSmooth: b.getSeriesOption(e, a, "lineSmooth"), showPoint: b.getSeriesOption(e, a, "showPoint"), showLine: b.getSeriesOption(e, a, "showLine"), showArea: b.getSeriesOption(e, a, "showArea"), areaBase: b.getSeriesOption(e, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? b.Interpolation.monotoneCubic() : b.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (c) { var h = i.elem("line", { x1: c.x, y1: c.y, x2: c.x + .01, y2: c.y }, a.classNames.point).attr({ "ct:value": [c.data.value.x, c.data.value.y].filter(b.isNumeric).join(","), "ct:meta": b.serialize(c.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: c.data.value, index: c.data.valueIndex, meta: c.data.meta, series: e, seriesIndex: g, axisX: d, axisY: f, group: i, element: h, x: c.x, y: c.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: c.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: e, seriesIndex: g, seriesMeta: e.meta, axisX: d, axisY: f, group: i, element: p }) } if (m.showArea && f.range) { var q = Math.max(Math.min(m.areaBase, f.range.max), f.range.min), r = j.y1 - f.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (b) { var h = i.elem("path", { d: b.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: c.normalized.series[g], path: b.clone(), series: e, seriesIndex: g, axisX: d, axisY: f, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: f.bounds, chartRect: j, axisX: d, axisY: f, svg: this.svg, options: a }) } function d(a, c, d, f) { b.Line["super"].constructor.call(this, a, c, e, b.extend({}, e, d), f) } var e = (a.window, a.document, { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }); b.Line = b.Base.extend({ constructor: d, createChart: c }) }(this || global, a), function (a, b) { + "use strict"; function c(a) { + var c, d; a.distributeSeries ? (c = b.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), c.normalized.series = c.normalized.series.map(function (a) { return [a] })) : c = b.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = b.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var f = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); + if (a.stackBars && 0 !== c.normalized.series.length) { var i = b.serialMap(c.normalized.series, function () { return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) }); d = b.getHighLow([i], a, a.horizontalBars ? "x" : "y") } else d = b.getHighLow(c.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = b.createChartRect(this.svg, a, e.padding); k = a.distributeSeries && a.stackBars ? c.normalized.labels.slice(0, 1) : c.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new b.AutoScaleAxis(b.Axis.units.x, c.normalized.series, o, b.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, o, b.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new b.StepAxis(b.Axis.units.y, c.normalized.series, o, { ticks: k }) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new b.StepAxis(b.Axis.units.x, c.normalized.series, o, { ticks: k }) : a.axisX.type.call(b, b.Axis.units.x, c.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new b.AutoScaleAxis(b.Axis.units.y, c.normalized.series, o, b.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(b, b.Axis.units.y, c.normalized.series, o, b.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(f, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(f, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && b.createGridBackground(f, o, a.classNames.gridBackground, this.eventEmitter), c.raw.series.forEach(function (d, e) { var f, h, i = e - (c.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / c.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / c.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": b.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + b.alphaNumerate(e)].join(" ")), c.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, c.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, c.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, c.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, c.normalized.series[e]) }, l instanceof b.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = b.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(b.isNumeric).join(","), "ct:meta": b.serialize(w) }), this.eventEmitter.emit("draw", b.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) + } function d(a, c, d, f) { b.Bar["super"].constructor.call(this, a, c, e, b.extend({}, e, d), f) } var e = (a.window, a.document, { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: b.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }); b.Bar = b.Base.extend({ constructor: d, createChart: c }) + }(this || global, a), function (a, b) { "use strict"; function c(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function d(a) { var d, e, g, h, i, j = b.normalizeData(this.data), k = [], l = a.startAngle; this.svg = b.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = b.createChartRect(this.svg, a, f.padding), g = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = b.quantity(a.donutWidth); "%" === m.unit && (m.value *= g / 100), g -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? g : "center" === a.labelPosition ? 0 : a.donutSolid ? g - m.value / 2 : g / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (d = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, f) { if (0 !== j.normalized.series[f] || !a.ignoreEmptyValues) { k[f].attr({ "ct:series-name": e.name }), k[f].addClass([a.classNames.series, e.className || a.classNames.series + "-" + b.alphaNumerate(f)].join(" ")); var p = i > 0 ? l + j.normalized.series[f] / i * 360 : 0, q = Math.max(0, l - (0 === f || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = b.polarToCartesian(n.x, n.y, g, q), v = b.polarToCartesian(n.x, n.y, g, p), w = new b.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(g, g, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = g - m.value, r = b.polarToCartesian(n.x, n.y, t, l - (0 === f || o ? 0 : .2)), s = b.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[f].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[f], "ct:meta": b.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[f], totalDataSum: i, index: f, meta: e.meta, series: e, group: k[f], element: y, path: w.clone(), center: n, radius: g, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : b.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !b.isFalseyButZero(j.normalized.labels[f]) ? j.normalized.labels[f] : j.normalized.series[f]; var B = a.labelInterpolationFnc(A, f); if (B || 0 === B) { var C = d.elem("text", { dx: z.x, dy: z.y, "text-anchor": c(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: f, group: d, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function e(a, c, d, e) { b.Pie["super"].constructor.call(this, a, c, f, b.extend({}, f, d), e) } var f = (a.window, a.document, { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: b.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }); b.Pie = b.Base.extend({ constructor: e, createChart: d, determineAnchorPosition: c }) }(this || global, a), a +}); +//# sourceMappingURL=chartist.min.js.map + +var i, l, selectedLine = null; + +/* Navigate to hash without browser history entry */ +var navigateToHash = function () { + if (window.history !== undefined && window.history.replaceState !== undefined) { + window.history.replaceState(undefined, undefined, this.getAttribute("href")); + } +}; + +var hashLinks = document.getElementsByClassName('navigatetohash'); +for (i = 0, l = hashLinks.length; i < l; i++) { + hashLinks[i].addEventListener('click', navigateToHash); +} + +/* Switch test method */ +var switchTestMethod = function () { + var method = this.getAttribute("value"); + console.log("Selected test method: " + method); + + var lines, i, l, coverageData, lineAnalysis, cells; + + lines = document.querySelectorAll('.lineAnalysis tr'); + + for (i = 1, l = lines.length; i < l; i++) { + coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); + lineAnalysis = coverageData[method]; + cells = lines[i].querySelectorAll('td'); + if (lineAnalysis === undefined) { + lineAnalysis = coverageData.AllTestMethods; + if (lineAnalysis.LVS !== 'gray') { + cells[0].setAttribute('class', 'red'); + cells[1].innerText = cells[1].textContent = '0'; + cells[4].setAttribute('class', 'lightred'); + } + } else { + cells[0].setAttribute('class', lineAnalysis.LVS); + cells[1].innerText = cells[1].textContent = lineAnalysis.VC; + cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); + } + } +}; + +var testMethods = document.getElementsByClassName('switchtestmethod'); +for (i = 0, l = testMethods.length; i < l; i++) { + testMethods[i].addEventListener('change', switchTestMethod); +} + +/* Highlight test method by line */ +var toggleLine = function () { + if (selectedLine === this) { + selectedLine = null; + } else { + selectedLine = null; + unhighlightTestMethods(); + highlightTestMethods.call(this); + selectedLine = this; + } + +}; +var highlightTestMethods = function () { + if (selectedLine !== null) { + return; + } + + var lineAnalysis; + var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); + var testMethods = document.getElementsByClassName('testmethod'); + + for (i = 0, l = testMethods.length; i < l; i++) { + lineAnalysis = coverageData[testMethods[i].id]; + if (lineAnalysis === undefined) { + testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); + } else { + testMethods[i].className += ' light' + lineAnalysis.LVS; + } + } +}; +var unhighlightTestMethods = function () { + if (selectedLine !== null) { + return; + } + + var testMethods = document.getElementsByClassName('testmethod'); + for (i = 0, l = testMethods.length; i < l; i++) { + testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); + } +}; +var coverableLines = document.getElementsByClassName('coverableline'); +for (i = 0, l = coverableLines.length; i < l; i++) { + coverableLines[i].addEventListener('click', toggleLine); + coverableLines[i].addEventListener('mouseenter', highlightTestMethods); + coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); +} + +/* History charts */ +var renderChart = function (chart) { + // Remove current children (e.g. PNG placeholder) + while (chart.firstChild) { + chart.firstChild.remove(); + } + + var chartData = window[chart.getAttribute('data-data')]; + var options = { + axisY: { + type: undefined, + onlyInteger: true + }, + lineSmooth: false, + low: 0, + high: 100, + scaleMinSpace: 20, + onlyInteger: true, + fullWidth: true + }; + var lineChart = new Chartist.Line(chart, { + labels: [], + series: chartData.series + }, options); + + /* Zoom */ + var zoomButtonDiv = document.createElement("div"); + zoomButtonDiv.className = "toggleZoom"; + var zoomButtonLink = document.createElement("a"); + zoomButtonLink.setAttribute("href", ""); + var zoomButtonText = document.createElement("i"); + zoomButtonText.className = "icon-search-plus"; + + zoomButtonLink.appendChild(zoomButtonText); + zoomButtonDiv.appendChild(zoomButtonLink); + + chart.appendChild(zoomButtonDiv); + + zoomButtonDiv.addEventListener('click', function (event) { + event.preventDefault(); + + if (options.axisY.type === undefined) { + options.axisY.type = Chartist.AutoScaleAxis; + zoomButtonText.className = "icon-search-minus"; + } else { + options.axisY.type = undefined; + zoomButtonText.className = "icon-search-plus"; + } + + lineChart.update(null, options); + }); + + var tooltip = document.createElement("div"); + tooltip.className = "tooltip"; + + chart.appendChild(tooltip); + + /* Tooltips */ + var showToolTip = function () { + var index = this.getAttribute('ct:meta'); + + tooltip.innerHTML = chartData.tooltips[index]; + tooltip.style.display = 'block'; + }; + + var moveToolTip = function (event) { + var box = chart.getBoundingClientRect(); + var left = event.pageX - box.left - window.pageXOffset; + var top = event.pageY - box.top - window.pageYOffset; + + left = left + 20; + top = top - tooltip.offsetHeight / 2; + + if (left + tooltip.offsetWidth > box.width) { + left -= tooltip.offsetWidth + 40; + } + + if (top < 0) { + top = 0; + } + + if (top + tooltip.offsetHeight > box.height) { + top = box.height - tooltip.offsetHeight; + } + + tooltip.style.left = left + 'px'; + tooltip.style.top = top + 'px'; + }; + + var hideToolTip = function () { + tooltip.style.display = 'none'; + }; + chart.addEventListener('mousemove', moveToolTip); + + lineChart.on('created', function () { + var chartPoints = chart.getElementsByClassName('ct-point'); + for (i = 0, l = chartPoints.length; i < l; i++) { + chartPoints[i].addEventListener('mousemove', showToolTip); + chartPoints[i].addEventListener('mouseout', hideToolTip); + } + }); +}; + +var charts = document.getElementsByClassName('historychart'); +for (i = 0, l = charts.length; i < l; i++) { + renderChart(charts[i]); +} + +var assemblies = [ + { + "name": "chemistry cafe api.dll", + "classes": [ + { "name": "Chemistry_Cafe_API.Controllers.FamilyController", "rp": "chemistry_cafe_api.dll_FamilyController.html", "cl": 7, "ucl": 12, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", "rp": "chemistry_cafe_api.dll_FamilyTagMechListController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", "rp": "chemistry_cafe_api.dll_FamilyTagMechListVersionController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.OpenAtmosController", "rp": "chemistry_cafe_api.dll_OpenAtmosController.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 37, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.PropertyListController", "rp": "chemistry_cafe_api.dll_PropertyListController.html", "cl": 0, "ucl": 22, "cal": 22, "tl": 64, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.PropertyTypeController", "rp": "chemistry_cafe_api.dll_PropertyTypeController.html", "cl": 0, "ucl": 22, "cal": 22, "tl": 64, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.PropertyVersionController", "rp": "chemistry_cafe_api.dll_PropertyVersionController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.ReactantProductListController", "rp": "chemistry_cafe_api.dll_ReactantProductListController.html", "cl": 0, "ucl": 25, "cal": 25, "tl": 72, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.ReactionController", "rp": "chemistry_cafe_api.dll_ReactionController.html", "cl": 0, "ucl": 25, "cal": 25, "tl": 72, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.SpeciesController", "rp": "chemistry_cafe_api.dll_SpeciesController.html", "cl": 0, "ucl": 22, "cal": 22, "tl": 64, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.TagMechanismController", "rp": "chemistry_cafe_api.dll_TagMechanismController.html", "cl": 0, "ucl": 22, "cal": 22, "tl": 63, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", "rp": "chemistry_cafe_api.dll_TagMechanismReactionListController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", "rp": "chemistry_cafe_api.dll_TagMechanismReactionListVersionController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesListController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesListVersionController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.UserController", "rp": "chemistry_cafe_api.dll_UserController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Controllers.UserPreferencesController", "rp": "chemistry_cafe_api.dll_UserPreferencesController.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.DeleteReactantProductList", "rp": "chemistry_cafe_api.dll_DeleteReactantProductList.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 8, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.Family", "rp": "chemistry_cafe_api.dll_Family.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 10, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.FamilyTagMechList", "rp": "chemistry_cafe_api.dll_FamilyTagMechList.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.FamilyTagMechListVersion", "rp": "chemistry_cafe_api.dll_FamilyTagMechListVersion.html", "cl": 0, "ucl": 8, "cal": 8, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.Property", "rp": "chemistry_cafe_api.dll_Property.html", "cl": 0, "ucl": 22, "cal": 22, "tl": 28, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.PropertyList", "rp": "chemistry_cafe_api.dll_PropertyList.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 10, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.PropertyType", "rp": "chemistry_cafe_api.dll_PropertyType.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.PropertyVersion", "rp": "chemistry_cafe_api.dll_PropertyVersion.html", "cl": 0, "ucl": 13, "cal": 13, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.ReactantProductList", "rp": "chemistry_cafe_api.dll_ReactantProductList.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 10, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.ReactantsProducts", "rp": "chemistry_cafe_api.dll_ReactantsProducts.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.Reaction", "rp": "chemistry_cafe_api.dll_Reaction.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.Species", "rp": "chemistry_cafe_api.dll_Species.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 9, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.TagMechanism", "rp": "chemistry_cafe_api.dll_TagMechanism.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 9, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.TagMechanismReactionList", "rp": "chemistry_cafe_api.dll_TagMechanismReactionList.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.TagMechanismReactionListVersion", "rp": "chemistry_cafe_api.dll_TagMechanismReactionListVersion.html", "cl": 0, "ucl": 8, "cal": 8, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.TagMechanismSpeciesList", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesList.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesListVersion.html", "cl": 0, "ucl": 8, "cal": 8, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.User", "rp": "chemistry_cafe_api.dll_User.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 9, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Models.UserPreferences", "rp": "chemistry_cafe_api.dll_UserPreferences.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 10, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.FamilyService", "rp": "chemistry_cafe_api.dll_FamilyService.html", "cl": 15, "ucl": 55, "cal": 70, "tl": 109, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.FamilyTagMechListService", "rp": "chemistry_cafe_api.dll_FamilyTagMechListService.html", "cl": 0, "ucl": 64, "cal": 64, "tl": 98, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.FamilyTagMechListVersionService", "rp": "chemistry_cafe_api.dll_FamilyTagMechListVersionService.html", "cl": 0, "ucl": 73, "cal": 73, "tl": 107, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.OpenAtmosService", "rp": "chemistry_cafe_api.dll_OpenAtmosService.html", "cl": 0, "ucl": 258, "cal": 258, "tl": 311, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.PropertyListService", "rp": "chemistry_cafe_api.dll_PropertyListService.html", "cl": 0, "ucl": 130, "cal": 130, "tl": 171, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.PropertyTypeService", "rp": "chemistry_cafe_api.dll_PropertyTypeService.html", "cl": 0, "ucl": 78, "cal": 78, "tl": 120, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.PropertyVersionService", "rp": "chemistry_cafe_api.dll_PropertyVersionService.html", "cl": 0, "ucl": 107, "cal": 107, "tl": 142, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.ReactantProductListService", "rp": "chemistry_cafe_api.dll_ReactantProductListService.html", "cl": 0, "ucl": 96, "cal": 96, "tl": 141, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.ReactionService", "rp": "chemistry_cafe_api.dll_ReactionService.html", "cl": 0, "ucl": 142, "cal": 142, "tl": 203, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.SpeciesService", "rp": "chemistry_cafe_api.dll_SpeciesService.html", "cl": 0, "ucl": 65, "cal": 65, "tl": 104, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.TagMechanismReactionListService", "rp": "chemistry_cafe_api.dll_TagMechanismReactionListService.html", "cl": 0, "ucl": 64, "cal": 64, "tl": 98, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.TagMechanismReactionListVersionService", "rp": "chemistry_cafe_api.dll_TagMechanismReactionListVersionService.html", "cl": 0, "ucl": 73, "cal": 73, "tl": 107, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.TagMechanismService", "rp": "chemistry_cafe_api.dll_TagMechanismService.html", "cl": 0, "ucl": 65, "cal": 65, "tl": 104, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.TagMechanismSpeciesListService", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesListService.html", "cl": 0, "ucl": 64, "cal": 64, "tl": 98, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.TagMechanismSpeciesListVersionService", "rp": "chemistry_cafe_api.dll_TagMechanismSpeciesListVersionService.html", "cl": 0, "ucl": 73, "cal": 73, "tl": 107, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.UserPreferencesService", "rp": "chemistry_cafe_api.dll_UserPreferencesService.html", "cl": 0, "ucl": 61, "cal": 61, "tl": 96, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Services.UserService", "rp": "chemistry_cafe_api.dll_UserService.html", "cl": 0, "ucl": 58, "cal": 58, "tl": 93, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Chemistry_Cafe_API.Tests.FamilyControllerTests", "rp": "chemistry_cafe_api.dll_FamilyControllerTests.html", "cl": 6, "ucl": 0, "cal": 6, "tl": 23, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "Program", "rp": "chemistry_cafe_api.dll_Program.html", "cl": 0, "ucl": 21, "cal": 21, "tl": 39, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + ]}, + { + "name": "mysqlconnector.dll", + "classes": [ + { "name": "MySqlConnector.Authentication.AuthenticationPlugins", "rp": "mysqlconnector.dll_AuthenticationPlugins.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 40, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryBooleanColumnReader", "rp": "mysqlconnector.dll_BinaryBooleanColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryDateTimeColumnReader", "rp": "mysqlconnector.dll_BinaryDateTimeColumnReader.html", "cl": 0, "ucl": 28, "cal": 28, "tl": 62, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryDoubleColumnReader", "rp": "mysqlconnector.dll_BinaryDoubleColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryFloatColumnReader", "rp": "mysqlconnector.dll_BinaryFloatColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinarySignedInt16ColumnReader", "rp": "mysqlconnector.dll_BinarySignedInt16ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinarySignedInt32ColumnReader", "rp": "mysqlconnector.dll_BinarySignedInt32ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinarySignedInt64ColumnReader", "rp": "mysqlconnector.dll_BinarySignedInt64ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinarySignedInt8ColumnReader", "rp": "mysqlconnector.dll_BinarySignedInt8ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryTimeColumnReader", "rp": "mysqlconnector.dll_BinaryTimeColumnReader.html", "cl": 0, "ucl": 16, "cal": 16, "tl": 33, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryUnsignedInt16ColumnReader", "rp": "mysqlconnector.dll_BinaryUnsignedInt16ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryUnsignedInt32ColumnReader", "rp": "mysqlconnector.dll_BinaryUnsignedInt32ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryUnsignedInt64ColumnReader", "rp": "mysqlconnector.dll_BinaryUnsignedInt64ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryUnsignedInt8ColumnReader", "rp": "mysqlconnector.dll_BinaryUnsignedInt8ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BinaryYearColumnReader", "rp": "mysqlconnector.dll_BinaryYearColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BitColumnReader", "rp": "mysqlconnector.dll_BitColumnReader.html", "cl": 0, "ucl": 11, "cal": 11, "tl": 37, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.BytesColumnReader", "rp": "mysqlconnector.dll_BytesColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.ColumnReader", "rp": "mysqlconnector.dll_ColumnReader.html", "cl": 0, "ucl": 59, "cal": 59, "tl": 125, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.DecimalColumnReader", "rp": "mysqlconnector.dll_DecimalColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.GuidBinary16ColumnReader", "rp": "mysqlconnector.dll_GuidBinary16ColumnReader.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.GuidChar32ColumnReader", "rp": "mysqlconnector.dll_GuidChar32ColumnReader.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 15, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.GuidChar36ColumnReader", "rp": "mysqlconnector.dll_GuidChar36ColumnReader.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 15, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.GuidLittleEndianBinary16ColumnReader", "rp": "mysqlconnector.dll_GuidLittleEndianBinary16ColumnReader.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 17, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.GuidTimeSwapBinary16ColumnReader", "rp": "mysqlconnector.dll_GuidTimeSwapBinary16ColumnReader.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.NullColumnReader", "rp": "mysqlconnector.dll_NullColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.StringColumnReader", "rp": "mysqlconnector.dll_StringColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 13, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextBooleanColumnReader", "rp": "mysqlconnector.dll_TextBooleanColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextDateTimeColumnReader", "rp": "mysqlconnector.dll_TextDateTimeColumnReader.html", "cl": 0, "ucl": 42, "cal": 42, "tl": 95, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextDoubleColumnReader", "rp": "mysqlconnector.dll_TextDoubleColumnReader.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 23, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextFloatColumnReader", "rp": "mysqlconnector.dll_TextFloatColumnReader.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 23, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextSignedInt16ColumnReader", "rp": "mysqlconnector.dll_TextSignedInt16ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextSignedInt32ColumnReader", "rp": "mysqlconnector.dll_TextSignedInt32ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextSignedInt64ColumnReader", "rp": "mysqlconnector.dll_TextSignedInt64ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextSignedInt8ColumnReader", "rp": "mysqlconnector.dll_TextSignedInt8ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextTimeColumnReader", "rp": "mysqlconnector.dll_TextTimeColumnReader.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextUnsignedInt16ColumnReader", "rp": "mysqlconnector.dll_TextUnsignedInt16ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextUnsignedInt32ColumnReader", "rp": "mysqlconnector.dll_TextUnsignedInt32ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 18, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextUnsignedInt64ColumnReader", "rp": "mysqlconnector.dll_TextUnsignedInt64ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.ColumnReaders.TextUnsignedInt8ColumnReader", "rp": "mysqlconnector.dll_TextUnsignedInt8ColumnReader.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 20, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.CachedParameter", "rp": "mysqlconnector.dll_CachedParameter.html", "cl": 0, "ucl": 19, "cal": 19, "tl": 26, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.CachedProcedure", "rp": "mysqlconnector.dll_CachedProcedure.html", "cl": 0, "ucl": 155, "cal": 155, "tl": 268, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ColumnTypeMetadata", "rp": "mysqlconnector.dll_ColumnTypeMetadata.html", "cl": 0, "ucl": 12, "cal": 12, "tl": 18, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.CommandExecutor", "rp": "mysqlconnector.dll_CommandExecutor.html", "cl": 19, "ucl": 16, "cal": 35, "tl": 79, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.CommandListPosition", "rp": "mysqlconnector.dll_CommandListPosition.html", "cl": 17, "ucl": 0, "cal": 17, "tl": 29, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ConcatenatedCommandPayloadCreator", "rp": "mysqlconnector.dll_ConcatenatedCommandPayloadCreator.html", "cl": 0, "ucl": 16, "cal": 16, "tl": 43, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ConnectionPool", "rp": "mysqlconnector.dll_ConnectionPool.html", "cl": 122, "ucl": 254, "cal": 376, "tl": 822, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ConnectionSettings", "rp": "mysqlconnector.dll_ConnectionSettings.html", "cl": 107, "ucl": 117, "cal": 224, "tl": 330, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.DataReaderValuesEnumerator", "rp": "mysqlconnector.dll_DataReaderValuesEnumerator.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 37, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.DataRowsValuesEnumerator", "rp": "mysqlconnector.dll_DataRowsValuesEnumerator.html", "cl": 0, "ucl": 13, "cal": 13, "tl": 63, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.DbDataReaderValuesEnumerator", "rp": "mysqlconnector.dll_DbDataReaderValuesEnumerator.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 24, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.DbTypeMapping", "rp": "mysqlconnector.dll_DbTypeMapping.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 15, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.EnlistedTransactionBase", "rp": "mysqlconnector.dll_EnlistedTransactionBase.html", "cl": 0, "ucl": 28, "cal": 28, "tl": 59, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.FailOverLoadBalancer", "rp": "mysqlconnector.dll_FailOverLoadBalancer.html", "cl": 4, "ucl": 0, "cal": 4, "tl": 21, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ICancellableCommandExtensions", "rp": "mysqlconnector.dll_ICancellableCommandExtensions.html", "cl": 16, "ucl": 6, "cal": 22, "tl": 92, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.IMySqlCommandExtensions", "rp": "mysqlconnector.dll_IMySqlCommandExtensions.html", "cl": 17, "ucl": 5, "cal": 22, "tl": 54, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.MetricsReporter", "rp": "mysqlconnector.dll_MetricsReporter.html", "cl": 33, "ucl": 5, "cal": 38, "tl": 60, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.NormalizedSchema", "rp": "mysqlconnector.dll_NormalizedSchema.html", "cl": 0, "ucl": 27, "cal": 27, "tl": 108, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ParsedStatement", "rp": "mysqlconnector.dll_ParsedStatement.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 31, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ParsedStatements", "rp": "mysqlconnector.dll_ParsedStatements.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.PreparedStatement", "rp": "mysqlconnector.dll_PreparedStatement.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.PreparedStatements", "rp": "mysqlconnector.dll_PreparedStatements.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.RandomLoadBalancer", "rp": "mysqlconnector.dll_RandomLoadBalancer.html", "cl": 0, "ucl": 11, "cal": 11, "tl": 48, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ResultSet", "rp": "mysqlconnector.dll_ResultSet.html", "cl": 72, "ucl": 122, "cal": 194, "tl": 374, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.RoundRobinLoadBalancer", "rp": "mysqlconnector.dll_RoundRobinLoadBalancer.html", "cl": 0, "ucl": 9, "cal": 9, "tl": 68, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.Row", "rp": "mysqlconnector.dll_Row.html", "cl": 0, "ucl": 299, "cal": 299, "tl": 499, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.SchemaProvider", "rp": "mysqlconnector.dll_SchemaProvider.html", "cl": 0, "ucl": 1193, "cal": 1193, "tl": 1463, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ServerSession", "rp": "mysqlconnector.dll_ServerSession.html", "cl": 311, "ucl": 708, "cal": 1019, "tl": 3770, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ServerVersion", "rp": "mysqlconnector.dll_ServerVersion.html", "cl": 25, "ucl": 4, "cal": 29, "tl": 60, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.ServerVersions", "rp": "mysqlconnector.dll_ServerVersions.html", "cl": 6, "ucl": 0, "cal": 6, "tl": 22, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.SingleCommandPayloadCreator", "rp": "mysqlconnector.dll_SingleCommandPayloadCreator.html", "cl": 25, "ucl": 118, "cal": 143, "tl": 272, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.SqlParser", "rp": "mysqlconnector.dll_SqlParser.html", "cl": 58, "ucl": 99, "cal": 157, "tl": 346, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.StandardEnlistedTransaction", "rp": "mysqlconnector.dll_StandardEnlistedTransaction.html", "cl": 0, "ucl": 27, "cal": 27, "tl": 48, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.StatementPreparer", "rp": "mysqlconnector.dll_StatementPreparer.html", "cl": 15, "ucl": 59, "cal": 74, "tl": 152, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.TypeMapper", "rp": "mysqlconnector.dll_TypeMapper.html", "cl": 0, "ucl": 199, "cal": 199, "tl": 350, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Core.XaEnlistedTransaction", "rp": "mysqlconnector.dll_XaEnlistedTransaction.html", "cl": 0, "ucl": 21, "cal": 21, "tl": 52, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.ConsoleLoggerProvider", "rp": "mysqlconnector.dll_ConsoleLoggerProvider.html", "cl": 0, "ucl": 53, "cal": 53, "tl": 83, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.Log", "rp": "mysqlconnector.dll_Log.html", "cl": 32, "ucl": 830, "cal": 862, "tl": 2124, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.MySqlConnectorLoggingConfiguration", "rp": "mysqlconnector.dll_MySqlConnectorLoggingConfiguration.html", "cl": 8, "ucl": 0, "cal": 8, "tl": 16, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.MySqlConnectorLogManager", "rp": "mysqlconnector.dll_MySqlConnectorLogManager.html", "cl": 0, "ucl": 20, "cal": 20, "tl": 62, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.NoOpLogger", "rp": "mysqlconnector.dll_NoOpLogger.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 25, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Logging.NoOpLoggerProvider", "rp": "mysqlconnector.dll_NoOpLoggerProvider.html", "cl": 0, "ucl": 1, "cal": 1, "tl": 12, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlAttribute", "rp": "mysqlconnector.dll_MySqlAttribute.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 41, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlAttributeCollection", "rp": "mysqlconnector.dll_MySqlAttributeCollection.html", "cl": 0, "ucl": 21, "cal": 21, "tl": 96, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBatch", "rp": "mysqlconnector.dll_MySqlBatch.html", "cl": 0, "ucl": 138, "cal": 138, "tl": 413, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBatchCommand", "rp": "mysqlconnector.dll_MySqlBatchCommand.html", "cl": 0, "ucl": 26, "cal": 26, "tl": 93, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBatchCommandCollection", "rp": "mysqlconnector.dll_MySqlBatchCommandCollection.html", "cl": 0, "ucl": 18, "cal": 18, "tl": 54, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBulkCopy", "rp": "mysqlconnector.dll_MySqlBulkCopy.html", "cl": 0, "ucl": 294, "cal": 294, "tl": 705, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBulkCopyColumnMapping", "rp": "mysqlconnector.dll_MySqlBulkCopyColumnMapping.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 61, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBulkCopyResult", "rp": "mysqlconnector.dll_MySqlBulkCopyResult.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 24, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlBulkLoader", "rp": "mysqlconnector.dll_MySqlBulkLoader.html", "cl": 0, "ucl": 120, "cal": 120, "tl": 324, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlCommand", "rp": "mysqlconnector.dll_MySqlCommand.html", "cl": 71, "ucl": 120, "cal": 191, "tl": 464, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlCommandBuilder", "rp": "mysqlconnector.dll_MySqlCommandBuilder.html", "cl": 0, "ucl": 51, "cal": 51, "tl": 103, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnection", "rp": "mysqlconnector.dll_MySqlConnection.html", "cl": 107, "ucl": 382, "cal": 489, "tl": 1126, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnectionStringBuilder", "rp": "mysqlconnector.dll_MySqlConnectionStringBuilder.html", "cl": 73, "ucl": 76, "cal": 149, "tl": 886, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnectionStringOption", "rp": "mysqlconnector.dll_MySqlConnectionStringOption.html", "cl": 228, "ucl": 1, "cal": 229, "tl": 1363, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnectionStringReferenceOption", "rp": "mysqlconnector.dll_MySqlConnectionStringReferenceOption_T_.html", "cl": 8, "ucl": 1, "cal": 9, "tl": 1380, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnectionStringValueOption", "rp": "mysqlconnector.dll_MySqlConnectionStringValueOption_T_.html", "cl": 11, "ucl": 12, "cal": 23, "tl": 1353, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConnectorFactory", "rp": "mysqlconnector.dll_MySqlConnectorFactory.html", "cl": 0, "ucl": 16, "cal": 16, "tl": 103, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlConversionException", "rp": "mysqlconnector.dll_MySqlConversionException.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 27, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDataAdapter", "rp": "mysqlconnector.dll_MySqlDataAdapter.html", "cl": 0, "ucl": 110, "cal": 110, "tl": 237, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDataReader", "rp": "mysqlconnector.dll_MySqlDataReader.html", "cl": 79, "ucl": 306, "cal": 385, "tl": 694, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDataSource", "rp": "mysqlconnector.dll_MySqlDataSource.html", "cl": 35, "ucl": 49, "cal": 84, "tl": 212, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDataSourceBuilder", "rp": "mysqlconnector.dll_MySqlDataSourceBuilder.html", "cl": 0, "ucl": 26, "cal": 26, "tl": 113, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDateTime", "rp": "mysqlconnector.dll_MySqlDateTime.html", "cl": 0, "ucl": 74, "cal": 74, "tl": 203, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDbColumn", "rp": "mysqlconnector.dll_MySqlDbColumn.html", "cl": 0, "ucl": 37, "cal": 37, "tl": 54, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlDecimal", "rp": "mysqlconnector.dll_MySqlDecimal.html", "cl": 0, "ucl": 13, "cal": 13, "tl": 50, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlEndOfStreamException", "rp": "mysqlconnector.dll_MySqlEndOfStreamException.html", "cl": 0, "ucl": 6, "cal": 6, "tl": 15, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlError", "rp": "mysqlconnector.dll_MySqlError.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 38, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlException", "rp": "mysqlconnector.dll_MySqlException.html", "cl": 0, "ucl": 41, "cal": 41, "tl": 129, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlGeometry", "rp": "mysqlconnector.dll_MySqlGeometry.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 52, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlHelper", "rp": "mysqlconnector.dll_MySqlHelper.html", "cl": 0, "ucl": 13, "cal": 13, "tl": 38, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlInfoMessageEventArgs", "rp": "mysqlconnector.dll_MySqlInfoMessageEventArgs.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlParameter", "rp": "mysqlconnector.dll_MySqlParameter.html", "cl": 0, "ucl": 466, "cal": 466, "tl": 950, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlParameterCollection", "rp": "mysqlconnector.dll_MySqlParameterCollection.html", "cl": 0, "ucl": 100, "cal": 100, "tl": 205, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlProtocolException", "rp": "mysqlconnector.dll_MySqlProtocolException.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 32, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlProvidePasswordContext", "rp": "mysqlconnector.dll_MySqlProvidePasswordContext.html", "cl": 0, "ucl": 10, "cal": 10, "tl": 35, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlRowsCopiedEventArgs", "rp": "mysqlconnector.dll_MySqlRowsCopiedEventArgs.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 18, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlRowUpdatedEventArgs", "rp": "mysqlconnector.dll_MySqlRowUpdatedEventArgs.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 268, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlRowUpdatingEventArgs", "rp": "mysqlconnector.dll_MySqlRowUpdatingEventArgs.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 258, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.MySqlTransaction", "rp": "mysqlconnector.dll_MySqlTransaction.html", "cl": 0, "ucl": 79, "cal": 79, "tl": 295, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.PayloadData", "rp": "mysqlconnector.dll_PayloadData.html", "cl": 10, "ucl": 0, "cal": 10, "tl": 25, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.AuthenticationMethodSwitchRequestPayload", "rp": "mysqlconnector.dll_AuthenticationMethodSwitchRequestPayload.html", "cl": 0, "ucl": 13, "cal": 13, "tl": 40, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.AuthenticationMoreDataPayload", "rp": "mysqlconnector.dll_AuthenticationMoreDataPayload.html", "cl": 0, "ucl": 5, "cal": 5, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.CachingSha2ServerResponsePayload", "rp": "mysqlconnector.dll_CachingSha2ServerResponsePayload.html", "cl": 0, "ucl": 11, "cal": 11, "tl": 32, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.ChangeUserPayload", "rp": "mysqlconnector.dll_ChangeUserPayload.html", "cl": 0, "ucl": 12, "cal": 12, "tl": 23, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.ColumnCountPayload", "rp": "mysqlconnector.dll_ColumnCountPayload.html", "cl": 9, "ucl": 0, "cal": 9, "tl": 27, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.ColumnDefinitionPayload", "rp": "mysqlconnector.dll_ColumnDefinitionPayload.html", "cl": 31, "ucl": 34, "cal": 65, "tl": 137, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.EmptyPayload", "rp": "mysqlconnector.dll_EmptyPayload.html", "cl": 0, "ucl": 1, "cal": 1, "tl": 6, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.EofPayload", "rp": "mysqlconnector.dll_EofPayload.html", "cl": 0, "ucl": 15, "cal": 15, "tl": 42, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.ErrorPayload", "rp": "mysqlconnector.dll_ErrorPayload.html", "cl": 0, "ucl": 18, "cal": 18, "tl": 45, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.HandshakeResponse41Payload", "rp": "mysqlconnector.dll_HandshakeResponse41Payload.html", "cl": 43, "ucl": 1, "cal": 44, "tl": 77, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.InitDatabasePayload", "rp": "mysqlconnector.dll_InitDatabasePayload.html", "cl": 0, "ucl": 4, "cal": 4, "tl": 15, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.InitialHandshakePayload", "rp": "mysqlconnector.dll_InitialHandshakePayload.html", "cl": 40, "ucl": 2, "cal": 42, "tl": 70, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.LocalInfilePayload", "rp": "mysqlconnector.dll_LocalInfilePayload.html", "cl": 0, "ucl": 7, "cal": 7, "tl": 26, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.OkPayload", "rp": "mysqlconnector.dll_OkPayload.html", "cl": 43, "ucl": 12, "cal": 55, "tl": 140, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.PingPayload", "rp": "mysqlconnector.dll_PingPayload.html", "cl": 0, "ucl": 1, "cal": 1, "tl": 6, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.QueryPayload", "rp": "mysqlconnector.dll_QueryPayload.html", "cl": 6, "ucl": 0, "cal": 6, "tl": 13, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.QuitPayload", "rp": "mysqlconnector.dll_QuitPayload.html", "cl": 0, "ucl": 1, "cal": 1, "tl": 6, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.ResetConnectionPayload", "rp": "mysqlconnector.dll_ResetConnectionPayload.html", "cl": 0, "ucl": 1, "cal": 1, "tl": 6, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Payloads.StatementPrepareResponsePayload", "rp": "mysqlconnector.dll_StatementPrepareResponsePayload.html", "cl": 0, "ucl": 15, "cal": 15, "tl": 30, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.ArraySegmentHolder", "rp": "mysqlconnector.dll_ArraySegmentHolder_T_.html", "cl": 4, "ucl": 3, "cal": 7, "tl": 21, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.AuthenticationUtility", "rp": "mysqlconnector.dll_AuthenticationUtility.html", "cl": 14, "ucl": 18, "cal": 32, "tl": 108, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.AuthGSSAPI", "rp": "mysqlconnector.dll_AuthGSSAPI.html", "cl": 0, "ucl": 14, "cal": 14, "tl": 235, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.BufferedByteReader", "rp": "mysqlconnector.dll_BufferedByteReader.html", "cl": 17, "ucl": 7, "cal": 24, "tl": 54, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.ByteArrayReader", "rp": "mysqlconnector.dll_ByteArrayReader.html", "cl": 65, "ucl": 23, "cal": 88, "tl": 180, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.ByteBufferWriter", "rp": "mysqlconnector.dll_ByteBufferWriter.html", "cl": 39, "ucl": 86, "cal": 125, "tl": 242, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.ByteBufferWriterExtensions", "rp": "mysqlconnector.dll_ByteBufferWriterExtensions.html", "cl": 10, "ucl": 11, "cal": 21, "tl": 294, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.CompressedPayloadHandler", "rp": "mysqlconnector.dll_CompressedPayloadHandler.html", "cl": 0, "ucl": 99, "cal": 99, "tl": 269, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.NegotiateToMySqlConverterStream", "rp": "mysqlconnector.dll_NegotiateToMySqlConverterStream.html", "cl": 0, "ucl": 83, "cal": 83, "tl": 200, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.Packet", "rp": "mysqlconnector.dll_Packet.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 11, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.ProtocolUtility", "rp": "mysqlconnector.dll_ProtocolUtility.html", "cl": 28, "ucl": 21, "cal": 49, "tl": 501, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.SerializationUtility", "rp": "mysqlconnector.dll_SerializationUtility.html", "cl": 8, "ucl": 0, "cal": 8, "tl": 21, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.SocketByteHandler", "rp": "mysqlconnector.dll_SocketByteHandler.html", "cl": 26, "ucl": 23, "cal": 49, "tl": 136, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.StandardPayloadHandler", "rp": "mysqlconnector.dll_StandardPayloadHandler.html", "cl": 15, "ucl": 4, "cal": 19, "tl": 57, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Protocol.Serialization.StreamByteHandler", "rp": "mysqlconnector.dll_StreamByteHandler.html", "cl": 23, "ucl": 27, "cal": 50, "tl": 107, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.ActivitySourceHelper", "rp": "mysqlconnector.dll_ActivitySourceHelper.html", "cl": 6, "ucl": 14, "cal": 20, "tl": 65, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.ResizableArray", "rp": "mysqlconnector.dll_ResizableArray_T_.html", "cl": 6, "ucl": 0, "cal": 6, "tl": 22, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.ResizableArraySegment", "rp": "mysqlconnector.dll_ResizableArraySegment_T_.html", "cl": 4, "ucl": 0, "cal": 4, "tl": 14, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.SocketExtensions", "rp": "mysqlconnector.dll_SocketExtensions.html", "cl": 3, "ucl": 4, "cal": 7, "tl": 72, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.TimerQueue", "rp": "mysqlconnector.dll_TimerQueue.html", "cl": 35, "ucl": 22, "cal": 57, "tl": 132, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.Utility", "rp": "mysqlconnector.dll_Utility.html", "cl": 14, "ucl": 138, "cal": 152, "tl": 684, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "MySqlConnector.Utilities.ValueTaskExtensions", "rp": "mysqlconnector.dll_ValueTaskExtensions.html", "cl": 0, "ucl": 2, "cal": 2, "tl": 19, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "System.Text.RegularExpressions.Generated.F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__NameRegex_0", "rp": "mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE1EA81E8FE504B5B6446748E035A__NameRegex_0.html", "cl": 0, "ucl": 288, "cal": 288, "tl": 890, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "System.Text.RegularExpressions.Generated.F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__TlsVersionsRegex_1", "rp": "mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCEFE504B5B6446748E035A__TlsVersionsRegex_1.html", "cl": 0, "ucl": 142, "cal": 142, "tl": 1277, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + { "name": "System.Text.RegularExpressions.Generated.F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__Utilities", "rp": "mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE711EA81E8FE504B5B6446748E035A__Utilities.html", "cl": 0, "ucl": 41, "cal": 41, "tl": 1381, "cb": 0, "tb": 0, "cm": 0, "tm": 0, "lch": [], "bch": [], "mch": [], "hc": [], "metrics": { } }, + ]}, +]; + +var metrics = [{ "name": "Blocks covered", "abbreviation": "cb", "explanationUrl": "https://en.wikipedia.org/wiki/Code_coverage" }, { "name": "Blocks not covered", "abbreviation": "ub", "explanationUrl": "https://en.wikipedia.org/wiki/Code_coverage" }]; + +var historicCoverageExecutionTimes = []; + +var riskHotspotMetrics = [ +]; + +var riskHotspots = [ +]; + +var branchCoverageAvailable = false; +var methodCoverageAvailable = false; +var maximumDecimalPlacesForCoverageQuotas = 1; + + +var translations = { +'top': 'Top:', +'all': 'All', +'assembly': 'Assembly', +'class': 'Class', +'method': 'Method', +'lineCoverage': 'Line coverage', +'noGrouping': 'No grouping', +'byAssembly': 'By assembly', +'byNamespace': 'By namespace, Level:', +'all': 'All', +'collapseAll': 'Collapse all', +'expandAll': 'Expand all', +'grouping': 'Grouping:', +'filter': 'Filter:', +'name': 'Name', +'covered': 'Covered', +'uncovered': 'Uncovered', +'coverable': 'Coverable', +'total': 'Total', +'coverage': 'Line coverage', +'branchCoverage': 'Branch coverage', +'methodCoverage': 'Method coverage', +'percentage': 'Percentage', +'history': 'Coverage history', +'compareHistory': 'Compare with:', +'date': 'Date', +'allChanges': 'All changes', +'selectCoverageTypes': 'Select coverage types', +'selectCoverageTypesAndMetrics': 'Select coverage types & metrics', +'coverageTypes': 'Coverage types', +'metrics': 'Metrics', +'methodCoverageProVersion': 'Feature is only available for sponsors', +'lineCoverageIncreaseOnly': 'Line coverage: Increase only', +'lineCoverageDecreaseOnly': 'Line coverage: Decrease only', +'branchCoverageIncreaseOnly': 'Branch coverage: Increase only', +'branchCoverageDecreaseOnly': 'Branch coverage: Decrease only', +'methodCoverageIncreaseOnly': 'Method coverage: Increase only', +'methodCoverageDecreaseOnly': 'Method coverage: Decrease only' +}; + + +(()=>{"use strict";var e,_={},p={};function n(e){var a=p[e];if(void 0!==a)return a.exports;var r=p[e]={exports:{}};return _[e](r,r.exports,n),r.exports}n.m=_,e=[],n.O=(a,r,u,l)=>{if(!r){var o=1/0;for(f=0;f=l)&&Object.keys(n.O).every(h=>n.O[h](r[t]))?r.splice(t--,1):(v=!1,l0&&e[f-1][2]>l;f--)e[f]=e[f-1];e[f]=[r,u,l]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a}),a},n.d=(e,a)=>{for(var r in a)n.o(a,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={121:0};n.O.j=u=>0===e[u];var a=(u,l)=>{var t,c,[f,o,v]=l,s=0;if(f.some(d=>0!==e[d])){for(t in o)n.o(o,t)&&(n.m[t]=o[t]);if(v)var b=v(n)}for(u&&u(l);s{de(935)},935:()=>{!function(e){const n=e.performance;function i(L){n&&n.mark&&n.mark(L)}function o(L,T){n&&n.measure&&n.measure(L,T)}i("Zone");const c=e.__Zone_symbol_prefix||"__zone_symbol__";function a(L){return c+L}const y=!0===e[a("forceDuplicateZoneCheck")];if(e.Zone){if(y||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}let d=(()=>{class L{static#e=this.__symbol__=a;static assertZonePatched(){if(e.Promise!==oe.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=L.current;for(;t.parent;)t=t.parent;return t}static get current(){return U.zone}static get currentTask(){return re}static __load_patch(t,r,k=!1){if(oe.hasOwnProperty(t)){if(!k&&y)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const C="Zone:"+t;i(C),oe[t]=r(e,L,z),o(C,C)}}get parent(){return this._parent}get name(){return this._name}constructor(t,r){this._parent=t,this._name=r?r.name||"unnamed":"",this._properties=r&&r.properties||{},this._zoneDelegate=new v(this,this._parent&&this._parent._zoneDelegate,r)}get(t){const r=this.getZoneWith(t);if(r)return r._properties[t]}getZoneWith(t){let r=this;for(;r;){if(r._properties.hasOwnProperty(t))return r;r=r._parent}return null}fork(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)}wrap(t,r){if("function"!=typeof t)throw new Error("Expecting function got: "+t);const k=this._zoneDelegate.intercept(this,t,r),C=this;return function(){return C.runGuarded(k,this,arguments,r)}}run(t,r,k,C){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,t,r,k,C)}finally{U=U.parent}}runGuarded(t,r=null,k,C){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,t,r,k,C)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{U=U.parent}}runTask(t,r,k){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||K).name+"; Execution: "+this.name+")");if(t.state===x&&(t.type===Q||t.type===P))return;const C=t.state!=E;C&&t._transitionTo(E,A),t.runCount++;const $=re;re=t,U={parent:U,zone:this};try{t.type==P&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,r,k)}catch(l){if(this._zoneDelegate.handleError(this,l))throw l}}finally{t.state!==x&&t.state!==h&&(t.type==Q||t.data&&t.data.isPeriodic?C&&t._transitionTo(A,E):(t.runCount=0,this._updateTaskCount(t,-1),C&&t._transitionTo(x,E,x))),U=U.parent,re=$}}scheduleTask(t){if(t.zone&&t.zone!==this){let k=this;for(;k;){if(k===t.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${t.zone.name}`);k=k.parent}}t._transitionTo(X,x);const r=[];t._zoneDelegates=r,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(k){throw t._transitionTo(h,X,x),this._zoneDelegate.handleError(this,k),k}return t._zoneDelegates===r&&this._updateTaskCount(t,1),t.state==X&&t._transitionTo(A,X),t}scheduleMicroTask(t,r,k,C){return this.scheduleTask(new p(I,t,r,k,C,void 0))}scheduleMacroTask(t,r,k,C,$){return this.scheduleTask(new p(P,t,r,k,C,$))}scheduleEventTask(t,r,k,C,$){return this.scheduleTask(new p(Q,t,r,k,C,$))}cancelTask(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||K).name+"; Execution: "+this.name+")");if(t.state===A||t.state===E){t._transitionTo(G,A,E);try{this._zoneDelegate.cancelTask(this,t)}catch(r){throw t._transitionTo(h,G),this._zoneDelegate.handleError(this,r),r}return this._updateTaskCount(t,-1),t._transitionTo(x,G),t.runCount=0,t}}_updateTaskCount(t,r){const k=t._zoneDelegates;-1==r&&(t._zoneDelegates=null);for(let C=0;CL.hasTask(t,r),onScheduleTask:(L,T,t,r)=>L.scheduleTask(t,r),onInvokeTask:(L,T,t,r,k,C)=>L.invokeTask(t,r,k,C),onCancelTask:(L,T,t,r)=>L.cancelTask(t,r)};class v{constructor(T,t,r){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=T,this._parentDelegate=t,this._forkZS=r&&(r&&r.onFork?r:t._forkZS),this._forkDlgt=r&&(r.onFork?t:t._forkDlgt),this._forkCurrZone=r&&(r.onFork?this.zone:t._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:t._interceptZS),this._interceptDlgt=r&&(r.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this.zone:t._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:t._invokeZS),this._invokeDlgt=r&&(r.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this.zone:t._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:t._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this.zone:t._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:t._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this.zone:t._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:t._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this.zone:t._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:t._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this.zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const k=r&&r.onHasTask;(k||t&&t._hasTaskZS)&&(this._hasTaskZS=k?r:b,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=T,r.onScheduleTask||(this._scheduleTaskZS=b,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),r.onInvokeTask||(this._invokeTaskZS=b,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),r.onCancelTask||(this._cancelTaskZS=b,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(T,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,T,t):new d(T,t)}intercept(T,t,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,T,t,r):t}invoke(T,t,r,k,C){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,T,t,r,k,C):t.apply(r,k)}handleError(T,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,T,t)}scheduleTask(T,t){let r=t;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,T,t),r||(r=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=I)throw new Error("Task is missing scheduleFn.");R(t)}return r}invokeTask(T,t,r,k){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,T,t,r,k):t.callback.apply(r,k)}cancelTask(T,t){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,T,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");r=t.cancelFn(t)}return r}hasTask(T,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,T,t)}catch(r){this.handleError(T,r)}}_updateTaskCount(T,t){const r=this._taskCounts,k=r[T],C=r[T]=k+t;if(C<0)throw new Error("More tasks executed then were scheduled.");0!=k&&0!=C||this.hasTask(this.zone,{microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:T})}}class p{constructor(T,t,r,k,C,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=T,this.source=t,this.data=k,this.scheduleFn=C,this.cancelFn=$,!r)throw new Error("callback is not defined");this.callback=r;const l=this;this.invoke=T===Q&&k&&k.useG?p.invokeTask:function(){return p.invokeTask.call(e,l,this,arguments)}}static invokeTask(T,t,r){T||(T=this),ee++;try{return T.runCount++,T.zone.runTask(T,t,r)}finally{1==ee&&_(),ee--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(x,X)}_transitionTo(T,t,r){if(this._state!==t&&this._state!==r)throw new Error(`${this.type} '${this.source}': can not transition to '${T}', expecting state '${t}'${r?" or '"+r+"'":""}, was '${this._state}'.`);this._state=T,T==x&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const M=a("setTimeout"),Z=a("Promise"),N=a("then");let J,B=[],H=!1;function q(L){if(J||e[Z]&&(J=e[Z].resolve(0)),J){let T=J[N];T||(T=J.then),T.call(J,L)}else e[M](L,0)}function R(L){0===ee&&0===B.length&&q(_),L&&B.push(L)}function _(){if(!H){for(H=!0;B.length;){const L=B;B=[];for(let T=0;TU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!d[a("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q};let U={parent:null,zone:new d(null,null)},re=null,ee=0;function W(){}o("Zone","Zone"),e.Zone=d}(globalThis);const ie=Object.getOwnPropertyDescriptor,Ee=Object.defineProperty,de=Object.getPrototypeOf,ge=Object.create,Ve=Array.prototype.slice,Se="addEventListener",Oe="removeEventListener",Ze=Zone.__symbol__(Se),Ne=Zone.__symbol__(Oe),ce="true",ae="false",ke=Zone.__symbol__("");function Ie(e,n){return Zone.current.wrap(e,n)}function Me(e,n,i,o,c){return Zone.current.scheduleMacroTask(e,n,i,o,c)}const j=Zone.__symbol__,Pe=typeof window<"u",Te=Pe?window:void 0,Y=Pe&&Te||globalThis,ct="removeAttribute";function Le(e,n){for(let i=e.length-1;i>=0;i--)"function"==typeof e[i]&&(e[i]=Ie(e[i],n+"_"+i));return e}function Fe(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&typeof e.set>"u")}const Be=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,we=!("nw"in Y)&&typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process),Ae=!we&&!Be&&!(!Pe||!Te.HTMLElement),Ue=typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process)&&!Be&&!(!Pe||!Te.HTMLElement),Re={},We=function(e){if(!(e=e||Y.event))return;let n=Re[e.type];n||(n=Re[e.type]=j("ON_PROPERTY"+e.type));const i=this||e.target||Y,o=i[n];let c;return Ae&&i===Te&&"error"===e.type?(c=o&&o.call(this,e.message,e.filename,e.lineno,e.colno,e.error),!0===c&&e.preventDefault()):(c=o&&o.apply(this,arguments),null!=c&&!c&&e.preventDefault()),c};function qe(e,n,i){let o=ie(e,n);if(!o&&i&&ie(i,n)&&(o={enumerable:!0,configurable:!0}),!o||!o.configurable)return;const c=j("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete o.writable,delete o.value;const a=o.get,y=o.set,d=n.slice(2);let b=Re[d];b||(b=Re[d]=j("ON_PROPERTY"+d)),o.set=function(v){let p=this;!p&&e===Y&&(p=Y),p&&("function"==typeof p[b]&&p.removeEventListener(d,We),y&&y.call(p,null),p[b]=v,"function"==typeof v&&p.addEventListener(d,We,!1))},o.get=function(){let v=this;if(!v&&e===Y&&(v=Y),!v)return null;const p=v[b];if(p)return p;if(a){let M=a.call(this);if(M)return o.set.call(this,M),"function"==typeof v[ct]&&v.removeAttribute(n),M}return null},Ee(e,n,o),e[c]=!0}function Xe(e,n,i){if(n)for(let o=0;ofunction(y,d){const b=i(y,d);return b.cbIdx>=0&&"function"==typeof d[b.cbIdx]?Me(b.name,d[b.cbIdx],b,c):a.apply(y,d)})}function ue(e,n){e[j("OriginalDelegate")]=n}let ze=!1,je=!1;function ft(){if(ze)return je;ze=!0;try{const e=Te.navigator.userAgent;(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/")||-1!==e.indexOf("Edge/"))&&(je=!0)}catch{}return je}Zone.__load_patch("ZoneAwarePromise",(e,n,i)=>{const o=Object.getOwnPropertyDescriptor,c=Object.defineProperty,y=i.symbol,d=[],b=!1!==e[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],v=y("Promise"),p=y("then"),M="__creationTrace__";i.onUnhandledError=l=>{if(i.showUncaughtError()){const u=l&&l.rejection;u?console.error("Unhandled Promise rejection:",u instanceof Error?u.message:u,"; Zone:",l.zone.name,"; Task:",l.task&&l.task.source,"; Value:",u,u instanceof Error?u.stack:void 0):console.error(l)}},i.microtaskDrainDone=()=>{for(;d.length;){const l=d.shift();try{l.zone.runGuarded(()=>{throw l.throwOriginal?l.rejection:l})}catch(u){N(u)}}};const Z=y("unhandledPromiseRejectionHandler");function N(l){i.onUnhandledError(l);try{const u=n[Z];"function"==typeof u&&u.call(this,l)}catch{}}function B(l){return l&&l.then}function H(l){return l}function J(l){return t.reject(l)}const q=y("state"),R=y("value"),_=y("finally"),K=y("parentPromiseValue"),x=y("parentPromiseState"),X="Promise.then",A=null,E=!0,G=!1,h=0;function I(l,u){return s=>{try{z(l,u,s)}catch(f){z(l,!1,f)}}}const P=function(){let l=!1;return function(s){return function(){l||(l=!0,s.apply(null,arguments))}}},Q="Promise resolved with itself",oe=y("currentTaskTrace");function z(l,u,s){const f=P();if(l===s)throw new TypeError(Q);if(l[q]===A){let g=null;try{("object"==typeof s||"function"==typeof s)&&(g=s&&s.then)}catch(w){return f(()=>{z(l,!1,w)})(),l}if(u!==G&&s instanceof t&&s.hasOwnProperty(q)&&s.hasOwnProperty(R)&&s[q]!==A)re(s),z(l,s[q],s[R]);else if(u!==G&&"function"==typeof g)try{g.call(s,f(I(l,u)),f(I(l,!1)))}catch(w){f(()=>{z(l,!1,w)})()}else{l[q]=u;const w=l[R];if(l[R]=s,l[_]===_&&u===E&&(l[q]=l[x],l[R]=l[K]),u===G&&s instanceof Error){const m=n.currentTask&&n.currentTask.data&&n.currentTask.data[M];m&&c(s,oe,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{const D=l[R],S=!!s&&_===s[_];S&&(s[K]=D,s[x]=w);const O=u.run(m,void 0,S&&m!==J&&m!==H?[]:[D]);z(s,!0,O)}catch(D){z(s,!1,D)}},s)}const L=function(){},T=e.AggregateError;class t{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(u){return z(new this(null),E,u)}static reject(u){return z(new this(null),G,u)}static any(u){if(!u||"function"!=typeof u[Symbol.iterator])return Promise.reject(new T([],"All promises were rejected"));const s=[];let f=0;try{for(let m of u)f++,s.push(t.resolve(m))}catch{return Promise.reject(new T([],"All promises were rejected"))}if(0===f)return Promise.reject(new T([],"All promises were rejected"));let g=!1;const w=[];return new t((m,D)=>{for(let S=0;S{g||(g=!0,m(O))},O=>{w.push(O),f--,0===f&&(g=!0,D(new T(w,"All promises were rejected")))})})}static race(u){let s,f,g=new this((D,S)=>{s=D,f=S});function w(D){s(D)}function m(D){f(D)}for(let D of u)B(D)||(D=this.resolve(D)),D.then(w,m);return g}static all(u){return t.allWithCallback(u)}static allSettled(u){return(this&&this.prototype instanceof t?this:t).allWithCallback(u,{thenCallback:f=>({status:"fulfilled",value:f}),errorCallback:f=>({status:"rejected",reason:f})})}static allWithCallback(u,s){let f,g,w=new this((O,V)=>{f=O,g=V}),m=2,D=0;const S=[];for(let O of u){B(O)||(O=this.resolve(O));const V=D;try{O.then(F=>{S[V]=s?s.thenCallback(F):F,m--,0===m&&f(S)},F=>{s?(S[V]=s.errorCallback(F),m--,0===m&&f(S)):g(F)})}catch(F){g(F)}m++,D++}return m-=2,0===m&&f(S),w}constructor(u){const s=this;if(!(s instanceof t))throw new Error("Must be an instanceof Promise.");s[q]=A,s[R]=[];try{const f=P();u&&u(f(I(s,E)),f(I(s,G)))}catch(f){z(s,!1,f)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return t}then(u,s){let f=this.constructor?.[Symbol.species];(!f||"function"!=typeof f)&&(f=this.constructor||t);const g=new f(L),w=n.current;return this[q]==A?this[R].push(w,g,u,s):ee(this,w,g,u,s),g}catch(u){return this.then(null,u)}finally(u){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=t);const f=new s(L);f[_]=_;const g=n.current;return this[q]==A?this[R].push(g,f,u,u):ee(this,g,f,u,u),f}}t.resolve=t.resolve,t.reject=t.reject,t.race=t.race,t.all=t.all;const r=e[v]=e.Promise;e.Promise=t;const k=y("thenPatched");function C(l){const u=l.prototype,s=o(u,"then");if(s&&(!1===s.writable||!s.configurable))return;const f=u.then;u[p]=f,l.prototype.then=function(g,w){return new t((D,S)=>{f.call(this,D,S)}).then(g,w)},l[k]=!0}return i.patchThen=C,r&&(C(r),le(e,"fetch",l=>function $(l){return function(u,s){let f=l.apply(u,s);if(f instanceof t)return f;let g=f.constructor;return g[k]||C(g),f}}(l))),Promise[n.__symbol__("uncaughtPromiseErrors")]=d,t}),Zone.__load_patch("toString",e=>{const n=Function.prototype.toString,i=j("OriginalDelegate"),o=j("Promise"),c=j("Error"),a=function(){if("function"==typeof this){const v=this[i];if(v)return"function"==typeof v?n.call(v):Object.prototype.toString.call(v);if(this===Promise){const p=e[o];if(p)return n.call(p)}if(this===Error){const p=e[c];if(p)return n.call(p)}}return n.call(this)};a[i]=n,Function.prototype.toString=a;const y=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":y.call(this)}});let ye=!1;if(typeof window<"u")try{const e=Object.defineProperty({},"passive",{get:function(){ye=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{ye=!1}const ht={useG:!0},te={},Ye={},$e=new RegExp("^"+ke+"(\\w+)(true|false)$"),Ke=j("propagationStopped");function Je(e,n){const i=(n?n(e):e)+ae,o=(n?n(e):e)+ce,c=ke+i,a=ke+o;te[e]={},te[e][ae]=c,te[e][ce]=a}function dt(e,n,i,o){const c=o&&o.add||Se,a=o&&o.rm||Oe,y=o&&o.listeners||"eventListeners",d=o&&o.rmAll||"removeAllListeners",b=j(c),v="."+c+":",p="prependListener",M="."+p+":",Z=function(R,_,K){if(R.isRemoved)return;const x=R.callback;let X;"object"==typeof x&&x.handleEvent&&(R.callback=E=>x.handleEvent(E),R.originalDelegate=x);try{R.invoke(R,_,[K])}catch(E){X=E}const A=R.options;return A&&"object"==typeof A&&A.once&&_[a].call(_,K.type,R.originalDelegate?R.originalDelegate:R.callback,A),X};function N(R,_,K){if(!(_=_||e.event))return;const x=R||_.target||e,X=x[te[_.type][K?ce:ae]];if(X){const A=[];if(1===X.length){const E=Z(X[0],x,_);E&&A.push(E)}else{const E=X.slice();for(let G=0;G{throw G})}}}const B=function(R){return N(this,R,!1)},H=function(R){return N(this,R,!0)};function J(R,_){if(!R)return!1;let K=!0;_&&void 0!==_.useG&&(K=_.useG);const x=_&&_.vh;let X=!0;_&&void 0!==_.chkDup&&(X=_.chkDup);let A=!1;_&&void 0!==_.rt&&(A=_.rt);let E=R;for(;E&&!E.hasOwnProperty(c);)E=de(E);if(!E&&R[c]&&(E=R),!E||E[b])return!1;const G=_&&_.eventNameToString,h={},I=E[b]=E[c],P=E[j(a)]=E[a],Q=E[j(y)]=E[y],oe=E[j(d)]=E[d];let z;_&&_.prepend&&(z=E[j(_.prepend)]=E[_.prepend]);const t=K?function(s){if(!h.isExisting)return I.call(h.target,h.eventName,h.capture?H:B,h.options)}:function(s){return I.call(h.target,h.eventName,s.invoke,h.options)},r=K?function(s){if(!s.isRemoved){const f=te[s.eventName];let g;f&&(g=f[s.capture?ce:ae]);const w=g&&s.target[g];if(w)for(let m=0;mfunction(c,a){c[Ke]=!0,o&&o.apply(c,a)})}function Et(e,n,i,o,c){const a=Zone.__symbol__(o);if(n[a])return;const y=n[a]=n[o];n[o]=function(d,b,v){return b&&b.prototype&&c.forEach(function(p){const M=`${i}.${o}::`+p,Z=b.prototype;try{if(Z.hasOwnProperty(p)){const N=e.ObjectGetOwnPropertyDescriptor(Z,p);N&&N.value?(N.value=e.wrapWithCurrentZone(N.value,M),e._redefineProperty(b.prototype,p,N)):Z[p]&&(Z[p]=e.wrapWithCurrentZone(Z[p],M))}else Z[p]&&(Z[p]=e.wrapWithCurrentZone(Z[p],M))}catch{}}),y.call(n,d,b,v)},e.attachOriginToPatched(n[o],y)}function et(e,n,i){if(!i||0===i.length)return n;const o=i.filter(a=>a.target===e);if(!o||0===o.length)return n;const c=o[0].ignoreProperties;return n.filter(a=>-1===c.indexOf(a))}function tt(e,n,i,o){e&&Xe(e,et(e,n,i),o)}function He(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}Zone.__load_patch("util",(e,n,i)=>{const o=He(e);i.patchOnProperties=Xe,i.patchMethod=le,i.bindArguments=Le,i.patchMacroTask=lt;const c=n.__symbol__("BLACK_LISTED_EVENTS"),a=n.__symbol__("UNPATCHED_EVENTS");e[a]&&(e[c]=e[a]),e[c]&&(n[c]=n[a]=e[c]),i.patchEventPrototype=_t,i.patchEventTarget=dt,i.isIEOrEdge=ft,i.ObjectDefineProperty=Ee,i.ObjectGetOwnPropertyDescriptor=ie,i.ObjectCreate=ge,i.ArraySlice=Ve,i.patchClass=ve,i.wrapWithCurrentZone=Ie,i.filterProperties=et,i.attachOriginToPatched=ue,i._redefineProperty=Object.defineProperty,i.patchCallbacks=Et,i.getGlobalObjects=()=>({globalSources:Ye,zoneSymbolEventNames:te,eventNames:o,isBrowser:Ae,isMix:Ue,isNode:we,TRUE_STR:ce,FALSE_STR:ae,ZONE_SYMBOL_PREFIX:ke,ADD_EVENT_LISTENER_STR:Se,REMOVE_EVENT_LISTENER_STR:Oe})});const Ce=j("zoneTask");function pe(e,n,i,o){let c=null,a=null;i+=o;const y={};function d(v){const p=v.data;return p.args[0]=function(){return v.invoke.apply(this,arguments)},p.handleId=c.apply(e,p.args),v}function b(v){return a.call(e,v.data.handleId)}c=le(e,n+=o,v=>function(p,M){if("function"==typeof M[0]){const Z={isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?M[1]||0:void 0,args:M},N=M[0];M[0]=function(){try{return N.apply(this,arguments)}finally{Z.isPeriodic||("number"==typeof Z.handleId?delete y[Z.handleId]:Z.handleId&&(Z.handleId[Ce]=null))}};const B=Me(n,M[0],Z,d,b);if(!B)return B;const H=B.data.handleId;return"number"==typeof H?y[H]=B:H&&(H[Ce]=B),H&&H.ref&&H.unref&&"function"==typeof H.ref&&"function"==typeof H.unref&&(B.ref=H.ref.bind(H),B.unref=H.unref.bind(H)),"number"==typeof H||H?H:B}return v.apply(e,M)}),a=le(e,i,v=>function(p,M){const Z=M[0];let N;"number"==typeof Z?N=y[Z]:(N=Z&&Z[Ce],N||(N=Z)),N&&"string"==typeof N.type?"notScheduled"!==N.state&&(N.cancelFn&&N.data.isPeriodic||0===N.runCount)&&("number"==typeof Z?delete y[Z]:Z&&(Z[Ce]=null),N.zone.cancelTask(N)):v.apply(e,M)})}Zone.__load_patch("legacy",e=>{const n=e[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("timers",e=>{const n="set",i="clear";pe(e,n,i,"Timeout"),pe(e,n,i,"Interval"),pe(e,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{pe(e,"request","cancel","AnimationFrame"),pe(e,"mozRequest","mozCancel","AnimationFrame"),pe(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,n)=>{const i=["alert","prompt","confirm"];for(let o=0;ofunction(b,v){return n.current.run(a,e,v,d)})}),Zone.__load_patch("EventTarget",(e,n,i)=>{(function gt(e,n){n.patchEventPrototype(e,n)})(e,i),function mt(e,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:o,TRUE_STR:c,FALSE_STR:a,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let b=0;b{ve("MutationObserver"),ve("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(e,n,i)=>{ve("IntersectionObserver")}),Zone.__load_patch("FileReader",(e,n,i)=>{ve("FileReader")}),Zone.__load_patch("on_property",(e,n,i)=>{!function Tt(e,n){if(we&&!Ue||Zone[e.symbol("patchEvents")])return;const i=n.__Zone_ignore_on_properties;let o=[];if(Ae){const c=window;o=o.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const a=function ut(){try{const e=Te.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:c,ignoreProperties:["error"]}]:[];tt(c,He(c),i&&i.concat(a),de(c))}o=o.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{!function pt(e,n){const{isBrowser:i,isMix:o}=n.getGlobalObjects();(i||o)&&e.customElements&&"customElements"in e&&n.patchCallbacks(n,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,i)}),Zone.__load_patch("XHR",(e,n)=>{!function b(v){const p=v.XMLHttpRequest;if(!p)return;const M=p.prototype;let N=M[Ze],B=M[Ne];if(!N){const h=v.XMLHttpRequestEventTarget;if(h){const I=h.prototype;N=I[Ze],B=I[Ne]}}const H="readystatechange",J="scheduled";function q(h){const I=h.data,P=I.target;P[a]=!1,P[d]=!1;const Q=P[c];N||(N=P[Ze],B=P[Ne]),Q&&B.call(P,H,Q);const oe=P[c]=()=>{if(P.readyState===P.DONE)if(!I.aborted&&P[a]&&h.state===J){const U=P[n.__symbol__("loadfalse")];if(0!==P.status&&U&&U.length>0){const re=h.invoke;h.invoke=function(){const ee=P[n.__symbol__("loadfalse")];for(let W=0;Wfunction(h,I){return h[o]=0==I[2],h[y]=I[1],K.apply(h,I)}),X=j("fetchTaskAborting"),A=j("fetchTaskScheduling"),E=le(M,"send",()=>function(h,I){if(!0===n.current[A]||h[o])return E.apply(h,I);{const P={target:h,url:h[y],isPeriodic:!1,args:I,aborted:!1},Q=Me("XMLHttpRequest.send",R,P,q,_);h&&!0===h[d]&&!P.aborted&&Q.state===J&&Q.invoke()}}),G=le(M,"abort",()=>function(h,I){const P=function Z(h){return h[i]}(h);if(P&&"string"==typeof P.type){if(null==P.cancelFn||P.data&&P.data.aborted)return;P.zone.cancelTask(P)}else if(!0===n.current[X])return G.apply(h,I)})}(e);const i=j("xhrTask"),o=j("xhrSync"),c=j("xhrListener"),a=j("xhrScheduled"),y=j("xhrURL"),d=j("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&&function at(e,n){const i=e.constructor.name;for(let o=0;o{const b=function(){return d.apply(this,Le(arguments,i+"."+c))};return ue(b,d),b})(a)}}}(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,n)=>{function i(o){return function(c){Qe(e,o).forEach(y=>{const d=e.PromiseRejectionEvent;if(d){const b=new d(o,{promise:c.promise,reason:c.rejection});y.invoke(b)}})}}e.PromiseRejectionEvent&&(n[j("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[j("rejectionHandledHandler")]=i("rejectionhandled"))}),Zone.__load_patch("queueMicrotask",(e,n,i)=>{!function yt(e,n){n.patchMethod(e,"queueMicrotask",i=>function(o,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}(e,i)})}},ie=>{ie(ie.s=50)}]); + +"use strict";(self.webpackChunkcoverage_app=self.webpackChunkcoverage_app||[]).push([[792],{403:()=>{let Se=null,Yi=1;const Hn=Symbol("SIGNAL");function W(e){const n=Se;return Se=e,n}function Wf(e){if((!Io(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==Yi)){if(!e.producerMustRecompute(e)&&!Dl(e))return e.dirty=!1,void(e.lastCleanEpoch=Yi);e.producerRecomputeValue(e),e.dirty=!1,e.lastCleanEpoch=Yi}}function Dl(e){pr(e);for(let n=0;n0}function pr(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}let nh=null;function $e(e){return"function"==typeof e}function ih(e){const t=e(r=>{Error.call(r),r.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}const bl=ih(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((r,o)=>`${o+1}) ${r.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t});function Il(e,n){if(e){const t=e.indexOf(n);0<=t&&e.splice(t,1)}}class xt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._teardowns=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(const i of t)i.remove(this);else t.remove(this);const{initialTeardown:r}=this;if($e(r))try{r()}catch(i){n=i instanceof bl?i.errors:[i]}const{_teardowns:o}=this;if(o){this._teardowns=null;for(const i of o)try{lh(i)}catch(s){n=n??[],s instanceof bl?n=[...n,...s.errors]:n.push(s)}}if(n)throw new bl(n)}}add(n){var t;if(n&&n!==this)if(this.closed)lh(n);else{if(n instanceof xt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._teardowns=null!==(t=this._teardowns)&&void 0!==t?t:[]).push(n)}}_hasParent(n){const{_parentage:t}=this;return t===n||Array.isArray(t)&&t.includes(n)}_addParent(n){const{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(n),t):t?[t,n]:n}_removeParent(n){const{_parentage:t}=this;t===n?this._parentage=null:Array.isArray(t)&&Il(t,n)}remove(n){const{_teardowns:t}=this;t&&Il(t,n),n instanceof xt&&n._removeParent(this)}}xt.EMPTY=(()=>{const e=new xt;return e.closed=!0,e})();const sh=xt.EMPTY;function ah(e){return e instanceof xt||e&&"closed"in e&&$e(e.remove)&&$e(e.add)&&$e(e.unsubscribe)}function lh(e){$e(e)?e():e.unsubscribe()}const Bn={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Ji={setTimeout(...e){const{delegate:n}=Ji;return(n?.setTimeout||setTimeout)(...e)},clearTimeout(e){const{delegate:n}=Ji;return(n?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ch(e){Ji.setTimeout(()=>{const{onUnhandledError:n}=Bn;if(!n)throw e;n(e)})}function Xi(){}const ab=El("C",void 0,void 0);function El(e,n,t){return{kind:e,value:n,error:t}}let jn=null;function es(e){if(Bn.useDeprecatedSynchronousErrorHandling){const n=!jn;if(n&&(jn={errorThrown:!1,error:null}),e(),n){const{errorThrown:t,error:r}=jn;if(jn=null,t)throw r}}else e()}class Ml extends xt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,ah(n)&&n.add(this)):this.destination=db}static create(n,t,r){return new uh(n,t,r)}next(n){this.isStopped?Tl(function cb(e){return El("N",e,void 0)}(n),this):this._next(n)}error(n){this.isStopped?Tl(function lb(e){return El("E",void 0,e)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Tl(ab,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}class uh extends Ml{constructor(n,t,r){let o;if(super(),$e(n))o=n;else if(n){let i;({next:o,error:t,complete:r}=n),this&&Bn.useDeprecatedNextContext?(i=Object.create(n),i.unsubscribe=()=>this.unsubscribe()):i=n,o=o?.bind(i),t=t?.bind(i),r=r?.bind(i)}this.destination={next:o?Sl(o):Xi,error:Sl(t??dh),complete:r?Sl(r):Xi}}}function Sl(e,n){return(...t)=>{try{e(...t)}catch(r){Bn.useDeprecatedSynchronousErrorHandling?function ub(e){Bn.useDeprecatedSynchronousErrorHandling&&jn&&(jn.errorThrown=!0,jn.error=e)}(r):ch(r)}}}function dh(e){throw e}function Tl(e,n){const{onStoppedNotification:t}=Bn;t&&Ji.setTimeout(()=>t(e,n))}const db={closed:!0,next:Xi,error:dh,complete:Xi},Nl="function"==typeof Symbol&&Symbol.observable||"@@observable";function fb(e){return e}let Mt=(()=>{class e{constructor(t){t&&(this._subscribe=t)}lift(t){const r=new e;return r.source=this,r.operator=t,r}subscribe(t,r,o){const i=function pb(e){return e&&e instanceof Ml||function hb(e){return e&&$e(e.next)&&$e(e.error)&&$e(e.complete)}(e)&&ah(e)}(t)?t:new uh(t,r,o);return es(()=>{const{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(t){try{return this._subscribe(t)}catch(r){t.error(r)}}forEach(t,r){return new(r=hh(r))((o,i)=>{let s;s=this.subscribe(a=>{try{t(a)}catch(l){i(l),s?.unsubscribe()}},i,o)})}_subscribe(t){var r;return null===(r=this.source)||void 0===r?void 0:r.subscribe(t)}[Nl](){return this}pipe(...t){return function fh(e){return 0===e.length?fb:1===e.length?e[0]:function(t){return e.reduce((r,o)=>o(r),t)}}(t)(this)}toPromise(t){return new(t=hh(t))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=n=>new e(n),e})();function hh(e){var n;return null!==(n=e??Bn.Promise)&&void 0!==n?n:Promise}const gb=ih(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Eo=(()=>{class e extends Mt{constructor(){super(),this.closed=!1,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const r=new ph(this,this);return r.operator=t,r}_throwIfClosed(){if(this.closed)throw new gb}next(t){es(()=>{if(this._throwIfClosed(),!this.isStopped){const r=this.observers.slice();for(const o of r)o.next(t)}})}error(t){es(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:r}=this;for(;r.length;)r.shift().error(t)}})}complete(){es(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:r,isStopped:o,observers:i}=this;return r||o?sh:(i.push(t),new xt(()=>Il(i,t)))}_checkFinalizedStatuses(t){const{hasError:r,thrownError:o,isStopped:i}=this;r?t.error(o):i&&t.complete()}asObservable(){const t=new Mt;return t.source=this,t}}return e.create=(n,t)=>new ph(n,t),e})();class ph extends Eo{constructor(n,t){super(),this.destination=n,this.source=t}next(n){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===r||r.call(t,n)}error(n){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===r||r.call(t,n)}complete(){var n,t;null===(t=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===t||t.call(n)}_subscribe(n){var t,r;return null!==(r=null===(t=this.source)||void 0===t?void 0:t.subscribe(n))&&void 0!==r?r:sh}}class mb extends Eo{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const t=super._subscribe(n);return!t.closed&&n.next(this._value),t}getValue(){const{hasError:n,thrownError:t,_value:r}=this;if(n)throw t;return this._throwIfClosed(),r}next(n){super.next(this._value=n)}}function Al(e){return n=>{if(function vb(e){return $e(e?.lift)}(n))return n.lift(function(t){try{return e(t,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}class xl extends Ml{constructor(n,t,r,o,i){super(n),this.onFinalize=i,this._next=t?function(s){try{t(s)}catch(a){n.error(a)}}:super._next,this._error=o?function(s){try{o(s)}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(s){n.error(s)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;const{closed:t}=this;super.unsubscribe(),!t&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}function Ol(e,n){return Al((t,r)=>{let o=0;t.subscribe(new xl(r,i=>{r.next(e.call(n,i,o++))}))})}const gh="https://g.co/ng/security#xss";class E extends Error{constructor(n,t){super(function gr(e,n){return`NG0${Math.abs(e)}${n?": "+n:""}`}(n,t)),this.code=n}}function ln(e){return{toString:e}.toString()}const vr="__parameters__";function yr(e,n,t){return ln(()=>{const r=function Rl(e){return function(...t){if(e){const r=e(...t);for(const o in r)this[o]=r[o]}}}(n);function o(...i){if(this instanceof o)return r.apply(this,i),this;const s=new o(...i);return a.annotation=s,a;function a(l,c,u){const d=l.hasOwnProperty(vr)?l[vr]:Object.defineProperty(l,vr,{value:[]})[vr];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),l}}return t&&(o.prototype=Object.create(t.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}const le=globalThis;function ce(e){for(let n in e)if(e[n]===ce)return n;throw Error("Could not find renamed property on target object.")}function _b(e,n){for(const t in n)n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=n[t])}function ke(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(ke).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const n=e.toString();if(null==n)return""+n;const t=n.indexOf("\n");return-1===t?n:n.substring(0,t)}function Fl(e,n){return null==e||""===e?null===n?"":n:null==n||""===n?e:e+" "+n}const yb=ce({__forward_ref__:ce});function pe(e){return e.__forward_ref__=pe,e.toString=function(){return ke(this())},e}function P(e){return ns(e)?e():e}function ns(e){return"function"==typeof e&&e.hasOwnProperty(yb)&&e.__forward_ref__===pe}function ee(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function wn(e){return{providers:e.providers||[],imports:e.imports||[]}}function rs(e){return yh(e,is)||yh(e,Ch)}function yh(e,n){return e.hasOwnProperty(n)?e[n]:null}function os(e){return e&&(e.hasOwnProperty(Pl)||e.hasOwnProperty(Ib))?e[Pl]:null}const is=ce({\u0275prov:ce}),Pl=ce({\u0275inj:ce}),Ch=ce({ngInjectableDef:ce}),Ib=ce({ngInjectorDef:ce});class R{constructor(n,t){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof t?this.__NG_ELEMENT_ID__=t:void 0!==t&&(this.\u0275prov=ee({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Bl(e){return e&&!!e.\u0275providers}const Mo=ce({\u0275cmp:ce}),jl=ce({\u0275dir:ce}),$l=ce({\u0275pipe:ce}),wh=ce({\u0275mod:ce}),cn=ce({\u0275fac:ce}),So=ce({__NG_ELEMENT_ID__:ce}),bh=ce({__NG_ENV_ID__:ce});function H(e){return"string"==typeof e?e:null==e?"":String(e)}function Ul(e,n){throw new E(-201,!1)}var te=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(te||{});let zl;function Ih(){return zl}function at(e){const n=zl;return zl=e,n}function Eh(e,n,t){const r=rs(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:t&te.Optional?null:void 0!==n?n:void Ul()}const To={},Gl="__NG_DI_FLAG__",ss="ngTempTokenPath",Ab=/\n/gm,Mh="__source";let Cr;function bn(e){const n=Cr;return Cr=e,n}function Rb(e,n=te.Default){if(void 0===Cr)throw new E(-203,!1);return null===Cr?Eh(e,void 0,n):Cr.get(e,n&te.Optional?null:void 0,n)}function re(e,n=te.Default){return(Ih()||Rb)(P(e),n)}function $(e,n=te.Default){return re(e,as(n))}function as(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function ql(e){const n=[];for(let t=0;tArray.isArray(t)?Dr(t,n):n(t))}function Th(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function ls(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}function vt(e,n,t){let r=wr(e,n);return r>=0?e[1|r]=t:(r=~r,function Nh(e,n,t,r){let o=e.length;if(o==n)e.push(t,r);else if(1===o)e.push(r,e[0]),e[0]=t;else{for(o--,e.push(e[o-1],e[o]);o>n;)e[o]=e[o-2],o--;e[n]=t,e[n+1]=r}}(e,r,n,t)),r}function Yl(e,n){const t=wr(e,n);if(t>=0)return e[1|t]}function wr(e,n){return function Ah(e,n,t){let r=0,o=e.length>>t;for(;o!==r;){const i=r+(o-r>>1),s=e[i<n?o=i:r=i+1}return~(o<n){s=i-1;break}}}for(;i-1){let i;for(;++oi?"":o[u+1].toLowerCase(),2&r&&c!==d){if(Rt(r))return!1;s=!0}}}}else{if(!s&&!Rt(r)&&!Rt(l))return!1;if(s&&Rt(l))continue;s=!1,r=l|1&r}}return Rt(r)||s}function Rt(e){return!(1&e)}function Gb(e,n,t,r){if(null===n)return-1;let o=0;if(r||!t){let i=!1;for(;o-1)for(t++;t0?'="'+a+'"':"")+"]"}else 8&r?o+="."+s:4&r&&(o+=" "+s);else""!==o&&!Rt(s)&&(n+=Lh(i,o),o=""),r=s,i=i||!Rt(r);t++}return""!==o&&(n+=Lh(i,o)),n}function un(e){return ln(()=>{const n=Hh(e),t={...n,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===ds.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Ot.Emulated,styles:e.styles||oe,_:null,schemas:e.schemas||null,tView:null,id:""};Bh(t);const r=e.dependencies;return t.directiveDefs=fs(r,!1),t.pipeDefs=fs(r,!0),t.id=function nI(e){let n=0;const t=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const o of t)n=Math.imul(31,n)+o.charCodeAt(0)|0;return n+=2147483648,"c"+n}(t),t})}function Xb(e){return Y(e)||Le(e)}function eI(e){return null!==e}function Un(e){return ln(()=>({type:e.type,bootstrap:e.bootstrap||oe,declarations:e.declarations||oe,imports:e.imports||oe,exports:e.exports||oe,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Vh(e,n){if(null==e)return zt;const t={};for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let i,s,a=Ee.None;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i):(i=o,s=o),n?(t[i]=a!==Ee.None?[r,a]:r,n[i]=s):t[i]=r}return t}function U(e){return ln(()=>{const n=Hh(e);return Bh(n),n})}function ct(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function Y(e){return e[Mo]||null}function Le(e){return e[jl]||null}function ze(e){return e[$l]||null}function Hh(e){const n={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:n,inputTransforms:null,inputConfig:e.inputs||zt,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||oe,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Vh(e.inputs,n),outputs:Vh(e.outputs),debugInfo:null}}function Bh(e){e.features?.forEach(n=>n(e))}function fs(e,n){if(!e)return null;const t=n?ze:Xb;return()=>("function"==typeof e?e():e).map(r=>t(r)).filter(eI)}function rI(...e){return{\u0275providers:ec(0,e),\u0275fromNgModule:!0}}function ec(e,...n){const t=[],r=new Set;let o;const i=s=>{t.push(s)};return Dr(n,s=>{const a=s;ps(a,i,[],r)&&(o||=[],o.push(a))}),void 0!==o&&jh(o,i),t}function jh(e,n){for(let t=0;t{n(i,r)})}}function ps(e,n,t,r){if(!(e=P(e)))return!1;let o=null,i=os(e);const s=!i&&Y(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const l=e.ngModule;if(i=os(l),!i)return!1;o=l}const a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)ps(c,n,t,r)}}else{if(!i)return!1;{if(null!=i.imports&&!a){let c;r.add(o);try{Dr(i.imports,u=>{ps(u,n,t,r)&&(c||=[],c.push(u))})}finally{}void 0!==c&&jh(c,n)}if(!a){const c=$n(o)||(()=>new o);n({provide:o,useFactory:c,deps:oe},o),n({provide:Kl,useValue:o,multi:!0},o),n({provide:br,useValue:()=>re(o),multi:!0},o)}const l=i.providers;if(null!=l&&!a){const c=e;tc(l,u=>{n(u,c)})}}}return o!==e&&void 0!==e.providers}function tc(e,n){for(let t of e)Bl(t)&&(t=t.\u0275providers),Array.isArray(t)?tc(t,n):n(t)}const oI=ce({provide:String,useValue:ce});function nc(e){return null!==e&&"object"==typeof e&&oI in e}function Gn(e){return"function"==typeof e}const rc=new R(""),gs={},sI={};let oc;function ms(){return void 0===oc&&(oc=new us),oc}class Gt{}class Ir extends Gt{get destroyed(){return this._destroyed}constructor(n,t,r,o){super(),this.parent=t,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,sc(n,s=>this.processProvider(s)),this.records.set(xh,Er(void 0,this)),o.has("environment")&&this.records.set(Gt,Er(void 0,this));const i=this.records.get(rc);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Kl,oe,te.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const n=W(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const t=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of t)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),W(n)}}onDestroy(n){return this.assertNotDestroyed(),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){this.assertNotDestroyed();const t=bn(this),r=at(void 0);try{return n()}finally{bn(t),at(r)}}get(n,t=To,r=te.Default){if(this.assertNotDestroyed(),n.hasOwnProperty(bh))return n[bh](this);r=as(r);const i=bn(this),s=at(void 0);try{if(!(r&te.SkipSelf)){let l=this.records.get(n);if(void 0===l){const c=function dI(e){return"function"==typeof e||"object"==typeof e&&e instanceof R}(n)&&rs(n);l=c&&this.injectableDefInScope(c)?Er(ic(n),gs):null,this.records.set(n,l)}if(null!=l)return this.hydrate(n,l)}return(r&te.Self?ms():this.parent).get(n,t=r&te.Optional&&t===To?null:t)}catch(a){if("NullInjectorError"===a.name){if((a[ss]=a[ss]||[]).unshift(ke(n)),i)throw a;return function Pb(e,n,t,r){const o=e[ss];throw n[Mh]&&o.unshift(n[Mh]),e.message=function kb(e,n,t,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=ke(n);if(Array.isArray(n))o=n.map(ke).join(" -> ");else if("object"==typeof n){let i=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];i.push(s+":"+("string"==typeof a?JSON.stringify(a):ke(a)))}o=`{${i.join(", ")}}`}return`${t}${r?"("+r+")":""}[${o}]: ${e.replace(Ab,"\n ")}`}("\n"+e.message,o,t,r),e.ngTokenPath=o,e[ss]=null,e}(a,n,"R3InjectorError",this.source)}throw a}finally{at(s),bn(i)}}resolveInjectorInitializers(){const n=W(null),t=bn(this),r=at(void 0);try{const i=this.get(br,oe,te.Self);for(const s of i)s()}finally{bn(t),at(r),W(n)}}toString(){const n=[],t=this.records;for(const r of t.keys())n.push(ke(r));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new E(205,!1)}processProvider(n){let t=Gn(n=P(n))?n:P(n&&n.provide);const r=function lI(e){return nc(e)?Er(void 0,e.useValue):Er(zh(e),gs)}(n);if(!Gn(n)&&!0===n.multi){let o=this.records.get(t);o||(o=Er(void 0,gs,!0),o.factory=()=>ql(o.multi),this.records.set(t,o)),t=n,o.multi.push(n)}this.records.set(t,r)}hydrate(n,t){const r=W(null);try{return t.value===gs&&(t.value=sI,t.value=t.factory()),"object"==typeof t.value&&t.value&&function uI(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{W(r)}}injectableDefInScope(n){if(!n.providedIn)return!1;const t=P(n.providedIn);return"string"==typeof t?"any"===t||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(n){const t=this._onDestroyHooks.indexOf(n);-1!==t&&this._onDestroyHooks.splice(t,1)}}function ic(e){const n=rs(e),t=null!==n?n.factory:$n(e);if(null!==t)return t;if(e instanceof R)throw new E(204,!1);if(e instanceof Function)return function aI(e){if(e.length>0)throw new E(204,!1);const t=function bb(e){return e&&(e[is]||e[Ch])||null}(e);return null!==t?()=>t.factory(e):()=>new e}(e);throw new E(204,!1)}function zh(e,n,t){let r;if(Gn(e)){const o=P(e);return $n(o)||ic(o)}if(nc(e))r=()=>P(e.useValue);else if(function Uh(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...ql(e.deps||[]));else if(function $h(e){return!(!e||!e.useExisting)}(e))r=()=>re(P(e.useExisting));else{const o=P(e&&(e.useClass||e.provide));if(!function cI(e){return!!e.deps}(e))return $n(o)||ic(o);r=()=>new o(...ql(e.deps))}return r}function Er(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function sc(e,n){for(const t of e)Array.isArray(t)?sc(t,n):t&&Bl(t)?sc(t.\u0275providers,n):n(t)}const Ce=0,S=1,O=2,Te=3,Ft=4,We=5,_t=6,Sr=7,ge=8,Ge=9,Pt=10,L=11,Oo=12,Zh=13,Tr=14,be=15,Ro=16,Nr=17,dn=18,Fo=19,Qh=20,In=21,ys=22,qn=23,B=25,lc=1,qt=7,Ar=9,Ne=10;var cc=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(cc||{});function Ze(e){return Array.isArray(e)&&"object"==typeof e[lc]}function Qe(e){return Array.isArray(e)&&!0===e[lc]}function uc(e){return!!(4&e.flags)}function Wn(e){return e.componentOffset>-1}function Ds(e){return!(1&~e.flags)}function kt(e){return!!e.template}function dc(e){return!!(512&e[O])}class II{constructor(n,t,r){this.previousValue=n,this.currentValue=t,this.firstChange=r}isFirstChange(){return this.firstChange}}function Xh(e,n,t,r){null!==n?n.applyValueToInputSignal(n,r):e[t]=r}function fn(){return ep}function ep(e){return e.type.prototype.ngOnChanges&&(e.setInput=MI),EI}function EI(){const e=np(this),n=e?.current;if(n){const t=e.previous;if(t===zt)e.previous=n;else for(let r in n)t[r]=n[r];e.current=null,this.ngOnChanges(n)}}function MI(e,n,t,r,o){const i=this.declaredInputs[r],s=np(e)||function SI(e,n){return e[tp]=n}(e,{previous:zt,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[i];a[i]=new II(c&&c.currentValue,t,l===zt),Xh(e,n,o,t)}fn.ngInherit=!0;const tp="__ngSimpleChanges__";function np(e){return e[tp]||null}const Wt=function(e,n,t){};let ip=!1;function fe(e){for(;Array.isArray(e);)e=e[Ce];return e}function ko(e,n){return fe(n[e])}function tt(e,n){return fe(n[e.index])}function Lo(e,n){return e.data[n]}function yt(e,n){const t=n[e];return Ze(t)?t:t[Ce]}function mc(e){return!(128&~e[O])}function Zt(e,n){return null==n?null:e[n]}function sp(e){e[Nr]=0}function RI(e){1024&e[O]||(e[O]|=1024,mc(e)&&Vo(e))}function vc(e){return!!(9216&e[O]||e[qn]?.dirty)}function _c(e){e[Pt].changeDetectionScheduler?.notify(1),vc(e)?Vo(e):64&e[O]&&(function NI(){return ip}()?(e[O]|=1024,Vo(e)):e[Pt].changeDetectionScheduler?.notify())}function Vo(e){e[Pt].changeDetectionScheduler?.notify();let n=Zn(e);for(;null!==n&&!(8192&n[O])&&(n[O]|=8192,mc(n));)n=Zn(n)}function ws(e,n){if(!(256&~e[O]))throw new E(911,!1);null===e[In]&&(e[In]=[]),e[In].push(n)}function Zn(e){const n=e[Te];return Qe(n)?n[Te]:n}const V={lFrame:mp(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function cp(){return V.bindingsEnabled}function D(){return V.lFrame.lView}function K(){return V.lFrame.tView}function Z(e){return V.lFrame.contextLView=e,e[ge]}function Q(e){return V.lFrame.contextLView=null,e}function ue(){let e=up();for(;null!==e&&64===e.type;)e=e.parent;return e}function up(){return V.lFrame.currentTNode}function Qt(e,n){const t=V.lFrame;t.currentTNode=e,t.isParent=n}function Cc(){return V.lFrame.isParent}function Dc(){V.lFrame.isParent=!1}function nt(){const e=V.lFrame;let n=e.bindingRootIndex;return-1===n&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function Lt(){return V.lFrame.bindingIndex++}function pn(e){const n=V.lFrame,t=n.bindingIndex;return n.bindingIndex=n.bindingIndex+e,t}function zI(e,n){const t=V.lFrame;t.bindingIndex=t.bindingRootIndex=e,wc(n)}function wc(e){V.lFrame.currentDirectiveIndex=e}function bs(e){V.lFrame.currentQueryIndex=e}function qI(e){const n=e[S];return 2===n.type?n.declTNode:1===n.type?e[We]:null}function pp(e,n,t){if(t&te.SkipSelf){let o=n,i=e;for(;!(o=o.parent,null!==o||t&te.Host||(o=qI(i),null===o||(i=i[Tr],10&o.type))););if(null===o)return!1;n=o,e=i}const r=V.lFrame=gp();return r.currentTNode=n,r.lView=e,!0}function Ec(e){const n=gp(),t=e[S];V.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function gp(){const e=V.lFrame,n=null===e?null:e.child;return null===n?mp(e):n}function mp(e){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=n),n}function vp(){const e=V.lFrame;return V.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const _p=vp;function Mc(){const e=vp();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Ye(){return V.lFrame.selectedIndex}function Qn(e){V.lFrame.selectedIndex=e}function me(){const e=V.lFrame;return Lo(e.tView,e.selectedIndex)}let Dp=!0;function Bo(){return Dp}function Yt(e){Dp=e}function Is(e,n){for(let t=n.directiveStart,r=n.directiveEnd;t=r)break}else n[l]<0&&(e[Nr]+=65536),(a>14>16&&(3&e[O])===n&&(e[O]+=16384,bp(a,i)):bp(a,i)}const Rr=-1;class jo{constructor(n,t,r){this.factory=n,this.resolving=!1,this.canSeeViewProviders=t,this.injectImpl=r}}function Nc(e){return e!==Rr}function $o(e){return 32767&e}function Uo(e,n){let t=function rE(e){return e>>16}(e),r=n;for(;t>0;)r=r[Tr],t--;return r}let Ac=!0;function Ss(e){const n=Ac;return Ac=e,n}const Ip=255,Ep=5;let oE=0;const Kt={};function Ts(e,n){const t=Mp(e,n);if(-1!==t)return t;const r=n[S];r.firstCreatePass&&(e.injectorIndex=n.length,xc(r.data,e),xc(n,null),xc(r.blueprint,null));const o=Ns(e,n),i=e.injectorIndex;if(Nc(o)){const s=$o(o),a=Uo(o,n),l=a[S].data;for(let c=0;c<8;c++)n[i+c]=a[s+c]|l[s+c]}return n[i+8]=o,i}function xc(e,n){e.push(0,0,0,0,0,0,0,0,n)}function Mp(e,n){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===n[e.injectorIndex+8]?-1:e.injectorIndex}function Ns(e,n){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let t=0,r=null,o=n;for(;null!==o;){if(r=Rp(o),null===r)return Rr;if(t++,o=o[Tr],-1!==r.injectorIndex)return r.injectorIndex|t<<16}return Rr}function Oc(e,n,t){!function iE(e,n,t){let r;"string"==typeof t?r=t.charCodeAt(0)||0:t.hasOwnProperty(So)&&(r=t[So]),null==r&&(r=t[So]=oE++);const o=r&Ip;n.data[e+(o>>Ep)]|=1<=0?n&Ip:cE:n}(t);if("function"==typeof i){if(!pp(n,e,r))return r&te.Host?Sp(o,0,r):Tp(n,t,r,o);try{let s;if(s=i(r),null!=s||r&te.Optional)return s;Ul()}finally{_p()}}else if("number"==typeof i){let s=null,a=Mp(e,n),l=Rr,c=r&te.Host?n[be][We]:null;for((-1===a||r&te.SkipSelf)&&(l=-1===a?Ns(e,n):n[a+8],l!==Rr&&Op(r,!1)?(s=n[S],a=$o(l),n=Uo(l,n)):a=-1);-1!==a;){const u=n[S];if(xp(i,a,u.data)){const d=aE(a,n,t,s,r,c);if(d!==Kt)return d}l=n[a+8],l!==Rr&&Op(r,n[S].data[a+8]===c)&&xp(i,a,n)?(s=u,a=$o(l),n=Uo(l,n)):a=-1}}return o}function aE(e,n,t,r,o,i){const s=n[S],a=s.data[e+8],u=function As(e,n,t,r,o){const i=e.providerIndexes,s=n.data,a=1048575&i,l=e.directiveStart,u=i>>20,h=o?a+u:e.directiveEnd;for(let p=r?a:a+u;p=l&&m.type===t)return p}if(o){const p=s[l];if(p&&kt(p)&&p.type===t)return l}return null}(a,s,t,null==r?Wn(a)&&Ac:r!=s&&!!(3&a.type),o&te.Host&&i===a);return null!==u?Yn(n,s,u,a):Kt}function Yn(e,n,t,r){let o=e[t];const i=n.data;if(function XI(e){return e instanceof jo}(o)){const s=o;s.resolving&&function Sb(e,n){throw n&&n.join(" > "),new E(-200,e)}(function ie(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():H(e)}(i[t]));const a=Ss(s.canSeeViewProviders);s.resolving=!0;const c=s.injectImpl?at(s.injectImpl):null;pp(e,r,te.Default);try{o=e[t]=s.factory(void 0,i,e,r),n.firstCreatePass&&t>=r.directiveStart&&function KI(e,n,t){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=n.type.prototype;if(r){const s=ep(n);(t.preOrderHooks??=[]).push(e,s),(t.preOrderCheckHooks??=[]).push(e,s)}o&&(t.preOrderHooks??=[]).push(0-e,o),i&&((t.preOrderHooks??=[]).push(e,i),(t.preOrderCheckHooks??=[]).push(e,i))}(t,i[t],n)}finally{null!==c&&at(c),Ss(a),s.resolving=!1,_p()}}return o}function xp(e,n,t){return!!(t[n+(e>>Ep)]&1<{const n=e.prototype.constructor,t=n[cn]||Rc(n),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[cn]||Rc(o);if(i&&i!==t)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Rc(e){return ns(e)?()=>{const n=Rc(P(e));return n&&n()}:$n(e)}function Rp(e){const n=e[S],t=n.type;return 2===t?n.declTNode:1===t?e[We]:null}function Vp(e,n=null,t=null,r){const o=Hp(e,n,t,r);return o.resolveInjectorInitializers(),o}function Hp(e,n=null,t=null,r,o=new Set){const i=[t||oe,rI(e)];return r=r||("object"==typeof e?void 0:ke(e)),new Ir(i,n||ms(),r||null,o)}let Ct=(()=>{class e{static#e=this.THROW_IF_NOT_FOUND=To;static#t=this.NULL=new us;static create(t,r){if(Array.isArray(t))return Vp({name:""},r,t,"");{const o=t.name??"";return Vp({name:o},t.parent,t.providers,o)}}static#n=this.\u0275prov=ee({token:e,providedIn:"any",factory:()=>re(xh)});static#r=this.__NG_ELEMENT_ID__=-1}return e})();function Pc(e){return e.ngOriginalError}class Jt{constructor(){this._console=console}handleError(n){const t=this._findOriginalError(n);this._console.error("ERROR",n),t&&this._console.error("ORIGINAL ERROR",t)}_findOriginalError(n){let t=n&&Pc(n);for(;t&&Pc(t);)t=Pc(t);return t||null}}const jp=new R("",{providedIn:"root",factory:()=>$(Jt).handleError.bind(void 0)});let kr=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=yE;static#t=this.__NG_ENV_ID__=t=>t}return e})();class _E extends kr{constructor(n){super(),this._lView=n}onDestroy(n){return ws(this._lView,n),()=>function yc(e,n){if(null===e[In])return;const t=e[In].indexOf(n);-1!==t&&e[In].splice(t,1)}(this._lView,n)}}function yE(){return new _E(D())}function CE(){return Lr(ue(),D())}function Lr(e,n){return new Vt(tt(e,n))}let Vt=(()=>{class e{constructor(t){this.nativeElement=t}static#e=this.__NG_ELEMENT_ID__=CE}return e})();function kc(e){return n=>{setTimeout(e,void 0,n)}}const Ae=class DE extends Eo{constructor(n=!1){super(),this.destroyRef=void 0,this.__isAsync=n,function qh(){return void 0!==Ih()||null!=function Ob(){return Cr}()}()&&(this.destroyRef=$(kr,{optional:!0})??void 0)}emit(n){const t=W(null);try{super.next(n)}finally{W(t)}}subscribe(n,t,r){let o=n,i=t||(()=>null),s=r;if(n&&"object"==typeof n){const l=n;o=l.next?.bind(l),i=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(i=kc(i),o&&(o=kc(o)),s&&(s=kc(s)));const a=super.subscribe({next:o,error:i,complete:s});return n instanceof xt&&n.add(a),a}};function Rs(e){return!(128&~e.flags)}Symbol;const Vc=new Map;let IE=0;const Bc="__ngContext__";function Je(e,n){Ze(n)?(e[Bc]=n[Fo],function ME(e){Vc.set(e[Fo],e)}(n)):e[Bc]=n}function Xp(e){return tg(e[Oo])}function eg(e){return tg(e[Ft])}function tg(e){for(;null!==e&&!Qe(e);)e=e[Ft];return e}let jc;const ks=new R("",{providedIn:"root",factory:()=>zE}),zE="ng",cg=new R(""),Vr=new R("",{providedIn:"platform",factory:()=>"unknown"}),ug=new R("",{providedIn:"root",factory:()=>function En(){if(void 0!==jc)return jc;if(typeof document<"u")return document;throw new E(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});let dg=()=>null;function Qc(e,n,t=!1){return dg(e,n,t)}const mg=new R("",{providedIn:"root",factory:()=>!1});class Dg{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${gh})`}}function Mn(e){return e instanceof Dg?e.changingThisBreaksApplicationSecurity:e}const hM=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;var $r=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}($r||{});function Sn(e){const n=function Jo(){const e=D();return e&&e[Pt].sanitizer}();return n?n.sanitize($r.URL,e)||"":function Yo(e,n){const t=function cM(e){return e instanceof Dg&&e.getTypeName()||null}(e);if(null!=t&&t!==n){if("ResourceURL"===t&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${t} (see ${gh})`)}return t===n}(e,"URL")?Mn(e):function tu(e){return(e=String(e)).match(hM)?e:"unsafe:"+e}(H(e))}const AM=/^>|^->||--!>|)/g,OM="\u200b$1\u200b";function lu(e){return e.ownerDocument.defaultView}var Nn=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(Nn||{});let cu;function uu(e,n){return cu(e,n)}function zr(e,n,t,r,o){if(null!=r){let i,s=!1;Qe(r)?i=r:Ze(r)&&(s=!0,r=r[Ce]);const a=fe(r);0===e&&null!==t?null==o?$g(n,t,a):Kn(n,t,a,o||null,!0):1===e&&null!==t?Kn(n,t,a,o||null,!0):2===e?function ti(e,n,t){const r=Ys(e,n);r&&function YM(e,n,t,r){e.removeChild(n,t,r)}(e,r,n,t)}(n,a,s):3===e&&n.destroyNode(a),null!=i&&function XM(e,n,t,r,o){const i=t[qt];i!==fe(t)&&zr(n,e,r,i,o);for(let a=Ne;an.replace(xM,OM))}(n))}function Zs(e,n,t){return e.createElement(n,t)}function Hg(e,n){n[Pt].changeDetectionScheduler?.notify(1),Js(e,n,n[L],2,null,null)}function Bg(e,n){const t=e[Ar],r=t.indexOf(n);t.splice(r,1)}function Xo(e,n){if(e.length<=Ne)return;const t=Ne+n,r=e[t];if(r){const o=r[Ro];null!==o&&o!==e&&Bg(o,r),n>0&&(e[t-1][Ft]=r[Ft]);const i=ls(e,Ne+n);!function UM(e,n){Hg(e,n),n[Ce]=null,n[We]=null}(r[S],r);const s=i[dn];null!==s&&s.detachView(i[S]),r[Te]=null,r[Ft]=null,r[O]&=-129}return r}function Qs(e,n){if(!(256&n[O])){const t=n[L];t.destroyNode&&Js(e,n,t,3,null,null),function GM(e){let n=e[Oo];if(!n)return hu(e[S],e);for(;n;){let t=null;if(Ze(n))t=n[Oo];else{const r=n[Ne];r&&(t=r)}if(!t){for(;n&&!n[Ft]&&n!==e;)Ze(n)&&hu(n[S],n),n=n[Te];null===n&&(n=e),Ze(n)&&hu(n[S],n),t=n&&n[Ft]}n=t}}(n)}}function hu(e,n){if(256&n[O])return;const t=W(null);try{n[O]&=-129,n[O]|=256,n[qn]&&function Xf(e){if(pr(e),Io(e))for(let n=0;n=0?r[s]():r[-s].unsubscribe(),i+=2}else t[i].call(r[t[i+1]]);null!==r&&(n[Sr]=null);const o=n[In];if(null!==o){n[In]=null;for(let i=0;i-1){const{encapsulation:i}=e.data[r.directiveStart+o];if(i===Ot.None||i===Ot.Emulated)return null}return tt(r,t)}}(e,n.parent,t)}function Kn(e,n,t,r,o){e.insertBefore(n,t,r,o)}function $g(e,n,t){e.appendChild(n,t)}function Ug(e,n,t,r,o){null!==r?Kn(e,n,t,r,o):$g(e,n,t)}function Ys(e,n){return e.parentNode(n)}let gu,qg=function Gg(e,n,t){return 40&e.type?tt(e,t):null};function Ks(e,n,t,r){const o=pu(e,r,n),i=n[L],a=function zg(e,n,t){return qg(e,n,t)}(r.parent||n[We],r,n);if(null!=o)if(Array.isArray(t))for(let l=0;lB&&Xg(e,n,B,!1),Wt(s?2:0,o),t(r,o)}finally{Qn(i),Wt(s?3:1,o)}}function yu(e,n,t){if(uc(n)){const r=W(null);try{const i=n.directiveEnd;for(let s=n.directiveStart;snull;function om(e,n,t,r,o){for(let i in n){if(!n.hasOwnProperty(i))continue;const s=n[i];if(void 0===s)continue;r??={};let a,l=Ee.None;Array.isArray(s)?(a=s[0],l=s[1]):a=s;let c=i;if(null!==o){if(!o.hasOwnProperty(i))continue;c=o[i]}0===e?im(r,t,c,a,l):im(r,t,c,a)}return r}function im(e,n,t,r,o){let i;e.hasOwnProperty(t)?(i=e[t]).push(n,r):i=e[t]=[n,r],void 0!==o&&i.push(o)}function dt(e,n,t,r,o,i,s,a){const l=tt(n,t);let u,c=n.inputs;!a&&null!=c&&(u=c[r])?(Su(e,t,u,r,o),Wn(n)&&function p0(e,n){const t=yt(n,e);16&t[O]||(t[O]|=64)}(t,n.index)):3&n.type&&(r=function h0(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(r),o=null!=s?s(o,n.value||"",r):o,i.setProperty(l,r,o))}function bu(e,n,t,r){if(cp()){const o=null===r?null:{"":-1},i=function C0(e,n){const t=e.directiveRegistry;let r=null,o=null;if(t)for(let i=0;i0;){const t=e[--n];if("number"==typeof t&&t<0)return t}return 0})(s)!=a&&s.push(a),s.push(t,r,i)}}(e,n,r,ni(e,t,o.hostVars,z),o)}function Xt(e,n,t,r,o,i){const s=tt(e,n);!function Eu(e,n,t,r,o,i,s){if(null==i)e.removeAttribute(n,o,t);else{const a=null==s?H(i):s(i,r||"",o);e.setAttribute(n,o,a,t)}}(n[L],s,i,e.value,t,r,o)}function M0(e,n,t,r,o,i){const s=i[n];if(null!==s)for(let a=0;a0&&(t[o-1][Ft]=n),r!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{},consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{Vo(e.lView)},consumerOnSignalRead(){this.lView[qn]=this}},mm=100;function na(e,n=!0,t=0){const r=e[Pt],o=r.rendererFactory;o.begin?.();try{!function P0(e,n){Au(e,n);let t=0;for(;vc(e);){if(t===mm)throw new E(103,!1);t++,Au(e,1)}}(e,t)}catch(s){throw n&&ta(e,s),s}finally{o.end?.(),r.inlineEffectRunner?.flush()}}function k0(e,n,t,r){const o=n[O];if(!(256&~o))return;n[Pt].inlineEffectRunner?.flush(),Ec(n);let s=null,a=null;(function L0(e){return 2!==e.type})(e)&&(a=function x0(e){return e[qn]??function O0(e){const n=gm.pop()??Object.create(F0);return n.lView=e,n}(e)}(n),s=function Kf(e){return e&&(e.nextProducerIndex=0),W(e)}(a));try{sp(n),function fp(e){return V.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==t&&tm(e,n,t,2,r);const l=!(3&~o);if(l){const d=e.preOrderCheckHooks;null!==d&&Es(n,d,null)}else{const d=e.preOrderHooks;null!==d&&Ms(n,d,0,null),Sc(n,0)}if(function V0(e){for(let n=Xp(e);null!==n;n=eg(n)){if(!(n[O]&cc.HasTransplantedViews))continue;const t=n[Ar];for(let r=0;re.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}(a,s),function R0(e){e.lView[qn]!==e&&(e.lView=null,gm.push(e))}(a)),Mc()}}function vm(e,n){for(let t=Xp(e);null!==t;t=eg(t))for(let r=Ne;r-1&&(Xo(n,r),ls(t,r))}this._attachedToViewContainer=!1}Qs(this._lView[S],this._lView)}onDestroy(n){ws(this._lView,n)}markForCheck(){si(this._cdRefInjectingView||this._lView)}detach(){this._lView[O]&=-129}reattach(){_c(this._lView),this._lView[O]|=128}detectChanges(){this._lView[O]|=1024,na(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new E(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,Hg(this._lView[S],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new E(902,!1);this._appRef=n,_c(this._lView)}}let vn=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=$0}return e})();const B0=vn,j0=class extends B0{constructor(n,t,r){super(),this._declarationLView=n,this._declarationTContainer=t,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,t){return this.createEmbeddedViewImpl(n,t)}createEmbeddedViewImpl(n,t,r){const o=function ri(e,n,t,r){const o=W(null);try{const i=n.tView,l=Xs(e,i,t,4096&e[O]?4096:16,null,n,null,null,r?.injector??null,r?.embeddedViewInjector??null,r?.dehydratedView??null);l[Ro]=e[n.index];const u=e[dn];return null!==u&&(l[dn]=u.createEmbeddedView(i)),Tu(i,l,t),l}finally{W(o)}}(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:t,dehydratedView:r});return new ai(o)}};function $0(){return function ra(e,n){return 4&e.type?new j0(n,e,Lr(e,n)):null}(ue(),D())}class ku{}class fS{}class Mm{}class pS{resolveComponentFactory(n){throw function hS(e){const n=Error(`No component factory found for ${ke(e)}.`);return n.ngComponent=e,n}(n)}}let la=(()=>{class e{static#e=this.NULL=new pS}return e})();class Tm{}let Jn=(()=>{class e{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function gS(){const e=D(),t=yt(ue().index,e);return(Ze(t)?t:e)[L]}()}return e})(),mS=(()=>{class e{static#e=this.\u0275prov=ee({token:e,providedIn:"root",factory:()=>null})}return e})();const Lu={};function Am(...e){}class De{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:t=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Ae(!1),this.onMicrotaskEmpty=new Ae(!1),this.onStable=new Ae(!1),this.onError=new Ae(!1),typeof Zone>"u")throw new E(908,!1);Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&t,o.shouldCoalesceRunChangeDetection=r,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=function vS(){const e="function"==typeof le.requestAnimationFrame;let n=le[e?"requestAnimationFrame":"setTimeout"],t=le[e?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&n&&t){const r=n[Zone.__symbol__("OriginalDelegate")];r&&(n=r);const o=t[Zone.__symbol__("OriginalDelegate")];o&&(t=o)}return{nativeRequestAnimationFrame:n,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function CS(e){const n=()=>{!function yS(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(le,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,Hu(e),e.isCheckStableRunning=!0,Vu(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),Hu(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,r,o,i,s,a)=>{if(function DS(e){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0].data?.__ignore_ng_zone__}(a))return t.invokeTask(o,i,s,a);try{return xm(e),t.invokeTask(o,i,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||e.shouldCoalesceRunChangeDetection)&&n(),Om(e)}},onInvoke:(t,r,o,i,s,a,l)=>{try{return xm(e),t.invoke(o,i,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&n(),Om(e)}},onHasTask:(t,r,o,i)=>{t.hasTask(o,i),r===o&&("microTask"==i.change?(e._hasPendingMicrotasks=i.microTask,Hu(e),Vu(e)):"macroTask"==i.change&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,r,o,i)=>(t.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}(o)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!De.isInAngularZone())throw new E(909,!1)}static assertNotInAngularZone(){if(De.isInAngularZone())throw new E(909,!1)}run(n,t,r){return this._inner.run(n,t,r)}runTask(n,t,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,n,_S,Am,Am);try{return i.runTask(s,t,r)}finally{i.cancelTask(s)}}runGuarded(n,t,r){return this._inner.runGuarded(n,t,r)}runOutsideAngular(n){return this._outer.run(n)}}const _S={};function Vu(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Hu(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function xm(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Om(e){e._nesting--,Vu(e)}class Rm{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Ae,this.onMicrotaskEmpty=new Ae,this.onStable=new Ae,this.onError=new Ae}run(n,t,r){return n.apply(t,r)}runGuarded(n,t,r){return n.apply(t,r)}runOutsideAngular(n){return n()}runTask(n,t,r,o){return n.apply(t,r)}}let fi=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const t=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const r of t)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=ee({token:e,providedIn:"root",factory:()=>new e})}return e})();function ua(e,n,t){let r=t?e.styles:null,o=t?e.classes:null,i=0;if(null!==n)for(let s=0;s0&&Kg(e,t,i.join(" "))}}(p,Ie,y,r),void 0!==t&&function FS(e,n,t){const r=e.projection=[];for(let o=0;o{class e{static#e=this.__NG_ELEMENT_ID__=kS}return e})();function kS(){return function Um(e,n){let t;const r=n[e.index];return Qe(r)?t=r:(t=lm(r,n,null,e),n[e.index]=t,ea(n,t)),zm(t,n,e,r),new jm(t,e,n)}(ue(),D())}const LS=tn,jm=class extends LS{constructor(n,t,r){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=r}get element(){return Lr(this._hostTNode,this._hostLView)}get injector(){return new He(this._hostTNode,this._hostLView)}get parentInjector(){const n=Ns(this._hostTNode,this._hostLView);if(Nc(n)){const t=Uo(n,this._hostLView),r=$o(n);return new He(t[S].data[r+8],t)}return new He(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const t=$m(this._lContainer);return null!==t&&t[n]||null}get length(){return this._lContainer.length-Ne}createEmbeddedView(n,t,r){let o,i;"number"==typeof r?o=r:null!=r&&(o=r.index,i=r.injector);const a=n.createEmbeddedViewImpl(t||{},i,null);return this.insertImpl(a,o,qr(this._hostTNode,null)),a}createComponent(n,t,r,o,i){const s=n&&!function xo(e){return"function"==typeof e}(n);let a;if(s)a=t;else{const m=t||{};a=m.index,r=m.injector,o=m.projectableNodes,i=m.environmentInjector||m.ngModuleRef}const l=s?n:new gi(Y(n)),c=r||this.parentInjector;if(!i&&null==l.ngModule){const y=(s?c:this.parentInjector).get(Gt,null);y&&(i=y)}Y(l.componentType??{});const p=l.create(c,o,null,i);return this.insertImpl(p.hostView,a,qr(this._hostTNode,null)),p}insert(n,t){return this.insertImpl(n,t,!0)}insertImpl(n,t,r){const o=n._lView;if(function OI(e){return Qe(e[Te])}(o)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const l=o[Te],c=new jm(l,l[We],l[Te]);c.detach(c.indexOf(n))}}const i=this._adjustIndex(t),s=this._lContainer;return oi(s,o,i,r),n.attachToViewContainerRef(),Th(Uu(s),i,n),n}move(n,t){return this.insert(n,t)}indexOf(n){const t=$m(this._lContainer);return null!==t?t.indexOf(n):-1}remove(n){const t=this._adjustIndex(n,-1),r=Xo(this._lContainer,t);r&&(ls(Uu(this._lContainer),t),Qs(r[S],r))}detach(n){const t=this._adjustIndex(n,-1),r=Xo(this._lContainer,t);return r&&null!=ls(Uu(this._lContainer),t)?new ai(r):null}_adjustIndex(n,t=0){return n??this.length+t}};function $m(e){return e[8]}function Uu(e){return e[8]||(e[8]=[])}let zm=function qm(e,n,t,r){if(e[qt])return;let o;o=8&t.type?fe(r):function VS(e,n){const t=e[L],r=t.createComment(""),o=tt(n,e);return Kn(t,Ys(t,o),r,function KM(e,n){return e.nextSibling(n)}(t,o),!1),r}(n,t),e[qt]=o},zu=()=>!1;function nv(e){return function ev(e){return"function"==typeof e&&void 0!==e[Hn]}(e)&&"function"==typeof e.set}function de(e){let n=function hv(e){return Object.getPrototypeOf(e.prototype).constructor}(e.type),t=!0;const r=[e];for(;n;){let o;if(kt(e))o=n.\u0275cmp||n.\u0275dir;else{if(n.\u0275cmp)throw new E(903,!1);o=n.\u0275dir}if(o){if(t){r.push(o);const s=e;s.inputs=ha(e.inputs),s.inputTransforms=ha(e.inputTransforms),s.declaredInputs=ha(e.declaredInputs),s.outputs=ha(e.outputs);const a=o.hostBindings;a&&lT(e,a);const l=o.viewQuery,c=o.contentQueries;if(l&&sT(e,l),c&&aT(e,c),oT(e,o),_b(e.outputs,o.outputs),kt(o)&&o.data.animation){const u=e.data;u.animation=(u.animation||[]).concat(o.data.animation)}}const i=o.features;if(i)for(let s=0;s=0;r--){const o=e[r];o.hostVars=n+=o.hostVars,o.hostAttrs=Ao(o.hostAttrs,t=Ao(t,o.hostAttrs))}}(r)}function oT(e,n){for(const t in n.inputs){if(!n.inputs.hasOwnProperty(t)||e.inputs.hasOwnProperty(t))continue;const r=n.inputs[t];if(void 0!==r&&(e.inputs[t]=r,e.declaredInputs[t]=n.declaredInputs[t],null!==n.inputTransforms)){const o=Array.isArray(r)?r[0]:r;if(!n.inputTransforms.hasOwnProperty(o))continue;e.inputTransforms??={},e.inputTransforms[o]=n.inputTransforms[o]}}}function ha(e){return e===zt?{}:e===oe?[]:e}function sT(e,n){const t=e.viewQuery;e.viewQuery=t?(r,o)=>{n(r,o),t(r,o)}:n}function aT(e,n){const t=e.contentQueries;e.contentQueries=t?(r,o,i)=>{n(r,o,i),t(r,o,i)}:n}function lT(e,n){const t=e.hostBindings;e.hostBindings=t?(r,o)=>{n(r,o),t(r,o)}:n}class tr{}class gT{}class Xu extends tr{constructor(n,t,r){super(),this._parent=t,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Hm(this);const o=function qe(e,n){const t=e[wh]||null;if(!t&&!0===n)throw new Error(`Type ${ke(e)} does not have '\u0275mod' property.`);return t}(n);this._bootstrapComponents=function Dt(e){return e instanceof Function?e():e}(o.bootstrap),this._r3Injector=Hp(n,t,[{provide:tr,useValue:this},{provide:la,useValue:this.componentFactoryResolver},...r],ke(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class ed extends gT{constructor(n){super(),this.moduleType=n}create(n){return new Xu(this.moduleType,n,[])}}let vi=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new mb(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const t=this.taskId++;return this.pendingTasks.add(t),t}remove(t){this.pendingTasks.delete(t),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function ga(e){return!!function td(e){return null!==e&&("function"==typeof e||"object"==typeof e)}(e)&&(Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e)}function nn(e,n,t){return e[n]=t}function xe(e,n,t){return!Object.is(e[n],t)&&(e[n]=t,!0)}function nr(e,n,t,r){const o=xe(e,n,t);return xe(e,n+1,r)||o}function k(e,n,t,r,o,i,s,a){const l=D(),c=K(),u=e+B,d=c.firstCreatePass?function bT(e,n,t,r,o,i,s,a,l){const c=n.consts,u=Gr(n,e,4,s||null,Zt(c,a));bu(n,t,u,Zt(c,l)),Is(n,u);const d=u.tView=wu(2,u,r,o,i,n.directiveRegistry,n.pipeRegistry,null,n.schemas,c,null);return null!==n.queries&&(n.queries.template(n,u),d.queries=n.queries.embeddedTView(u)),u}(u,c,l,n,t,r,o,i,s):c.data[u];Qt(d,!1);const h=yv(c,l,d,e);Bo()&&Ks(c,l,h,d),Je(h,l);const p=lm(h,l,h,d);return l[u]=p,ea(l,p),function Gm(e,n,t){return zu(e,n,t)}(p,d,l),Ds(d)&&Cu(c,l,d),null!=s&&Du(l,d,a),k}let yv=function Cv(e,n,t,r){return Yt(!0),n[L].createComment("")};function Ht(e,n,t,r){const o=D();return xe(o,Lt(),n)&&(K(),Xt(me(),o,e,n,t,r)),Ht}function no(e,n,t,r){return xe(e,Lt(),t)?n+H(t)+r:z}function wa(e,n){return e<<17|n<<2}function On(e){return e>>17&32767}function dd(e){return 2|e}function or(e){return(131068&e)>>2}function fd(e,n){return-131069&e|n<<2}function hd(e){return 1|e}function Kv(e,n,t,r){const o=e[t+1],i=null===n;let s=r?On(o):or(o),a=!1;for(;0!==s&&(!1===a||i);){const c=e[s+1];lN(e[s],n)&&(a=!0,e[s+1]=r?hd(c):dd(c)),s=r?On(c):or(c)}a&&(e[t+1]=r?dd(o):hd(o))}function lN(e,n){return null===e||null==n||(Array.isArray(e)?e[1]:e)===n||!(!Array.isArray(e)||"string"!=typeof n)&&wr(e,n)>=0}const Be={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Jv(e){return e.substring(Be.key,Be.keyEnd)}function Xv(e,n){const t=Be.textEnd;return t===n?-1:(n=Be.keyEnd=function fN(e,n,t){for(;n32;)n++;return n}(e,Be.key=n,t),uo(e,n,t))}function uo(e,n,t){for(;n=0;t=Xv(n,t))vt(e,Jv(n),!0)}function i_(e,n){return n>=e.expandoStartIndex}function s_(e,n,t,r){const o=e.data;if(null===o[t+1]){const i=o[Ye()],s=i_(e,t);u_(i,r)&&null===n&&!s&&(n=!1),n=function vN(e,n,t,r){const o=function bc(e){const n=V.lFrame.currentDirectiveIndex;return-1===n?null:e[n]}(e);let i=r?n.residualClasses:n.residualStyles;if(null===o)0===(r?n.classBindings:n.styleBindings)&&(t=bi(t=gd(null,e,n,t,r),n.attrs,r),i=null);else{const s=n.directiveStylingLast;if(-1===s||e[s]!==o)if(t=gd(o,e,n,t,r),null===i){let l=function _N(e,n,t){const r=t?n.classBindings:n.styleBindings;if(0!==or(r))return e[On(r)]}(e,n,r);void 0!==l&&Array.isArray(l)&&(l=gd(null,e,n,l[1],r),l=bi(l,n.attrs,r),function yN(e,n,t,r){e[On(t?n.classBindings:n.styleBindings)]=r}(e,n,r,l))}else i=function CN(e,n,t){let r;const o=n.directiveEnd;for(let i=1+n.directiveStylingLast;i0)&&(c=!0)):u=t,o)if(0!==l){const h=On(e[a+1]);e[r+1]=wa(h,a),0!==h&&(e[h+1]=fd(e[h+1],r)),e[a+1]=function oN(e,n){return 131071&e|n<<17}(e[a+1],r)}else e[r+1]=wa(a,0),0!==a&&(e[a+1]=fd(e[a+1],r)),a=r;else e[r+1]=wa(l,0),0===a?a=r:e[l+1]=fd(e[l+1],r),l=r;c&&(e[r+1]=dd(e[r+1])),Kv(e,u,r,!0),Kv(e,u,r,!1),function aN(e,n,t,r,o){const i=o?e.residualClasses:e.residualStyles;null!=i&&"string"==typeof n&&wr(i,n)>=0&&(t[r+1]=hd(t[r+1]))}(n,u,e,r,i),s=wa(a,l),i?n.classBindings=s:n.styleBindings=s}(o,i,n,t,s,r)}}function gd(e,n,t,r,o){let i=null;const s=t.directiveEnd;let a=t.directiveStylingLast;for(-1===a?a=t.directiveStart:a++;a0;){const l=e[o],c=Array.isArray(l),u=c?l[1]:l,d=null===u;let h=t[o+1];h===z&&(h=d?oe:void 0);let p=d?Yl(h,r):u===r?h:void 0;if(c&&!Ia(p)&&(p=Yl(l,r)),Ia(p)&&(a=p,s))return a;const m=e[o+1];o=s?On(m):or(m)}if(null!==n){let l=i?n.residualClasses:n.residualStyles;null!=l&&(a=Yl(l,r))}return a}function Ia(e){return void 0!==e}function u_(e,n){return!!(e.flags&(n?8:16))}function sn(e,n,t){!function jt(e,n,t,r){const o=K(),i=pn(2);o.firstUpdatePass&&s_(o,null,i,r);const s=D();if(t!==z&&xe(s,i,t)){const a=o.data[Ye()];if(u_(a,r)&&!i_(o,i)){let l=r?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(t=Fl(l,t||"")),pd(o,a,s,t,r)}else!function bN(e,n,t,r,o,i,s,a){o===z&&(o=oe);let l=0,c=0,u=0(Yt(!0),Zs(r,o,function Cp(){return V.lFrame.currentNamespace}()));function J(e,n,t){const r=D(),o=K(),i=e+B,s=o.firstCreatePass?function QN(e,n,t,r,o){const i=n.consts,s=Zt(i,r),a=Gr(n,e,8,"ng-container",s);return null!==s&&ua(a,s,!0),bu(n,t,a,Zt(i,o)),null!==n.queries&&n.queries.elementStart(n,a),a}(i,o,r,n,t):o.data[i];Qt(s,!0);const a=m_(o,r,s,e);return r[i]=a,Bo()&&Ks(o,r,a,s),Je(a,r),Ds(s)&&(Cu(o,r,s),yu(o,s,r)),null!=t&&Du(r,s),J}function X(){let e=ue();const n=K();return Cc()?Dc():(e=e.parent,Qt(e,!1)),n.firstCreatePass&&(Is(n,e),uc(e)&&n.queries.elementEnd(e)),X}let m_=(e,n,t,r)=>(Yt(!0),fu(n[L],""));function Me(){return D()}const ho="en-US";let D_=ho;function j(e,n,t,r){const o=D(),i=K(),s=ue();return wd(i,o,o[L],s,e,n,r),j}function wd(e,n,t,r,o,i,s){const a=Ds(r),c=e.firstCreatePass&&function dm(e){return e.cleanup||(e.cleanup=[])}(e),u=n[ge],d=function um(e){return e[Sr]||(e[Sr]=[])}(n);let h=!0;if(3&r.type||s){const y=tt(r,n),I=s?s(y):y,M=d.length,w=s?G=>s(fe(G[r.index])):r.index;let x=null;if(!s&&a&&(x=function YA(e,n,t,r){const o=e.cleanup;if(null!=o)for(let i=0;il?a[l]:null}"string"==typeof s&&(i+=2)}return null}(e,n,o,r.index)),null!==x)(x.__ngLastListenerFn__||x).__ngNextListenerFn__=i,x.__ngLastListenerFn__=i,h=!1;else{i=Q_(r,n,u,i,!1);const G=t.listen(I,o,i);d.push(i,G),c&&c.push(o,w,M,M+1)}}else i=Q_(r,n,u,i,!1);const p=r.outputs;let m;if(h&&null!==p&&(m=p[o])){const y=m.length;if(y)for(let I=0;I-1?yt(e.index,n):n);let l=Z_(n,t,r,s),c=i.__ngNextListenerFn__;for(;c;)l=Z_(n,t,c,s)&&l,c=c.__ngNextListenerFn__;return o&&!1===l&&s.preventDefault(),l}}function v(e=1){return function WI(e){return(V.lFrame.contextLView=function ap(e,n){for(;e>0;)n=n[Tr],e--;return n}(e,V.lFrame.contextLView))[ge]}(e)}function Rn(e,n,t){return bd(e,"",n,"",t),Rn}function bd(e,n,t,r,o){const i=D(),s=no(i,n,t,r);return s!==z&&dt(K(),me(),i,e,s,i[L],o,!1),bd}function b(e,n=""){const t=D(),r=K(),o=e+B,i=r.firstCreatePass?Gr(r,o,1,n,null):r.data[o],s=hy(r,t,i,n,e);t[o]=s,Bo()&&Ks(r,t,s,i),Qt(i,!1)}let hy=(e,n,t,r,o)=>(Yt(!0),function du(e,n){return e.createText(n)}(n[L],r));function A(e){return q("",e,""),A}function q(e,n,t){const r=D(),o=no(r,e,n,t);return o!==z&&function mn(e,n,t){const r=ko(n,e);!function Vg(e,n,t){e.setValue(n,t)}(e[L],r,t)}(r,Ye(),o),q}function ht(e,n,t){nv(n)&&(n=n());const r=D();return xe(r,Lt(),n)&&dt(K(),me(),r,e,n,r[L],t,!1),ht}function Xe(e,n){const t=nv(e);return t&&e.set(n),t}function bt(e,n){const t=D(),r=K(),o=ue();return wd(r,t,t[L],o,e,n),bt}function Id(e,n,t,r,o){if(e=P(e),Array.isArray(e))for(let i=0;i>20;if(Gn(e)||!e.multi){const p=new jo(c,o,T),m=Md(l,n,o?u:u+h,d);-1===m?(Oc(Ts(a,s),i,l),Ed(i,e,n.length),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),t.push(p),s.push(p)):(t[m]=p,s[m]=p)}else{const p=Md(l,n,u+h,d),m=Md(l,n,u,u+h),I=m>=0&&t[m];if(o&&!I||!o&&!(p>=0&&t[p])){Oc(Ts(a,s),i,l);const M=function b1(e,n,t,r,o){const i=new jo(e,t,T);return i.multi=[],i.index=n,i.componentProviders=0,wy(i,o,r&&!t),i}(o?w1:D1,t.length,o,r,c);!o&&I&&(t[m].providerFactory=M),Ed(i,e,n.length,0),n.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),t.push(M),s.push(M)}else Ed(i,e,p>-1?p:m,wy(t[o?m:p],c,!o&&r));!o&&r&&I&&t[m].componentProviders++}}}function Ed(e,n,t,r){const o=Gn(n),i=function iI(e){return!!e.useClass}(n);if(o||i){const l=(i?P(n.useClass):n).prototype.ngOnDestroy;if(l){const c=e.destroyHooks||(e.destroyHooks=[]);if(!o&&n.multi){const u=c.indexOf(t);-1===u?c.push(t,[r,l]):c[u+1].push(r,l)}else c.push(t,l)}}}function wy(e,n,t){return t&&e.componentProviders++,e.multi.push(n)-1}function Md(e,n,t,r){for(let o=t;o{t.providersResolver=(r,o)=>function C1(e,n,t){const r=K();if(r.firstCreatePass){const o=kt(e);Id(t,r.data,r.blueprint,o,!0),Id(n,r.data,r.blueprint,o,!1)}}(r,o?o(e):e,n)}}function Aa(e,n,t,r){return function Iy(e,n,t,r,o,i){const s=n+t;return xe(e,s,o)?nn(e,s+1,i?r.call(i,o):r(o)):Ai(e,s+1)}(D(),nt(),e,n,t,r)}function Td(e,n,t,r,o){return function Ey(e,n,t,r,o,i,s){const a=n+t;return nr(e,a,o,i)?nn(e,a+2,s?r.call(s,o,i):r(o,i)):Ai(e,a+2)}(D(),nt(),e,n,t,r,o)}function Ue(e,n,t,r,o,i){return My(D(),nt(),e,n,t,r,o,i)}function Ai(e,n){const t=e[n];return t===z?void 0:t}function My(e,n,t,r,o,i,s,a){const l=n+t;return function ma(e,n,t,r,o){const i=nr(e,n,t,r);return xe(e,n+2,o)||i}(e,l,o,i,s)?nn(e,l+3,a?r.call(a,o,i,s):r(o,i,s)):Ai(e,l+3)}function Ay(e,n,t,r,o){const i=e+B,s=D(),a=function xr(e,n){return e[n]}(s,i);return function xi(e,n){return e[S].data[n].pure}(s,i)?My(s,nt(),n,a.transform,t,r,o,a):a.transform(t,r,o)}const Yy=new R(""),Fa=new R("");let kd,Fd=(()=>{class e{constructor(t,r,o){this._ngZone=t,this.registry=r,this._pendingCount=0,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,kd||(function Fx(e){kd=e}(o),o.addToWindow(r)),this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{De.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb()}});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(t)||(clearTimeout(r.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==i),t()},r)),this._callbacks.push({doneCb:t,timeoutId:i,updateCb:o})}whenStable(t,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(t,r,o),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(t){this.registry.registerApplication(t,this)}unregisterApplication(t){this.registry.unregisterApplication(t)}findProviders(t,r,o){return[]}static#e=this.\u0275fac=function(r){return new(r||e)(re(De),re(Pd),re(Fa))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Pd=(()=>{class e{constructor(){this._applications=new Map}registerApplication(t,r){this._applications.set(t,r)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,r=!0){return kd?.findTestabilityInTree(this,t,r)??null}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function Pa(e){return!!e&&"function"==typeof e.then}function Ky(e){return!!e&&"function"==typeof e.subscribe}const Px=new R("");let Ld=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,r)=>{this.resolve=t,this.reject=r}),this.appInits=$(Px,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const t=[];for(const o of this.appInits){const i=o();if(Pa(i))t.push(i);else if(Ky(i)){const s=new Promise((a,l)=>{i.subscribe({complete:a,error:l})});t.push(s)}}const r=()=>{this.done=!0,this.resolve()};Promise.all(t).then(()=>{r()}).catch(o=>{this.reject(o)}),0===t.length&&r(),this.initialized=!0}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const Jy=new R("");function tC(e,n){return Array.isArray(n)?n.reduce(tC,e):{...e,...n}}let sr=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=$(jp),this.afterRenderEffectManager=$(fi),this.externalTestViews=new Set,this.beforeRender=new Eo,this.afterTick=new Eo,this.componentTypes=[],this.components=[],this.isStable=$(vi).hasPendingTasks.pipe(Ol(t=>!t)),this._injector=$(Gt)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(t,r){const o=t instanceof Mm;if(!this._injector.get(Ld).done)throw!o&&function zn(e){const n=Y(e)||Le(e)||ze(e);return null!==n&&n.standalone}(t),new E(405,!1);let s;s=o?t:this._injector.get(la).resolveComponentFactory(t),this.componentTypes.push(s.componentType);const a=function kx(e){return e.isBoundToModule}(s)?void 0:this._injector.get(tr),c=s.create(Ct.NULL,[],r||s.selector,a),u=c.location.nativeElement,d=c.injector.get(Yy,null);return d?.registerApplication(u),c.onDestroy(()=>{this.detachView(c.hostView),ka(this.components,c),d?.unregisterApplication(u)}),this._loadComponent(c),c}tick(){this._tick(!0)}_tick(t){if(this._runningTick)throw new E(101,!1);const r=W(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(t)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,W(r)}}detectChangesInAttachedViews(t){let r=0;const o=this.afterRenderEffectManager;for(;;){if(r===mm)throw new E(103,!1);if(t){const i=0===r;this.beforeRender.next(i);for(let{_lView:s,notifyErrorHandler:a}of this._views)Vx(s,i,a)}if(r++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>Vd(i))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>Vd(i))))break}}attachView(t){const r=t;this._views.push(r),r.attachToAppRef(this)}detachView(t){const r=t;ka(this._views,r),r.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t);const r=this._injector.get(Jy,[]);[...this._bootstrapListeners,...r].forEach(o=>o(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>ka(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new E(406,!1);const t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function ka(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}function Vx(e,n,t){!n&&!Vd(e)||function Hx(e,n,t){let r;t?(r=0,e[O]|=1024):r=64&e[O]?0:1,na(e,n,r)}(e,t,n)}function Vd(e){return vc(e)}let Ux=(()=>{class e{constructor(){this.zone=$(De),this.applicationRef=$(sr)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function zx(){const e=$(De),n=$(Jt);return t=>e.runOutsideAngular(()=>n.handleError(t))}let qx=(()=>{class e{constructor(){this.subscription=new xt,this.initialized=!1,this.zone=$(De),this.pendingTasks=$(vi)}initialize(){if(this.initialized)return;this.initialized=!0;let t=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(t=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{De.assertNotInAngularZone(),queueMicrotask(()=>{null!==t&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(t),t=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{De.assertInAngularZone(),t??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const _n=new R("",{providedIn:"root",factory:()=>$(_n,te.Optional|te.SkipSelf)||function Wx(){return typeof $localize<"u"&&$localize.locale||ho}()}),Hd=new R("");let iC=(()=>{class e{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,r){const o=function wS(e="zone.js",n){return"noop"===e?new Rm:"zone.js"===e?new De(n):e}(r?.ngZone,function oC(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}({eventCoalescing:r?.ngZoneEventCoalescing,runCoalescing:r?.ngZoneRunCoalescing}));return o.run(()=>{const i=function vT(e,n,t){return new Xu(e,n,t)}(t.moduleType,this.injector,function rC(e){return[{provide:De,useFactory:e},{provide:br,multi:!0,useFactory:()=>{const n=$(Ux,{optional:!0});return()=>n.initialize()}},{provide:br,multi:!0,useFactory:()=>{const n=$(qx);return()=>{n.initialize()}}},{provide:jp,useFactory:zx}]}(()=>o)),s=i.injector.get(Jt,null);return o.runOutsideAngular(()=>{const a=o.onError.subscribe({next:l=>{s.handleError(l)}});i.onDestroy(()=>{ka(this._modules,i),a.unsubscribe()})}),function eC(e,n,t){try{const r=t();return Pa(r)?r.catch(o=>{throw n.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw n.runOutsideAngular(()=>e.handleError(r)),r}}(s,o,()=>{const a=i.injector.get(Ld);return a.runInitializers(),a.donePromise.then(()=>(function w_(e){"string"==typeof e&&(D_=e.toLowerCase().replace(/_/g,"-"))}(i.injector.get(_n,ho)||ho),this._moduleDoBootstrap(i),i))})})}bootstrapModule(t,r=[]){const o=tC({},r);return function $x(e,n,t){const r=new ed(t);return Promise.resolve(r)}(0,0,t).then(i=>this.bootstrapModuleFactory(i,o))}_moduleDoBootstrap(t){const r=t.injector.get(sr);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(o=>r.bootstrap(o));else{if(!t.instance.ngDoBootstrap)throw new E(-403,!1);t.instance.ngDoBootstrap(r)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new E(404,!1);this._modules.slice().forEach(r=>r.destroy()),this._destroyListeners.forEach(r=>r());const t=this._injector.get(Hd,null);t&&(t.forEach(r=>r()),t.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static#e=this.\u0275fac=function(r){return new(r||e)(re(Ct))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})(),Fn=null;const sC=new R("");function aC(e,n,t=[]){const r=`Platform: ${n}`,o=new R(r);return(i=[])=>{let s=Bd();if(!s||s.injector.get(sC,!1)){const a=[...t,...i,{provide:o,useValue:!0}];e?e(a):function Yx(e){if(Fn&&!Fn.get(sC,!1))throw new E(400,!1);(function Xy(){!function nb(e){nh=e}(()=>{throw new E(600,!1)})})(),Fn=e;const n=e.get(iC);(function cC(e){e.get(cg,null)?.forEach(t=>t())})(e)}(function lC(e=[],n){return Ct.create({name:n,providers:[{provide:rc,useValue:"platform"},{provide:Hd,useValue:new Set([()=>Fn=null])},...e]})}(a,r))}return function Kx(e){const n=Bd();if(!n)throw new E(401,!1);return n}()}}function Bd(){return Fn?.get(iC)??null}let jd=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=Xx}return e})();function Xx(e){return function eO(e,n,t){if(Wn(e)&&!t){const r=yt(e.index,n);return new ai(r,r)}return 47&e.type?new ai(n[be],n):null}(ue(),D(),!(16&~e))}class pC{constructor(){}supports(n){return ga(n)}create(n){return new iO(n)}}const oO=(e,n)=>n;class iO{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||oO}forEachItem(n){let t;for(t=this._itHead;null!==t;t=t._next)n(t)}forEachOperation(n){let t=this._itHead,r=this._removalsHead,o=0,i=null;for(;t||r;){const s=!r||t&&t.currentIndex{s=this._trackByFn(o,a),null!==t&&Object.is(t.trackById,s)?(r&&(t=this._verifyReinsertion(t,a,s,o)),Object.is(t.item,a)||this._addIdentityChange(t,a)):(t=this._mismatch(t,a,s,o),r=!0),t=t._next,o++}),this.length=o;return this._truncate(t),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,t,r,o){let i;return null===n?i=this._itTail:(i=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._reinsertAfter(n,i,o)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(r,o))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._moveAfter(n,i,o)):n=this._addAfter(new sO(t,r),i,o),n}_verifyReinsertion(n,t,r,o){let i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null);return null!==i?n=this._reinsertAfter(i,n._prev,o):n.currentIndex!=o&&(n.currentIndex=o,this._addToMoves(n,o)),n}_truncate(n){for(;null!==n;){const t=n._next;this._addToRemovals(this._unlink(n)),n=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,t,r){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const o=n._prevRemoved,i=n._nextRemoved;return null===o?this._removalsHead=i:o._nextRemoved=i,null===i?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(n,t,r),this._addToMoves(n,r),n}_moveAfter(n,t,r){return this._unlink(n),this._insertAfter(n,t,r),this._addToMoves(n,r),n}_addAfter(n,t,r){return this._insertAfter(n,t,r),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,t,r){const o=null===t?this._itHead:t._next;return n._next=o,n._prev=t,null===o?this._itTail=n:o._prev=n,null===t?this._itHead=n:t._next=n,null===this._linkedRecords&&(this._linkedRecords=new gC),this._linkedRecords.put(n),n.currentIndex=r,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const t=n._prev,r=n._next;return null===t?this._itHead=r:t._next=r,null===r?this._itTail=t:r._prev=t,n}_addToMoves(n,t){return n.previousIndex===t||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new gC),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,t){return n.item=t,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class sO{constructor(n,t){this.item=n,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class aO{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,t){let r;for(r=this._head;null!==r;r=r._nextDup)if((null===t||t<=r.currentIndex)&&Object.is(r.trackById,n))return r;return null}remove(n){const t=n._prevDup,r=n._nextDup;return null===t?this._head=r:t._nextDup=r,null===r?this._tail=t:r._prevDup=t,null===this._head}}class gC{constructor(){this.map=new Map}put(n){const t=n.trackById;let r=this.map.get(t);r||(r=new aO,this.map.set(t,r)),r.add(n)}get(n,t){const o=this.map.get(n);return o?o.get(n,t):null}remove(n){const t=n.trackById;return this.map.get(t).remove(n)&&this.map.delete(t),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function mC(e,n,t){const r=e.previousIndex;if(null===r)return r;let o=0;return t&&r{class e{static#e=this.\u0275prov=ee({token:e,providedIn:"root",factory:_C});constructor(t){this.factories=t}static create(t,r){if(null!=r){const o=r.factories.slice();t=t.concat(o)}return new e(t)}static extend(t){return{provide:e,useFactory:r=>e.create(t,r||_C()),deps:[[e,new Zl,new Wl]]}}find(t){const r=this.factories.find(o=>o.supports(t));if(null!=r)return r;throw new E(901,!1)}}return e})();const fO=aC(null,"core",[]);let hO=(()=>{class e{constructor(t){}static#e=this.\u0275fac=function(r){return new(r||e)(re(sr))};static#t=this.\u0275mod=Un({type:e});static#n=this.\u0275inj=wn({})}return e})();let $C=null;function ki(){return $C}class QO{}const lr=new R(""),sf=/\s+/,KC=[];let Vi=(()=>{class e{constructor(t,r){this._ngEl=t,this._renderer=r,this.initialClasses=KC,this.stateMap=new Map}set klass(t){this.initialClasses=null!=t?t.trim().split(sf):KC}set ngClass(t){this.rawClass="string"==typeof t?t.trim().split(sf):t}ngDoCheck(){for(const r of this.initialClasses)this._updateState(r,!0);const t=this.rawClass;if(Array.isArray(t)||t instanceof Set)for(const r of t)this._updateState(r,!0);else if(null!=t)for(const r of Object.keys(t))this._updateState(r,!!t[r]);this._applyStateDiff()}_updateState(t,r){const o=this.stateMap.get(t);void 0!==o?(o.enabled!==r&&(o.changed=!0,o.enabled=r),o.touched=!0):this.stateMap.set(t,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(const t of this.stateMap){const r=t[0],o=t[1];o.changed?(this._toggleClass(r,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),o.touched=!1}}_toggleClass(t,r){(t=t.trim()).length>0&&t.split(sf).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static#e=this.\u0275fac=function(r){return new(r||e)(T(Vt),T(Jn))};static#t=this.\u0275dir=U({type:e,selectors:[["","ngClass",""]],inputs:{klass:[Ee.None,"class","klass"],ngClass:"ngClass"},standalone:!0})}return e})();class LR{constructor(n,t,r,o){this.$implicit=n,this.ngForOf=t,this.index=r,this.count=o}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let _o=(()=>{class e{set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}constructor(t,r,o){this._viewContainer=t,this._template=r,this._differs=o,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const t=this._ngForOf;!this._differ&&t&&(this._differ=this._differs.find(t).create(this.ngForTrackBy))}if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const r=this._viewContainer;t.forEachOperation((o,i,s)=>{if(null==o.previousIndex)r.createEmbeddedView(this._template,new LR(o.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)r.remove(null===i?void 0:i);else if(null!==i){const a=r.get(i);r.move(a,s),XC(a,o)}});for(let o=0,i=r.length;o{XC(r.get(o.currentIndex),o)})}static ngTemplateContextGuard(t,r){return!0}static#e=this.\u0275fac=function(r){return new(r||e)(T(tn),T(vn),T(qd))};static#t=this.\u0275dir=U({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}return e})();function XC(e,n){e.context.$implicit=n.item}let cr=(()=>{class e{constructor(t,r){this._viewContainer=t,this._context=new VR,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=r}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){eD("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){eD("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,r){return!0}static#e=this.\u0275fac=function(r){return new(r||e)(T(tn),T(vn))};static#t=this.\u0275dir=U({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}return e})();class VR{constructor(){this.$implicit=null,this.ngIf=null}}function eD(e,n){if(n&&!n.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${ke(n)}'.`)}let rD=(()=>{class e{transform(t,r,o){if(null==t)return null;if(!this.supports(t))throw function Ut(e,n){return new E(2100,!1)}();return t.slice(r,o)}supports(t){return"string"==typeof t||Array.isArray(t)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275pipe=ct({name:"slice",type:e,pure:!1,standalone:!0})}return e})(),uF=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Un({type:e});static#n=this.\u0275inj=wn({})}return e})();function iD(e){return"server"===e}class UF extends QO{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class ff extends UF{static makeCurrent(){!function ZO(e){$C??=e}(new ff)}onAndCancel(n,t,r){return n.addEventListener(t,r),()=>{n.removeEventListener(t,r)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,t){return(t=t||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return"window"===t?window:"document"===t?n:"body"===t?n.body:null}getBaseHref(n){const t=function zF(){return ji=ji||document.querySelector("base"),ji?ji.getAttribute("href"):null}();return null==t?null:function GF(e){return new URL(e,document.baseURI).pathname}(t)}resetBaseElement(){ji=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return function PR(e,n){n=encodeURIComponent(n);for(const t of e.split(";")){const r=t.indexOf("="),[o,i]=-1==r?[t,""]:[t.slice(0,r),t.slice(r+1)];if(o.trim()===n)return decodeURIComponent(i)}return null}(document.cookie,n)}}let ji=null,WF=(()=>{class e{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();const hf=new R("");let pD=(()=>{class e{constructor(t,r){this._zone=r,this._eventNameToPlugin=new Map,t.forEach(o=>{o.manager=this}),this._plugins=t.slice().reverse()}addEventListener(t,r,o){return this._findPluginFor(r).addEventListener(t,r,o)}getZone(){return this._zone}_findPluginFor(t){let r=this._eventNameToPlugin.get(t);if(r)return r;if(r=this._plugins.find(i=>i.supports(t)),!r)throw new E(5101,!1);return this._eventNameToPlugin.set(t,r),r}static#e=this.\u0275fac=function(r){return new(r||e)(re(hf),re(De))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();class gD{constructor(n){this._doc=n}}const pf="ng-app-id";let mD=(()=>{class e{constructor(t,r,o,i={}){this.doc=t,this.appId=r,this.nonce=o,this.platformId=i,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=iD(i),this.resetHostNodes()}addStyles(t){for(const r of t)1===this.changeUsageCount(r,1)&&this.onStyleAdded(r)}removeStyles(t){for(const r of t)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){const t=this.styleNodesInDOM;t&&(t.forEach(r=>r.remove()),t.clear());for(const r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(t){this.hostNodes.add(t);for(const r of this.getAllStyles())this.addStyleToHost(t,r)}removeHost(t){this.hostNodes.delete(t)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(t){for(const r of this.hostNodes)this.addStyleToHost(r,t)}onStyleRemoved(t){const r=this.styleRef;r.get(t)?.elements?.forEach(o=>o.remove()),r.delete(t)}collectServerRenderedStyles(){const t=this.doc.head?.querySelectorAll(`style[${pf}="${this.appId}"]`);if(t?.length){const r=new Map;return t.forEach(o=>{null!=o.textContent&&r.set(o.textContent,o)}),r}return null}changeUsageCount(t,r){const o=this.styleRef;if(o.has(t)){const i=o.get(t);return i.usage+=r,i.usage}return o.set(t,{usage:r,elements:[]}),r}getStyleElement(t,r){const o=this.styleNodesInDOM,i=o?.get(r);if(i?.parentNode===t)return o.delete(r),i.removeAttribute(pf),i;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=r,this.platformIsServer&&s.setAttribute(pf,this.appId),t.appendChild(s),s}}addStyleToHost(t,r){const o=this.getStyleElement(t,r),i=this.styleRef,s=i.get(r)?.elements;s?s.push(o):i.set(r,{elements:[o],usage:1})}resetHostNodes(){const t=this.hostNodes;t.clear(),t.add(this.doc.head)}static#e=this.\u0275fac=function(r){return new(r||e)(re(lr),re(ks),re(ug,8),re(Vr))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();const gf={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},mf=/%COMP%/g,KF=new R("",{providedIn:"root",factory:()=>!0});function _D(e,n){return n.map(t=>t.replace(mf,e))}let yD=(()=>{class e{constructor(t,r,o,i,s,a,l,c=null){this.eventManager=t,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.platformId=a,this.ngZone=l,this.nonce=c,this.rendererByCompId=new Map,this.platformIsServer=iD(a),this.defaultRenderer=new vf(t,s,l,this.platformIsServer)}createRenderer(t,r){if(!t||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===Ot.ShadowDom&&(r={...r,encapsulation:Ot.Emulated});const o=this.getOrCreateRenderer(t,r);return o instanceof DD?o.applyToHost(t):o instanceof _f&&o.applyStyles(),o}getOrCreateRenderer(t,r){const o=this.rendererByCompId;let i=o.get(r.id);if(!i){const s=this.doc,a=this.ngZone,l=this.eventManager,c=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,d=this.platformIsServer;switch(r.encapsulation){case Ot.Emulated:i=new DD(l,c,r,this.appId,u,s,a,d);break;case Ot.ShadowDom:return new tP(l,c,t,r,s,a,this.nonce,d);default:i=new _f(l,c,r,u,s,a,d)}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(r){return new(r||e)(re(pD),re(mD),re(ks),re(KF),re(lr),re(Vr),re(De),re(ug))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();class vf{constructor(n,t,r,o){this.eventManager=n,this.doc=t,this.ngZone=r,this.platformIsServer=o,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(n,t){return t?this.doc.createElementNS(gf[t]||t,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,t){(CD(n)?n.content:n).appendChild(t)}insertBefore(n,t,r){n&&(CD(n)?n.content:n).insertBefore(t,r)}removeChild(n,t){n&&n.removeChild(t)}selectRootElement(n,t){let r="string"==typeof n?this.doc.querySelector(n):n;if(!r)throw new E(-5104,!1);return t||(r.textContent=""),r}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,r,o){if(o){t=o+":"+t;const i=gf[o];i?n.setAttributeNS(i,t,r):n.setAttribute(t,r)}else n.setAttribute(t,r)}removeAttribute(n,t,r){if(r){const o=gf[r];o?n.removeAttributeNS(o,t):n.removeAttribute(`${r}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,r,o){o&(Nn.DashCase|Nn.Important)?n.style.setProperty(t,r,o&Nn.Important?"important":""):n.style[t]=r}removeStyle(n,t,r){r&Nn.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,r){null!=n&&(n[t]=r)}setValue(n,t){n.nodeValue=t}listen(n,t,r){if("string"==typeof n&&!(n=ki().getGlobalEventTarget(this.doc,n)))throw new Error(`Unsupported event target ${n} for event ${t}`);return this.eventManager.addEventListener(n,t,this.decoratePreventDefault(r))}decoratePreventDefault(n){return t=>{if("__ngUnwrap__"===t)return n;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>n(t)):n(t))&&t.preventDefault()}}}function CD(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class tP extends vf{constructor(n,t,r,o,i,s,a,l){super(n,i,s,l),this.sharedStylesHost=t,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const c=_D(o.id,o.styles);for(const u of c){const d=document.createElement("style");a&&d.setAttribute("nonce",a),d.textContent=u,this.shadowRoot.appendChild(d)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,t){return super.appendChild(this.nodeOrShadowRoot(n),t)}insertBefore(n,t,r){return super.insertBefore(this.nodeOrShadowRoot(n),t,r)}removeChild(n,t){return super.removeChild(this.nodeOrShadowRoot(n),t)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class _f extends vf{constructor(n,t,r,o,i,s,a,l){super(n,i,s,a),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=o,this.styles=l?_D(l,r.styles):r.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class DD extends _f{constructor(n,t,r,o,i,s,a,l){const c=o+"-"+r.id;super(n,t,r,i,s,a,l,c),this.contentAttr=function JF(e){return"_ngcontent-%COMP%".replace(mf,e)}(c),this.hostAttr=function XF(e){return"_nghost-%COMP%".replace(mf,e)}(c)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,t){const r=super.createElement(n,t);return super.setAttribute(r,this.contentAttr,""),r}}let nP=(()=>{class e extends gD{constructor(t){super(t)}supports(t){return!0}addEventListener(t,r,o){return t.addEventListener(r,o,!1),()=>this.removeEventListener(t,r,o)}removeEventListener(t,r,o){return t.removeEventListener(r,o)}static#e=this.\u0275fac=function(r){return new(r||e)(re(lr))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();const wD=["alt","control","meta","shift"],rP={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},oP={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let iP=(()=>{class e extends gD{constructor(t){super(t)}supports(t){return null!=e.parseEventName(t)}addEventListener(t,r,o){const i=e.parseEventName(r),s=e.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ki().onAndCancel(t,i.domEventName,s))}static parseEventName(t){const r=t.toLowerCase().split("."),o=r.shift();if(0===r.length||"keydown"!==o&&"keyup"!==o)return null;const i=e._normalizeKey(r.pop());let s="",a=r.indexOf("code");if(a>-1&&(r.splice(a,1),s="code."),wD.forEach(c=>{const u=r.indexOf(c);u>-1&&(r.splice(u,1),s+=c+".")}),s+=i,0!=r.length||0===i.length)return null;const l={};return l.domEventName=o,l.fullKey=s,l}static matchEventFullKeyCode(t,r){let o=rP[t.key]||t.key,i="";return r.indexOf("code.")>-1&&(o=t.code,i="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),wD.forEach(s=>{s!==o&&(0,oP[s])(t)&&(i+=s+".")}),i+=o,i===r)}static eventCallback(t,r,o){return i=>{e.matchEventFullKeyCode(i,t)&&o.runGuarded(()=>r(i))}}static _normalizeKey(t){return"esc"===t?"escape":t}static#e=this.\u0275fac=function(r){return new(r||e)(re(lr))};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();const cP=aC(fO,"browser",[{provide:Vr,useValue:"browser"},{provide:cg,useValue:function sP(){ff.makeCurrent()},multi:!0},{provide:lr,useFactory:function lP(){return function UE(e){jc=e}(document),document},deps:[]}]),uP=new R(""),ED=[{provide:Fa,useClass:class qF{addToWindow(n){le.getAngularTestability=(r,o=!0)=>{const i=n.findTestabilityInTree(r,o);if(null==i)throw new E(5103,!1);return i},le.getAllAngularTestabilities=()=>n.getAllTestabilities(),le.getAllAngularRootElements=()=>n.getAllRootElements(),le.frameworkStabilizers||(le.frameworkStabilizers=[]),le.frameworkStabilizers.push(r=>{const o=le.getAllAngularTestabilities();let i=o.length;const s=function(){i--,0==i&&r()};o.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,t,r){return null==t?null:n.getTestability(t)??(r?ki().isShadowRoot(t)?this.findTestabilityInTree(n,t.host,!0):this.findTestabilityInTree(n,t.parentElement,!0):null)}},deps:[]},{provide:Yy,useClass:Fd,deps:[De,Pd,Fa]},{provide:Fd,useClass:Fd,deps:[De,Pd,Fa]}],MD=[{provide:rc,useValue:"root"},{provide:Jt,useFactory:function aP(){return new Jt},deps:[]},{provide:hf,useClass:nP,multi:!0,deps:[lr,De,Vr]},{provide:hf,useClass:iP,multi:!0,deps:[lr]},yD,mD,pD,{provide:Tm,useExisting:yD},{provide:class gF{},useClass:WF,deps:[]},[]];let dP=(()=>{class e{constructor(t){}static withServerTransition(t){return{ngModule:e,providers:[{provide:ks,useValue:t.appId}]}}static#e=this.\u0275fac=function(r){return new(r||e)(re(uP,12))};static#t=this.\u0275mod=Un({type:e});static#n=this.\u0275inj=wn({providers:[...MD,...ED],imports:[uF,hO]})}return e})();function ur(e){return this instanceof ur?(this.v=e,this):new ur(e)}function _P(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=function OD(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(i){t[i]=e[i]&&function(s){return new Promise(function(a,l){!function o(i,s,a,l){Promise.resolve(l).then(function(c){i({value:c,done:a})},s)}(a,l,(s=e[i](s)).done,s.value)})}}}const RD=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function FD(e){return $e(e?.then)}function PD(e){return $e(e[Nl])}function kD(e){return Symbol.asyncIterator&&$e(e?.[Symbol.asyncIterator])}function LD(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const VD=function CP(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function HD(e){return $e(e?.[VD])}function BD(e){return function vP(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,r=t.apply(e,n||[]),i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(h){r[h]&&(o[h]=function(p){return new Promise(function(m,y){i.push([h,p,m,y])>1||a(h,p)})})}function a(h,p){try{!function l(h){h.value instanceof ur?Promise.resolve(h.value.v).then(c,u):d(i[0][2],h)}(r[h](p))}catch(m){d(i[0][3],m)}}function c(h){a("next",h)}function u(h){a("throw",h)}function d(h,p){h(p),i.shift(),i.length&&a(i[0][0],i[0][1])}}(this,arguments,function*(){const t=e.getReader();try{for(;;){const{value:r,done:o}=yield ur(t.read());if(o)return yield ur(void 0);yield yield ur(r)}}finally{t.releaseLock()}})}function jD(e){return $e(e?.getReader)}function sl(e){if(e instanceof Mt)return e;if(null!=e){if(PD(e))return function DP(e){return new Mt(n=>{const t=e[Nl]();if($e(t.subscribe))return t.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(RD(e))return function wP(e){return new Mt(n=>{for(let t=0;t{e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,ch)})}(e);if(kD(e))return $D(e);if(HD(e))return function IP(e){return new Mt(n=>{for(const t of e)if(n.next(t),n.closed)return;n.complete()})}(e);if(jD(e))return function EP(e){return $D(BD(e))}(e)}throw LD(e)}function $D(e){return new Mt(n=>{(function MP(e,n){var t,r,o,i;return function gP(e,n,t,r){return new(t||(t=Promise))(function(i,s){function a(u){try{c(r.next(u))}catch(d){s(d)}}function l(u){try{c(r.throw(u))}catch(d){s(d)}}function c(u){u.done?i(u.value):function o(i){return i instanceof t?i:new t(function(s){s(i)})}(u.value).then(a,l)}c((r=r.apply(e,n||[])).next())})}(this,void 0,void 0,function*(){try{for(t=_P(e);!(r=yield t.next()).done;)if(n.next(r.value),n.closed)return}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=t.return)&&(yield i.call(t))}finally{if(o)throw o.error}}n.complete()})})(e,n).catch(t=>n.error(t))})}function dr(e,n,t,r=0,o=!1){const i=n.schedule(function(){t(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function UD(e,n=0){return Al((t,r)=>{t.subscribe(new xl(r,o=>dr(r,e,()=>r.next(o),n),()=>dr(r,e,()=>r.complete(),n),o=>dr(r,e,()=>r.error(o),n)))})}function zD(e,n=0){return Al((t,r)=>{r.add(e.schedule(()=>t.subscribe(r),n))})}function GD(e,n){if(!e)throw new Error("Iterable cannot be null");return new Mt(t=>{dr(t,n,()=>{const r=e[Symbol.asyncIterator]();dr(t,n,()=>{r.next().then(o=>{o.done?t.complete():t.next(o.value)})},0,!0)})})}const{isArray:FP}=Array,{getPrototypeOf:PP,prototype:kP,keys:LP}=Object;const{isArray:jP}=Array;function zP(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}function GP(...e){const n=function BP(e){return $e(function Cf(e){return e[e.length-1]}(e))?e.pop():void 0}(e),{args:t,keys:r}=function VP(e){if(1===e.length){const n=e[0];if(FP(n))return{args:n,keys:null};if(function HP(e){return e&&"object"==typeof e&&PP(e)===kP}(n)){const t=LP(n);return{args:t.map(r=>n[r]),keys:t}}}return{args:e,keys:null}}(e),o=new Mt(i=>{const{length:s}=t;if(!s)return void i.complete();const a=new Array(s);let l=s,c=s;for(let u=0;u{d||(d=!0,c--),a[u]=h},()=>l--,void 0,()=>{(!l||!d)&&(c||i.next(r?zP(r,a):a),i.complete())}))}});return n?o.pipe(function UP(e){return Ol(n=>function $P(e,n){return jP(n)?e(...n):e(n)}(e,n))}(n)):o}let qD=(()=>{class e{constructor(t,r){this._renderer=t,this._elementRef=r,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}static#e=this.\u0275fac=function(r){return new(r||e)(T(Jn),T(Vt))};static#t=this.\u0275dir=U({type:e})}return e})(),fr=(()=>{class e extends qD{static#e=this.\u0275fac=(()=>{let t;return function(o){return(t||(t=Ke(e)))(o||e)}})();static#t=this.\u0275dir=U({type:e,features:[de]})}return e})();const an=new R(""),qP={provide:an,useExisting:pe(()=>Df),multi:!0};let Df=(()=>{class e extends fr{writeValue(t){this.setProperty("checked",t)}static#e=this.\u0275fac=(()=>{let t;return function(o){return(t||(t=Ke(e)))(o||e)}})();static#t=this.\u0275dir=U({type:e,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(r,o){1&r&&j("change",function(s){return o.onChange(s.target.checked)})("blur",function(){return o.onTouched()})},features:[we([qP]),de]})}return e})();const WP={provide:an,useExisting:pe(()=>Ui),multi:!0},QP=new R("");let Ui=(()=>{class e extends qD{constructor(t,r,o){super(t,r),this._compositionMode=o,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function ZP(){const e=ki()?ki().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}())}writeValue(t){this.setProperty("value",t??"")}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static#e=this.\u0275fac=function(r){return new(r||e)(T(Jn),T(Vt),T(QP,8))};static#t=this.\u0275dir=U({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(r,o){1&r&&j("input",function(s){return o._handleInput(s.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(s){return o._compositionEnd(s.target.value)})},features:[we([WP]),de]})}return e})();const et=new R(""),kn=new R("");function nw(e){return null!=e}function rw(e){return Pa(e)?function RP(e,n){return n?function OP(e,n){if(null!=e){if(PD(e))return function SP(e,n){return sl(e).pipe(zD(n),UD(n))}(e,n);if(RD(e))return function NP(e,n){return new Mt(t=>{let r=0;return n.schedule(function(){r===e.length?t.complete():(t.next(e[r++]),t.closed||this.schedule())})})}(e,n);if(FD(e))return function TP(e,n){return sl(e).pipe(zD(n),UD(n))}(e,n);if(kD(e))return GD(e,n);if(HD(e))return function AP(e,n){return new Mt(t=>{let r;return dr(t,n,()=>{r=e[VD](),dr(t,n,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){return void t.error(s)}i?t.complete():t.next(o)},0,!0)}),()=>$e(r?.return)&&r.return()})}(e,n);if(jD(e))return function xP(e,n){return GD(BD(e),n)}(e,n)}throw LD(e)}(e,n):sl(e)}(e):e}function ow(e){let n={};return e.forEach(t=>{n=null!=t?{...n,...t}:n}),0===Object.keys(n).length?null:n}function iw(e,n){return n.map(t=>t(e))}function sw(e){return e.map(n=>function KP(e){return!e.validate}(n)?n:t=>n.validate(t))}function wf(e){return null!=e?function aw(e){if(!e)return null;const n=e.filter(nw);return 0==n.length?null:function(t){return ow(iw(t,n))}}(sw(e)):null}function bf(e){return null!=e?function lw(e){if(!e)return null;const n=e.filter(nw);return 0==n.length?null:function(t){return GP(iw(t,n).map(rw)).pipe(Ol(ow))}}(sw(e)):null}function cw(e,n){return null===e?[n]:Array.isArray(e)?[...e,n]:[e,n]}function If(e){return e?Array.isArray(e)?e:[e]:[]}function ll(e,n){return Array.isArray(e)?e.includes(n):e===n}function fw(e,n){const t=If(n);return If(e).forEach(o=>{ll(t,o)||t.push(o)}),t}function hw(e,n){return If(n).filter(t=>!ll(e,t))}class pw{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=wf(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=bf(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control&&this.control.reset(n)}hasError(n,t){return!!this.control&&this.control.hasError(n,t)}getError(n,t){return this.control?this.control.getError(n,t):null}}class st extends pw{get formDirective(){return null}get path(){return null}}class Ln extends pw{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class gw{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}let cl=(()=>{class e extends gw{constructor(t){super(t)}static#e=this.\u0275fac=function(r){return new(r||e)(T(Ln,2))};static#t=this.\u0275dir=U({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(r,o){2&r&&ba("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[de]})}return e})();const zi="VALID",dl="INVALID",yo="PENDING",Gi="DISABLED";function fl(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}class Nf{constructor(n,t){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===zi}get invalid(){return this.status===dl}get pending(){return this.status==yo}get disabled(){return this.status===Gi}get enabled(){return this.status!==Gi}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(fw(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(fw(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(hw(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(hw(n,this._rawAsyncValidators))}hasValidator(n){return ll(this._rawValidators,n)}hasAsyncValidator(n){return ll(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=yo,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Gi,this.errors=null,this._forEachChild(r=>{r.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(r=>r(!0))}enable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=zi,this._forEachChild(r=>{r.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:t}),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===zi||this.status===yo)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Gi:zi}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=yo,this._hasOwnPendingAsyncValidator=!0;const t=rw(this.asyncValidator(this));this._asyncValidationSubscription=t.subscribe(r=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(r,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,t={}){this.errors=n,this._updateControlsErrors(!1!==t.emitEvent)}get(n){let t=n;return null==t||(Array.isArray(t)||(t=t.split(".")),0===t.length)?null:t.reduce((r,o)=>r&&r._find(o),this)}getError(n,t){const r=t?this.get(t):this;return r&&r.errors?r.errors[n]:null}hasError(n,t){return!!this.getError(n,t)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new Ae,this.statusChanges=new Ae}_calculateStatus(){return this._allControlsDisabled()?Gi:this.errors?dl:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(yo)?yo:this._anyControlsHaveStatus(dl)?dl:zi}_anyControlsHaveStatus(n){return this._anyControls(t=>t.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){fl(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function nk(e){return Array.isArray(e)?wf(e):e||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function rk(e){return Array.isArray(e)?bf(e):e||null}(this._rawAsyncValidators)}}const Co=new R("CallSetDisabledState",{providedIn:"root",factory:()=>hl}),hl="always";function qi(e,n,t=hl){(function xf(e,n){const t=function uw(e){return e._rawValidators}(e);null!==n.validator?e.setValidators(cw(t,n.validator)):"function"==typeof t&&e.setValidators([t]);const r=function dw(e){return e._rawAsyncValidators}(e);null!==n.asyncValidator?e.setAsyncValidators(cw(r,n.asyncValidator)):"function"==typeof r&&e.setAsyncValidators([r]);const o=()=>e.updateValueAndValidity();ml(n._rawValidators,o),ml(n._rawAsyncValidators,o)})(e,n),n.valueAccessor.writeValue(e.value),(e.disabled||"always"===t)&&n.valueAccessor.setDisabledState?.(e.disabled),function sk(e,n){n.valueAccessor.registerOnChange(t=>{e._pendingValue=t,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&yw(e,n)})}(e,n),function lk(e,n){const t=(r,o)=>{n.valueAccessor.writeValue(r),o&&n.viewToModelUpdate(r)};e.registerOnChange(t),n._registerOnDestroy(()=>{e._unregisterOnChange(t)})}(e,n),function ak(e,n){n.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&yw(e,n),"submit"!==e.updateOn&&e.markAsTouched()})}(e,n),function ik(e,n){if(n.valueAccessor.setDisabledState){const t=r=>{n.valueAccessor.setDisabledState(r)};e.registerOnDisabledChange(t),n._registerOnDestroy(()=>{e._unregisterOnDisabledChange(t)})}}(e,n)}function ml(e,n){e.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(n)})}function yw(e,n){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function ww(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}function bw(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e}Promise.resolve();const Iw=class extends Nf{constructor(n=null,t,r){super(function Sf(e){return(fl(e)?e.validators:e)||null}(t),function Tf(e,n){return(fl(n)?n.asyncValidators:e)||null}(r,t)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),fl(t)&&(t.nonNullable||t.initialValueIsDefault)&&(this.defaultValue=bw(n)?n.value:n)}setValue(n,t={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(r=>r(this.value,!1!==t.emitViewToModelChange)),this.updateValueAndValidity(t)}patchValue(n,t={}){this.setValue(n,t)}reset(n=this.defaultValue,t={}){this._applyFormState(n),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){ww(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){ww(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){bw(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},mk={provide:Ln,useExisting:pe(()=>Zi)},Sw=Promise.resolve();let Zi=(()=>{class e extends Ln{constructor(t,r,o,i,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this.control=new Iw,this._registered=!1,this.name="",this.update=new Ae,this._parent=t,this._setValidators(r),this._setAsyncValidators(o),this.valueAccessor=function Ff(e,n){if(!n)return null;let t,r,o;return Array.isArray(n),n.forEach(i=>{i.constructor===Ui?t=i:function dk(e){return Object.getPrototypeOf(e.constructor)===fr}(i)?r=i:o=i}),o||r||t||null}(0,i)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){const r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),function Rf(e,n){if(!e.hasOwnProperty("model"))return!1;const t=e.model;return!!t.isFirstChange()||!Object.is(n,t.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){qi(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(t){Sw.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){const r=t.isDisabled.currentValue,o=0!==r&&function Qd(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}(r);Sw.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?function pl(e,n){return[...n.path,e]}(t,this._parent):[t]}static#e=this.\u0275fac=function(r){return new(r||e)(T(st,9),T(et,10),T(kn,10),T(an,10),T(jd,8),T(Co,8))};static#t=this.\u0275dir=U({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[Ee.None,"disabled","isDisabled"],model:[Ee.None,"ngModel","model"],options:[Ee.None,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[we([mk]),de,fn]})}return e})();const Dk={provide:an,useExisting:pe(()=>kf),multi:!0};let kf=(()=>{class e extends fr{writeValue(t){this.setProperty("value",parseFloat(t))}registerOnChange(t){this.onChange=r=>{t(""==r?null:parseFloat(r))}}static#e=this.\u0275fac=(()=>{let t;return function(o){return(t||(t=Ke(e)))(o||e)}})();static#t=this.\u0275dir=U({type:e,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(r,o){1&r&&j("change",function(s){return o.onChange(s.target.value)})("input",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},features:[we([Dk]),de]})}return e})();const Sk={provide:an,useExisting:pe(()=>Qi),multi:!0};function Fw(e,n){return null==e?`${n}`:(n&&"object"==typeof n&&(n="Object"),`${e}: ${n}`.slice(0,50))}let Qi=(()=>{class e extends fr{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(t){this._compareWith=t}writeValue(t){this.value=t;const o=Fw(this._getOptionId(t),t);this.setProperty("value",o)}registerOnChange(t){this.onChange=r=>{this.value=this._getOptionValue(r),t(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const r of this._optionMap.keys())if(this._compareWith(this._optionMap.get(r),t))return r;return null}_getOptionValue(t){const r=function Tk(e){return e.split(":")[0]}(t);return this._optionMap.has(r)?this._optionMap.get(r):t}static#e=this.\u0275fac=(()=>{let t;return function(o){return(t||(t=Ke(e)))(o||e)}})();static#t=this.\u0275dir=U({type:e,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(r,o){1&r&&j("change",function(s){return o.onChange(s.target.value)})("blur",function(){return o.onTouched()})},inputs:{compareWith:"compareWith"},features:[we([Sk]),de]})}return e})(),Bf=(()=>{class e{constructor(t,r,o){this._element=t,this._renderer=r,this._select=o,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(Fw(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static#e=this.\u0275fac=function(r){return new(r||e)(T(Vt),T(Jn),T(Qi,9))};static#t=this.\u0275dir=U({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}return e})();const Nk={provide:an,useExisting:pe(()=>jf),multi:!0};function Pw(e,n){return null==e?`${n}`:("string"==typeof n&&(n=`'${n}'`),n&&"object"==typeof n&&(n="Object"),`${e}: ${n}`.slice(0,50))}let jf=(()=>{class e extends fr{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(t){this._compareWith=t}writeValue(t){let r;if(this.value=t,Array.isArray(t)){const o=t.map(i=>this._getOptionId(i));r=(i,s)=>{i._setSelected(o.indexOf(s.toString())>-1)}}else r=(o,i)=>{o._setSelected(!1)};this._optionMap.forEach(r)}registerOnChange(t){this.onChange=r=>{const o=[],i=r.selectedOptions;if(void 0!==i){const s=i;for(let a=0;a{let t;return function(o){return(t||(t=Ke(e)))(o||e)}})();static#t=this.\u0275dir=U({type:e,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(r,o){1&r&&j("change",function(s){return o.onChange(s.target)})("blur",function(){return o.onTouched()})},inputs:{compareWith:"compareWith"},features:[we([Nk]),de]})}return e})(),$f=(()=>{class e{constructor(t,r,o){this._element=t,this._renderer=r,this._select=o,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(Pw(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(Pw(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static#e=this.\u0275fac=function(r){return new(r||e)(T(Vt),T(Jn),T(jf,9))};static#t=this.\u0275dir=U({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}return e})(),Hk=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Un({type:e});static#n=this.\u0275inj=wn({})}return e})(),jk=(()=>{class e{static withConfig(t){return{ngModule:e,providers:[{provide:Co,useValue:t.callSetDisabledState??hl}]}}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Un({type:e});static#n=this.\u0275inj=wn({imports:[Hk]})}return e})();class Gw{constructor(){this.riskHotspotsSettings=null,this.coverageInfoSettings=null}}class $k{constructor(){this.showLineCoverage=!0,this.showBranchCoverage=!0,this.showMethodCoverage=!0,this.visibleMetrics=[],this.groupingMaximum=0,this.grouping=0,this.historyComparisionDate="",this.historyComparisionType="",this.filter="",this.sortBy="name",this.sortOrder="asc",this.collapseStates=[]}}class Uk{constructor(n){this.et="",this.et=n.et,this.cl=n.cl,this.ucl=n.ucl,this.cal=n.cal,this.tl=n.tl,this.lcq=n.lcq,this.cb=n.cb,this.tb=n.tb,this.bcq=n.bcq,this.cm=n.cm,this.tm=n.tm,this.mcq=n.mcq}get coverageRatioText(){return 0===this.tl?"-":this.cl+"/"+this.cal}get branchCoverageRatioText(){return 0===this.tb?"-":this.cb+"/"+this.tb}get methodCoverageRatioText(){return 0===this.tm?"-":this.cm+"/"+this.tm}}class At{static roundNumber(n){return Math.floor(n*Math.pow(10,At.maximumDecimalPlacesForCoverageQuotas))/Math.pow(10,At.maximumDecimalPlacesForCoverageQuotas)}static getNthOrLastIndexOf(n,t,r){let o=0,i=-1,s=-1;for(;o{this.historicCoverages.push(new Uk(r))}),this.metrics=n.metrics}get coverage(){return 0===this.coverableLines?NaN:At.roundNumber(100*this.coveredLines/this.coverableLines)}visible(n,t){if(""!==n&&-1===this.name.toLowerCase().indexOf(n.toLowerCase()))return!1;if(""===t||null===this.currentHistoricCoverage)return!0;if("allChanges"===t){if(this.coveredLines===this.currentHistoricCoverage.cl&&this.uncoveredLines===this.currentHistoricCoverage.ucl&&this.coverableLines===this.currentHistoricCoverage.cal&&this.totalLines===this.currentHistoricCoverage.tl&&this.coveredBranches===this.currentHistoricCoverage.cb&&this.totalBranches===this.currentHistoricCoverage.tb&&this.coveredMethods===this.currentHistoricCoverage.cm&&this.totalMethods===this.currentHistoricCoverage.tm)return!1}else if("lineCoverageIncreaseOnly"===t){let r=this.coverage;if(isNaN(r)||r<=this.currentHistoricCoverage.lcq)return!1}else if("lineCoverageDecreaseOnly"===t){let r=this.coverage;if(isNaN(r)||r>=this.currentHistoricCoverage.lcq)return!1}else if("branchCoverageIncreaseOnly"===t){let r=this.branchCoverage;if(isNaN(r)||r<=this.currentHistoricCoverage.bcq)return!1}else if("branchCoverageDecreaseOnly"===t){let r=this.branchCoverage;if(isNaN(r)||r>=this.currentHistoricCoverage.bcq)return!1}else if("methodCoverageIncreaseOnly"===t){let r=this.methodCoverage;if(isNaN(r)||r<=this.currentHistoricCoverage.mcq)return!1}else if("methodCoverageDecreaseOnly"===t){let r=this.methodCoverage;if(isNaN(r)||r>=this.currentHistoricCoverage.mcq)return!1}return!0}updateCurrentHistoricCoverage(n){if(this.currentHistoricCoverage=null,""!==n)for(let t=0;t-1&&null===t}visible(n,t){if(""!==n&&this.name.toLowerCase().indexOf(n.toLowerCase())>-1)return!0;for(let r=0;r{class e{get nativeWindow(){return function zk(){return window}()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Gk=(()=>{class e{constructor(){this.translations={}}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=un({type:e,selectors:[["pro-button"]],inputs:{translations:"translations"},decls:3,vars:1,consts:[["href","https://reportgenerator.io/pro","target","_blank",1,"pro-button","pro-button-tiny",3,"title"]],template:function(r,o){1&r&&(b(0,"\xa0"),C(1,"a",0),b(2,"PRO"),_()),2&r&&(f(),Rn("title",o.translations.methodCoverageProVersion))},encapsulation:2})}return e})();function qk(e,n){if(1&e){const t=Me();C(0,"div",3)(1,"label")(2,"input",4),bt("ngModelChange",function(o){Z(t);const i=v();return Xe(i.showBranchCoverage,o)||(i.showBranchCoverage=o),Q(o)}),j("change",function(){Z(t);const o=v();return Q(o.showBranchCoverageChange.emit(o.showBranchCoverage))}),_(),b(3),_()()}if(2&e){const t=v();f(2),ht("ngModel",t.showBranchCoverage),f(),q(" ",t.translations.branchCoverage,"")}}function Wk(e,n){1&e&&N(0,"pro-button",9),2&e&&g("translations",v().translations)}function Zk(e,n){1&e&&N(0,"pro-button",9),2&e&&g("translations",v(2).translations)}function Qk(e,n){1&e&&(C(0,"a",13),N(1,"i",14),_()),2&e&&g("href",v().$implicit.explanationUrl,Sn)}function Yk(e,n){if(1&e){const t=Me();C(0,"div",3)(1,"label")(2,"input",11),j("change",function(){const o=Z(t).$implicit;return Q(v(2).toggleMetric(o))}),_(),b(3),_(),b(4,"\xa0"),k(5,Qk,2,1,"a",12),_()}if(2&e){const t=n.$implicit,r=v(2);f(2),g("checked",r.isMetricSelected(t))("disabled",!r.methodCoverageAvailable),f(),q(" ",t.name,""),f(2),g("ngIf",t.explanationUrl)}}function Kk(e,n){if(1&e&&(J(0),N(1,"br")(2,"br"),C(3,"b"),b(4),_(),k(5,Zk,1,1,"pro-button",7)(6,Yk,6,4,"div",10),X()),2&e){const t=v();f(4),A(t.translations.metrics),f(),g("ngIf",!t.methodCoverageAvailable),f(),g("ngForOf",t.metrics)}}let Jk=(()=>{class e{constructor(){this.visible=!1,this.visibleChange=new Ae,this.translations={},this.branchCoverageAvailable=!1,this.methodCoverageAvailable=!1,this.metrics=[],this.showLineCoverage=!1,this.showLineCoverageChange=new Ae,this.showBranchCoverage=!1,this.showBranchCoverageChange=new Ae,this.showMethodCoverage=!1,this.showMethodCoverageChange=new Ae,this.visibleMetrics=[],this.visibleMetricsChange=new Ae}isMetricSelected(t){return void 0!==this.visibleMetrics.find(r=>r.name===t.name)}toggleMetric(t){let r=this.visibleMetrics.find(o=>o.name===t.name);r?this.visibleMetrics.splice(this.visibleMetrics.indexOf(r),1):this.visibleMetrics.push(t),this.visibleMetrics=[...this.visibleMetrics],this.visibleMetricsChange.emit(this.visibleMetrics)}close(){this.visible=!1,this.visibleChange.emit(this.visible)}cancelEvent(t){t.stopPropagation()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=un({type:e,selectors:[["popup"]],inputs:{visible:"visible",translations:"translations",branchCoverageAvailable:"branchCoverageAvailable",methodCoverageAvailable:"methodCoverageAvailable",metrics:"metrics",showLineCoverage:"showLineCoverage",showBranchCoverage:"showBranchCoverage",showMethodCoverage:"showMethodCoverage",visibleMetrics:"visibleMetrics"},outputs:{visibleChange:"visibleChange",showLineCoverageChange:"showLineCoverageChange",showBranchCoverageChange:"showBranchCoverageChange",showMethodCoverageChange:"showMethodCoverageChange",visibleMetricsChange:"visibleMetricsChange"},decls:17,vars:9,consts:[[1,"popup-container",3,"click"],[1,"popup",3,"click"],[1,"close",3,"click"],[1,"mt-1"],["type","checkbox",3,"ngModelChange","change","ngModel"],["class","mt-1",4,"ngIf"],["type","checkbox",3,"ngModelChange","change","ngModel","disabled"],[3,"translations",4,"ngIf"],[4,"ngIf"],[3,"translations"],["class","mt-1",4,"ngFor","ngForOf"],["type","checkbox",3,"change","checked","disabled"],["target","_blank",3,"href",4,"ngIf"],["target","_blank",3,"href"],[1,"icon-info-circled"]],template:function(r,o){1&r&&(C(0,"div",0),j("click",function(){return o.close()}),C(1,"div",1),j("click",function(s){return o.cancelEvent(s)}),C(2,"div",2),j("click",function(){return o.close()}),b(3,"X"),_(),C(4,"b"),b(5),_(),C(6,"div",3)(7,"label")(8,"input",4),bt("ngModelChange",function(s){return Xe(o.showLineCoverage,s)||(o.showLineCoverage=s),s}),j("change",function(){return o.showLineCoverageChange.emit(o.showLineCoverage)}),_(),b(9),_()(),k(10,qk,4,2,"div",5),C(11,"div",3)(12,"label")(13,"input",6),bt("ngModelChange",function(s){return Xe(o.showMethodCoverage,s)||(o.showMethodCoverage=s),s}),j("change",function(){return o.showMethodCoverageChange.emit(o.showMethodCoverage)}),_(),b(14),_(),k(15,Wk,1,1,"pro-button",7),_(),k(16,Kk,7,3,"ng-container",8),_()()),2&r&&(f(5),A(o.translations.coverageTypes),f(3),ht("ngModel",o.showLineCoverage),f(),q(" ",o.translations.coverage,""),f(),g("ngIf",o.branchCoverageAvailable),f(3),ht("ngModel",o.showMethodCoverage),g("disabled",!o.methodCoverageAvailable),f(),q(" ",o.translations.methodCoverage,""),f(),g("ngIf",!o.methodCoverageAvailable),f(),g("ngIf",o.metrics.length>0))},dependencies:[_o,cr,Df,cl,Zi,Gk],encapsulation:2})}return e})();function Xk(e,n){1&e&&N(0,"td",3)}function e2(e,n){1&e&&N(0,"td"),2&e&&sn("green ",v().greenClass,"")}function t2(e,n){1&e&&N(0,"td"),2&e&&sn("red ",v().redClass,"")}let Ww=(()=>{class e{constructor(){this.grayVisible=!0,this.greenVisible=!1,this.redVisible=!1,this.greenClass="",this.redClass="",this._percentage=NaN}get percentage(){return this._percentage}set percentage(t){this._percentage=t,this.grayVisible=isNaN(t),this.greenVisible=!isNaN(t)&&Math.round(t)>0,this.redVisible=!isNaN(t)&&100-Math.round(t)>0,this.greenClass="covered"+Math.round(t),this.redClass="covered"+(100-Math.round(t))}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=un({type:e,selectors:[["coverage-bar"]],inputs:{percentage:"percentage"},decls:4,vars:3,consts:[[1,"coverage"],["class","gray covered100",4,"ngIf"],[3,"class",4,"ngIf"],[1,"gray","covered100"]],template:function(r,o){1&r&&(C(0,"table",0),k(1,Xk,1,0,"td",1)(2,e2,1,3,"td",2)(3,t2,1,3,"td",2),_()),2&r&&(f(),g("ngIf",o.grayVisible),f(),g("ngIf",o.greenVisible),f(),g("ngIf",o.redVisible))},dependencies:[cr],encapsulation:2,changeDetection:0})}return e})();const n2=["codeelement-row",""],r2=(e,n)=>({"icon-plus":e,"icon-minus":n});function o2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.coveredLines)}}function i2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.uncoveredLines)}}function s2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.coverableLines)}}function a2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.totalLines)}}function l2(e,n){if(1&e&&(C(0,"th",6),b(1),_()),2&e){const t=v();g("title",t.element.coverageRatioText),f(),A(t.element.coveragePercentage)}}function c2(e,n){if(1&e&&(C(0,"th",5),N(1,"coverage-bar",7),_()),2&e){const t=v();f(),g("percentage",t.element.coverage)}}function u2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.coveredBranches)}}function d2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.totalBranches)}}function f2(e,n){if(1&e&&(C(0,"th",6),b(1),_()),2&e){const t=v();g("title",t.element.branchCoverageRatioText),f(),A(t.element.branchCoveragePercentage)}}function h2(e,n){if(1&e&&(C(0,"th",5),N(1,"coverage-bar",7),_()),2&e){const t=v();f(),g("percentage",t.element.branchCoverage)}}function p2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.coveredMethods)}}function g2(e,n){if(1&e&&(C(0,"th",5),b(1),_()),2&e){const t=v();f(),A(t.element.totalMethods)}}function m2(e,n){if(1&e&&(C(0,"th",6),b(1),_()),2&e){const t=v();g("title",t.element.methodCoverageRatioText),f(),A(t.element.methodCoveragePercentage)}}function v2(e,n){if(1&e&&(C(0,"th",5),N(1,"coverage-bar",7),_()),2&e){const t=v();f(),g("percentage",t.element.methodCoverage)}}function _2(e,n){1&e&&N(0,"th",5)}let y2=(()=>{class e{constructor(){this.collapsed=!1,this.lineCoverageAvailable=!1,this.branchCoverageAvailable=!1,this.methodCoverageAvailable=!1,this.visibleMetrics=[]}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=un({type:e,selectors:[["","codeelement-row",""]],inputs:{element:"element",collapsed:"collapsed",lineCoverageAvailable:"lineCoverageAvailable",branchCoverageAvailable:"branchCoverageAvailable",methodCoverageAvailable:"methodCoverageAvailable",visibleMetrics:"visibleMetrics"},attrs:n2,decls:19,vars:20,consts:[["href","#",3,"click"],[3,"ngClass"],["class","right",4,"ngIf"],["class","right",3,"title",4,"ngIf"],["class","right",4,"ngFor","ngForOf"],[1,"right"],[1,"right",3,"title"],[3,"percentage"]],template:function(r,o){1&r&&(C(0,"th")(1,"a",0),j("click",function(s){return o.element.toggleCollapse(s)}),N(2,"i",1),b(3),_()(),k(4,o2,2,1,"th",2)(5,i2,2,1,"th",2)(6,s2,2,1,"th",2)(7,a2,2,1,"th",2)(8,l2,2,2,"th",3)(9,c2,2,1,"th",2)(10,u2,2,1,"th",2)(11,d2,2,1,"th",2)(12,f2,2,2,"th",3)(13,h2,2,1,"th",2)(14,p2,2,1,"th",2)(15,g2,2,1,"th",2)(16,m2,2,2,"th",3)(17,v2,2,1,"th",2)(18,_2,1,0,"th",4)),2&r&&(f(2),g("ngClass",Td(17,r2,o.element.collapsed,!o.element.collapsed)),f(),q(" ",o.element.name,""),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.lineCoverageAvailable),f(),g("ngIf",o.branchCoverageAvailable),f(),g("ngIf",o.branchCoverageAvailable),f(),g("ngIf",o.branchCoverageAvailable),f(),g("ngIf",o.branchCoverageAvailable),f(),g("ngIf",o.methodCoverageAvailable),f(),g("ngIf",o.methodCoverageAvailable),f(),g("ngIf",o.methodCoverageAvailable),f(),g("ngIf",o.methodCoverageAvailable),f(),g("ngForOf",o.visibleMetrics))},dependencies:[Vi,_o,cr,Ww],encapsulation:2,changeDetection:0})}return e})();const C2=["coverage-history-chart",""];let D2=(()=>{class e{constructor(){this.path=null,this._historicCoverages=[]}get historicCoverages(){return this._historicCoverages}set historicCoverages(t){if(this._historicCoverages=t,t.length>1){let r="";for(let o=0;o({historiccoverageoffset:e});function b2(e,n){if(1&e&&(C(0,"a",5),b(1),_()),2&e){const t=v();g("href",t.clazz.reportPath,Sn),f(),A(t.clazz.name)}}function I2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v();f(),A(t.clazz.name)}}function E2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.coveredLines,t.clazz.currentHistoricCoverage.cl),""),f(),q(" ",t.clazz.coveredLines," "),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),q(" ",t.clazz.currentHistoricCoverage.cl," ")}}function M2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.coveredLines," ")}}function S2(e,n){if(1&e&&(C(0,"td",6),k(1,E2,5,6,"ng-container",1)(2,M2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function T2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.currentHistoricCoverage.ucl,t.clazz.uncoveredLines),""),f(),q(" ",t.clazz.uncoveredLines," "),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),q(" ",t.clazz.currentHistoricCoverage.ucl," ")}}function N2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.uncoveredLines," ")}}function A2(e,n){if(1&e&&(C(0,"td",6),k(1,T2,5,6,"ng-container",1)(2,N2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function x2(e,n){if(1&e&&(J(0),C(1,"div",8),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(2),A(t.clazz.coverableLines),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),A(t.clazz.currentHistoricCoverage.cal)}}function O2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.coverableLines," ")}}function R2(e,n){if(1&e&&(C(0,"td",6),k(1,x2,5,3,"ng-container",1)(2,O2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function F2(e,n){if(1&e&&(J(0),C(1,"div",8),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(2),A(t.clazz.totalLines),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),A(t.clazz.currentHistoricCoverage.tl)}}function P2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.totalLines," ")}}function k2(e,n){if(1&e&&(C(0,"td",6),k(1,F2,5,3,"ng-container",1)(2,P2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function L2(e,n){if(1&e&&N(0,"div",11),2&e){const t=v(2);Rn("title",t.translations.history+": "+t.translations.coverage),g("historicCoverages",t.clazz.lineCoverageHistory)("ngClass",Aa(3,qf,null!==t.clazz.currentHistoricCoverage))}}function V2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.coverage,t.clazz.currentHistoricCoverage.lcq),""),f(),q(" ",t.clazz.coveragePercentage," "),f(),g("title",t.clazz.currentHistoricCoverage.et+": "+t.clazz.currentHistoricCoverage.coverageRatioText),f(),q("",t.clazz.currentHistoricCoverage.lcq,"%")}}function H2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.coveragePercentage," ")}}function B2(e,n){if(1&e&&(C(0,"td",9),k(1,L2,1,5,"div",10)(2,V2,5,6,"ng-container",1)(3,H2,2,1,"ng-container",1),_()),2&e){const t=v();g("title",t.clazz.coverageRatioText),f(),g("ngIf",t.clazz.lineCoverageHistory.length>1),f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function j2(e,n){if(1&e&&(C(0,"td",6),N(1,"coverage-bar",12),_()),2&e){const t=v();f(),g("percentage",t.clazz.coverage)}}function $2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.coveredBranches,t.clazz.currentHistoricCoverage.cb),""),f(),q(" ",t.clazz.coveredBranches," "),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),q(" ",t.clazz.currentHistoricCoverage.cb," ")}}function U2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.coveredBranches," ")}}function z2(e,n){if(1&e&&(C(0,"td",6),k(1,$2,5,6,"ng-container",1)(2,U2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function G2(e,n){if(1&e&&(J(0),C(1,"div",8),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(2),A(t.clazz.totalBranches),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),A(t.clazz.currentHistoricCoverage.tb)}}function q2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.totalBranches," ")}}function W2(e,n){if(1&e&&(C(0,"td",6),k(1,G2,5,3,"ng-container",1)(2,q2,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function Z2(e,n){if(1&e&&N(0,"div",14),2&e){const t=v(2);Rn("title",t.translations.history+": "+t.translations.branchCoverage),g("historicCoverages",t.clazz.branchCoverageHistory)("ngClass",Aa(3,qf,null!==t.clazz.currentHistoricCoverage))}}function Q2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.branchCoverage,t.clazz.currentHistoricCoverage.bcq),""),f(),q(" ",t.clazz.branchCoveragePercentage," "),f(),g("title",t.clazz.currentHistoricCoverage.et+": "+t.clazz.currentHistoricCoverage.branchCoverageRatioText),f(),q("",t.clazz.currentHistoricCoverage.bcq,"%")}}function Y2(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.branchCoveragePercentage," ")}}function K2(e,n){if(1&e&&(C(0,"td",9),k(1,Z2,1,5,"div",13)(2,Q2,5,6,"ng-container",1)(3,Y2,2,1,"ng-container",1),_()),2&e){const t=v();g("title",t.clazz.branchCoverageRatioText),f(),g("ngIf",t.clazz.branchCoverageHistory.length>1),f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function J2(e,n){if(1&e&&(C(0,"td",6),N(1,"coverage-bar",12),_()),2&e){const t=v();f(),g("percentage",t.clazz.branchCoverage)}}function X2(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.coveredMethods,t.clazz.currentHistoricCoverage.cm),""),f(),q(" ",t.clazz.coveredMethods," "),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),q(" ",t.clazz.currentHistoricCoverage.cm," ")}}function eL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.coveredMethods," ")}}function tL(e,n){if(1&e&&(C(0,"td",6),k(1,X2,5,6,"ng-container",1)(2,eL,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function nL(e,n){if(1&e&&(J(0),C(1,"div",8),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(2),A(t.clazz.totalMethods),f(),g("title",t.clazz.currentHistoricCoverage.et),f(),A(t.clazz.currentHistoricCoverage.tm)}}function rL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.totalMethods," ")}}function oL(e,n){if(1&e&&(C(0,"td",6),k(1,nL,5,3,"ng-container",1)(2,rL,2,1,"ng-container",1),_()),2&e){const t=v();f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function iL(e,n){if(1&e&&N(0,"div",16),2&e){const t=v(2);Rn("title",t.translations.history+": "+t.translations.methodCoverage),g("historicCoverages",t.clazz.methodCoverageHistory)("ngClass",Aa(3,qf,null!==t.clazz.currentHistoricCoverage))}}function sL(e,n){if(1&e&&(J(0),C(1,"div"),b(2),_(),C(3,"div",7),b(4),_(),X()),2&e){const t=v(2);f(),sn("currenthistory ",t.getClassName(t.clazz.methodCoverage,t.clazz.currentHistoricCoverage.mcq),""),f(),q(" ",t.clazz.methodCoveragePercentage," "),f(),g("title",t.clazz.currentHistoricCoverage.et+": "+t.clazz.currentHistoricCoverage.methodCoverageRatioText),f(),q("",t.clazz.currentHistoricCoverage.mcq,"%")}}function aL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),q(" ",t.clazz.methodCoveragePercentage," ")}}function lL(e,n){if(1&e&&(C(0,"td",9),k(1,iL,1,5,"div",15)(2,sL,5,6,"ng-container",1)(3,aL,2,1,"ng-container",1),_()),2&e){const t=v();g("title",t.clazz.methodCoverageRatioText),f(),g("ngIf",t.clazz.methodCoverageHistory.length>1),f(),g("ngIf",null!==t.clazz.currentHistoricCoverage),f(),g("ngIf",null===t.clazz.currentHistoricCoverage)}}function cL(e,n){if(1&e&&(C(0,"td",6),N(1,"coverage-bar",12),_()),2&e){const t=v();f(),g("percentage",t.clazz.methodCoverage)}}function uL(e,n){if(1&e&&(C(0,"td",6),b(1),_()),2&e){const t=n.$implicit,r=v();f(),A(r.clazz.metrics[t.abbreviation])}}let dL=(()=>{class e{constructor(){this.translations={},this.lineCoverageAvailable=!1,this.branchCoverageAvailable=!1,this.methodCoverageAvailable=!1,this.visibleMetrics=[],this.historyComparisionDate=""}getClassName(t,r){return t>r?"lightgreen":t({"icon-up-dir_active":e,"icon-down-dir_active":n,"icon-down-dir":t});function fL(e,n){if(1&e){const t=Me();C(0,"popup",29),bt("visibleChange",function(o){Z(t);const i=v(2);return Xe(i.popupVisible,o)||(i.popupVisible=o),Q(o)})("showLineCoverageChange",function(o){Z(t);const i=v(2);return Xe(i.settings.showLineCoverage,o)||(i.settings.showLineCoverage=o),Q(o)})("showBranchCoverageChange",function(o){Z(t);const i=v(2);return Xe(i.settings.showBranchCoverage,o)||(i.settings.showBranchCoverage=o),Q(o)})("showMethodCoverageChange",function(o){Z(t);const i=v(2);return Xe(i.settings.showMethodCoverage,o)||(i.settings.showMethodCoverage=o),Q(o)})("visibleMetricsChange",function(o){Z(t);const i=v(2);return Xe(i.settings.visibleMetrics,o)||(i.settings.visibleMetrics=o),Q(o)}),_()}if(2&e){const t=v(2);ht("visible",t.popupVisible),g("translations",t.translations)("branchCoverageAvailable",t.branchCoverageAvailable)("methodCoverageAvailable",t.methodCoverageAvailable)("metrics",t.metrics),ht("showLineCoverage",t.settings.showLineCoverage)("showBranchCoverage",t.settings.showBranchCoverage)("showMethodCoverage",t.settings.showMethodCoverage)("visibleMetrics",t.settings.visibleMetrics)}}function hL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),A(t.translations.noGrouping)}}function pL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),A(t.translations.byAssembly)}}function gL(e,n){if(1&e&&(J(0),b(1),X()),2&e){const t=v(2);f(),A(t.translations.byNamespace+" "+t.settings.grouping)}}function mL(e,n){if(1&e&&(C(0,"option",33),b(1),_()),2&e){const t=n.$implicit;g("value",t),f(),A(t)}}function vL(e,n){1&e&&N(0,"br")}function _L(e,n){if(1&e&&(C(0,"option",41),b(1),_()),2&e){const t=v(4);f(),q(" ",t.translations.branchCoverageIncreaseOnly," ")}}function yL(e,n){if(1&e&&(C(0,"option",42),b(1),_()),2&e){const t=v(4);f(),q(" ",t.translations.branchCoverageDecreaseOnly," ")}}function CL(e,n){if(1&e&&(C(0,"option",43),b(1),_()),2&e){const t=v(4);f(),q(" ",t.translations.methodCoverageIncreaseOnly," ")}}function DL(e,n){if(1&e&&(C(0,"option",44),b(1),_()),2&e){const t=v(4);f(),q(" ",t.translations.methodCoverageDecreaseOnly," ")}}function wL(e,n){if(1&e){const t=Me();C(0,"div")(1,"select",30),bt("ngModelChange",function(o){Z(t);const i=v(3);return Xe(i.settings.historyComparisionType,o)||(i.settings.historyComparisionType=o),Q(o)}),C(2,"option",31),b(3),_(),C(4,"option",34),b(5),_(),C(6,"option",35),b(7),_(),C(8,"option",36),b(9),_(),k(10,_L,2,1,"option",37)(11,yL,2,1,"option",38)(12,CL,2,1,"option",39)(13,DL,2,1,"option",40),_()()}if(2&e){const t=v(3);f(),ht("ngModel",t.settings.historyComparisionType),f(2),A(t.translations.filter),f(2),A(t.translations.allChanges),f(2),A(t.translations.lineCoverageIncreaseOnly),f(2),A(t.translations.lineCoverageDecreaseOnly),f(),g("ngIf",t.branchCoverageAvailable),f(),g("ngIf",t.branchCoverageAvailable),f(),g("ngIf",t.methodCoverageAvailable),f(),g("ngIf",t.methodCoverageAvailable)}}function bL(e,n){if(1&e){const t=Me();J(0),C(1,"div"),b(2),C(3,"select",30),bt("ngModelChange",function(o){Z(t);const i=v(2);return Xe(i.settings.historyComparisionDate,o)||(i.settings.historyComparisionDate=o),Q(o)}),j("ngModelChange",function(){return Z(t),Q(v(2).updateCurrentHistoricCoverage())}),C(4,"option",31),b(5),_(),k(6,mL,2,2,"option",32),_()(),k(7,vL,1,0,"br",0)(8,wL,14,9,"div",0),X()}if(2&e){const t=v(2);f(2),q(" ",t.translations.compareHistory," "),f(),ht("ngModel",t.settings.historyComparisionDate),f(2),A(t.translations.date),f(),g("ngForOf",t.historicCoverageExecutionTimes),f(),g("ngIf",""!==t.settings.historyComparisionDate),f(),g("ngIf",""!==t.settings.historyComparisionDate)}}function IL(e,n){1&e&&N(0,"col",45)}function EL(e,n){1&e&&N(0,"col",46)}function ML(e,n){1&e&&N(0,"col",47)}function SL(e,n){1&e&&N(0,"col",48)}function TL(e,n){1&e&&N(0,"col",49)}function NL(e,n){1&e&&N(0,"col",50)}function AL(e,n){1&e&&N(0,"col",45)}function xL(e,n){1&e&&N(0,"col",48)}function OL(e,n){1&e&&N(0,"col",49)}function RL(e,n){1&e&&N(0,"col",50)}function FL(e,n){1&e&&N(0,"col",45)}function PL(e,n){1&e&&N(0,"col",48)}function kL(e,n){1&e&&N(0,"col",49)}function LL(e,n){1&e&&N(0,"col",50)}function VL(e,n){1&e&&N(0,"col",50)}function HL(e,n){if(1&e&&(C(0,"th",51),b(1),_()),2&e){const t=v(2);f(),A(t.translations.coverage)}}function BL(e,n){if(1&e&&(C(0,"th",52),b(1),_()),2&e){const t=v(2);f(),A(t.translations.branchCoverage)}}function jL(e,n){if(1&e&&(C(0,"th",52),b(1),_()),2&e){const t=v(2);f(),A(t.translations.methodCoverage)}}function $L(e,n){if(1&e&&(C(0,"th",53),b(1),_()),2&e){const t=v(2);Ht("colspan",t.settings.visibleMetrics.length),f(),A(t.translations.metrics)}}function UL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("covered",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"covered"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"covered"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"covered"!==t.settings.sortBy)),f(),A(t.translations.covered)}}function zL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("uncovered",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"uncovered"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"uncovered"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"uncovered"!==t.settings.sortBy)),f(),A(t.translations.uncovered)}}function GL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("coverable",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"coverable"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"coverable"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"coverable"!==t.settings.sortBy)),f(),A(t.translations.coverable)}}function qL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("total",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"total"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"total"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"total"!==t.settings.sortBy)),f(),A(t.translations.total)}}function WL(e,n){if(1&e){const t=Me();C(0,"th",55)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("coverage",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"coverage"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"coverage"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"coverage"!==t.settings.sortBy)),f(),A(t.translations.percentage)}}function ZL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("covered_branches",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"covered_branches"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"covered_branches"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"covered_branches"!==t.settings.sortBy)),f(),A(t.translations.covered)}}function QL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("total_branches",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"total_branches"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"total_branches"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"total_branches"!==t.settings.sortBy)),f(),A(t.translations.total)}}function YL(e,n){if(1&e){const t=Me();C(0,"th",55)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("branchcoverage",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"branchcoverage"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"branchcoverage"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"branchcoverage"!==t.settings.sortBy)),f(),A(t.translations.percentage)}}function KL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("covered_methods",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"covered_methods"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"covered_methods"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"covered_methods"!==t.settings.sortBy)),f(),A(t.translations.covered)}}function JL(e,n){if(1&e){const t=Me();C(0,"th",54)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("total_methods",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"total_methods"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"total_methods"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"total_methods"!==t.settings.sortBy)),f(),A(t.translations.total)}}function XL(e,n){if(1&e){const t=Me();C(0,"th",55)(1,"a",3),j("click",function(o){return Z(t),Q(v(2).updateSorting("methodcoverage",o))}),N(2,"i",25),b(3),_()()}if(2&e){const t=v(2);f(2),g("ngClass",Ue(2,Et,"methodcoverage"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"methodcoverage"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"methodcoverage"!==t.settings.sortBy)),f(),A(t.translations.percentage)}}function eV(e,n){if(1&e){const t=Me();C(0,"th")(1,"a",3),j("click",function(o){const i=Z(t).$implicit;return Q(v(2).updateSorting(i.abbreviation,o))}),N(2,"i",25),b(3),_(),C(4,"a",56),N(5,"i",57),_()()}if(2&e){const t=n.$implicit,r=v(2);f(2),g("ngClass",Ue(3,Et,r.settings.sortBy===t.abbreviation&&"desc"===r.settings.sortOrder,r.settings.sortBy===t.abbreviation&&"asc"===r.settings.sortOrder,r.settings.sortBy!==t.abbreviation)),f(),A(t.name),f(),Rn("href",t.explanationUrl,Sn)}}function tV(e,n){if(1&e&&N(0,"tr",59),2&e){const t=v().$implicit,r=v(2);g("element",t)("collapsed",t.collapsed)("lineCoverageAvailable",r.settings.showLineCoverage)("branchCoverageAvailable",r.branchCoverageAvailable&&r.settings.showBranchCoverage)("methodCoverageAvailable",r.methodCoverageAvailable&&r.settings.showMethodCoverage)("visibleMetrics",r.settings.visibleMetrics)}}function nV(e,n){if(1&e&&N(0,"tr",61),2&e){const t=v().$implicit,r=v(3);g("clazz",t)("translations",r.translations)("lineCoverageAvailable",r.settings.showLineCoverage)("branchCoverageAvailable",r.branchCoverageAvailable&&r.settings.showBranchCoverage)("methodCoverageAvailable",r.methodCoverageAvailable&&r.settings.showMethodCoverage)("visibleMetrics",r.settings.visibleMetrics)("historyComparisionDate",r.settings.historyComparisionDate)}}function rV(e,n){if(1&e&&(J(0),k(1,nV,1,7,"tr",60),X()),2&e){const t=n.$implicit,r=v().$implicit,o=v(2);f(),g("ngIf",!r.collapsed&&t.visible(o.settings.filter,o.settings.historyComparisionType))}}function oV(e,n){if(1&e&&N(0,"tr",64),2&e){const t=v().$implicit,r=v(5);g("clazz",t)("translations",r.translations)("lineCoverageAvailable",r.settings.showLineCoverage)("branchCoverageAvailable",r.branchCoverageAvailable&&r.settings.showBranchCoverage)("methodCoverageAvailable",r.methodCoverageAvailable&&r.settings.showMethodCoverage)("visibleMetrics",r.settings.visibleMetrics)("historyComparisionDate",r.settings.historyComparisionDate)}}function iV(e,n){if(1&e&&(J(0),k(1,oV,1,7,"tr",63),X()),2&e){const t=n.$implicit,r=v(2).$implicit,o=v(3);f(),g("ngIf",!r.collapsed&&t.visible(o.settings.filter,o.settings.historyComparisionType))}}function sV(e,n){if(1&e&&(J(0),N(1,"tr",62),k(2,iV,2,1,"ng-container",28),X()),2&e){const t=v().$implicit,r=v(3);f(),g("element",t)("collapsed",t.collapsed)("lineCoverageAvailable",r.settings.showLineCoverage)("branchCoverageAvailable",r.branchCoverageAvailable&&r.settings.showBranchCoverage)("methodCoverageAvailable",r.methodCoverageAvailable&&r.settings.showMethodCoverage)("visibleMetrics",r.settings.visibleMetrics),f(),g("ngForOf",t.classes)}}function aV(e,n){if(1&e&&(J(0),k(1,sV,3,7,"ng-container",0),X()),2&e){const t=n.$implicit,r=v().$implicit,o=v(2);f(),g("ngIf",!r.collapsed&&t.visible(o.settings.filter,o.settings.historyComparisionType))}}function lV(e,n){if(1&e&&(J(0),k(1,tV,1,6,"tr",58)(2,rV,2,1,"ng-container",28)(3,aV,2,1,"ng-container",28),X()),2&e){const t=n.$implicit,r=v(2);f(),g("ngIf",t.visible(r.settings.filter,r.settings.historyComparisionType)),f(),g("ngForOf",t.classes),f(),g("ngForOf",t.subElements)}}function cV(e,n){if(1&e){const t=Me();C(0,"div"),k(1,fL,1,9,"popup",1),C(2,"div",2)(3,"div")(4,"a",3),j("click",function(o){return Z(t),Q(v().collapseAll(o))}),b(5),_(),b(6," | "),C(7,"a",3),j("click",function(o){return Z(t),Q(v().expandAll(o))}),b(8),_()(),C(9,"div",4)(10,"span",5),k(11,hL,2,1,"ng-container",0)(12,pL,2,1,"ng-container",0)(13,gL,2,1,"ng-container",0),_(),N(14,"br"),b(15),C(16,"input",6),bt("ngModelChange",function(o){Z(t);const i=v();return Xe(i.settings.grouping,o)||(i.settings.grouping=o),Q(o)}),j("ngModelChange",function(){return Z(t),Q(v().updateCoverageInfo())}),_()(),C(17,"div",4),k(18,bL,9,6,"ng-container",0),_(),C(19,"div",7)(20,"div")(21,"button",8),j("click",function(){return Z(t),Q(v().popupVisible=!0)}),N(22,"i",9),b(23),_()(),N(24,"br"),C(25,"div")(26,"span"),b(27),_(),C(28,"input",10),bt("ngModelChange",function(o){Z(t);const i=v();return Xe(i.settings.filter,o)||(i.settings.filter=o),Q(o)}),_()()()(),C(29,"div",11)(30,"table",12)(31,"colgroup"),N(32,"col",13),k(33,IL,1,0,"col",14)(34,EL,1,0,"col",15)(35,ML,1,0,"col",16)(36,SL,1,0,"col",17)(37,TL,1,0,"col",18)(38,NL,1,0,"col",19)(39,AL,1,0,"col",14)(40,xL,1,0,"col",17)(41,OL,1,0,"col",18)(42,RL,1,0,"col",19)(43,FL,1,0,"col",14)(44,PL,1,0,"col",17)(45,kL,1,0,"col",18)(46,LL,1,0,"col",19)(47,VL,1,0,"col",20),_(),C(48,"thead")(49,"tr",21),N(50,"th"),k(51,HL,2,1,"th",22)(52,BL,2,1,"th",23)(53,jL,2,1,"th",23)(54,$L,2,2,"th",24),_(),C(55,"tr")(56,"th")(57,"a",3),j("click",function(o){return Z(t),Q(v().updateSorting("name",o))}),N(58,"i",25),b(59),_()(),k(60,UL,4,6,"th",26)(61,zL,4,6,"th",26)(62,GL,4,6,"th",26)(63,qL,4,6,"th",26)(64,WL,4,6,"th",27)(65,ZL,4,6,"th",26)(66,QL,4,6,"th",26)(67,YL,4,6,"th",27)(68,KL,4,6,"th",26)(69,JL,4,6,"th",26)(70,XL,4,6,"th",27)(71,eV,6,7,"th",28),_()(),C(72,"tbody"),k(73,lV,4,3,"ng-container",28),_()()()()}if(2&e){const t=v();f(),g("ngIf",t.popupVisible),f(4),A(t.translations.collapseAll),f(3),A(t.translations.expandAll),f(3),g("ngIf",-1===t.settings.grouping),f(),g("ngIf",0===t.settings.grouping),f(),g("ngIf",t.settings.grouping>0),f(2),q(" ",t.translations.grouping," "),f(),g("max",t.settings.groupingMaximum),ht("ngModel",t.settings.grouping),f(2),g("ngIf",t.historicCoverageExecutionTimes.length>0),f(5),A(t.metrics.length>0?t.translations.selectCoverageTypesAndMetrics:t.translations.selectCoverageTypes),f(4),q("",t.translations.filter," "),f(),ht("ngModel",t.settings.filter),f(5),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngForOf",t.settings.visibleMetrics),f(4),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.settings.visibleMetrics.length>0),f(4),g("ngClass",Ue(47,Et,"name"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"name"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"name"!==t.settings.sortBy)),f(),A(t.translations.name),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.settings.showLineCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.branchCoverageAvailable&&t.settings.showBranchCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngIf",t.methodCoverageAvailable&&t.settings.showMethodCoverage),f(),g("ngForOf",t.settings.visibleMetrics),f(2),g("ngForOf",t.codeElements)}}let uV=(()=>{class e{constructor(t){this.queryString="",this.historicCoverageExecutionTimes=[],this.branchCoverageAvailable=!1,this.methodCoverageAvailable=!1,this.metrics=[],this.codeElements=[],this.translations={},this.popupVisible=!1,this.settings=new $k,this.window=t.nativeWindow}ngOnInit(){this.historicCoverageExecutionTimes=this.window.historicCoverageExecutionTimes,this.branchCoverageAvailable=this.window.branchCoverageAvailable,this.methodCoverageAvailable=this.window.methodCoverageAvailable,this.metrics=this.window.metrics,this.translations=this.window.translations,At.maximumDecimalPlacesForCoverageQuotas=this.window.maximumDecimalPlacesForCoverageQuotas;let t=!1;if(void 0!==this.window.history&&void 0!==this.window.history.replaceState&&null!==this.window.history.state&&null!=this.window.history.state.coverageInfoSettings)console.log("Coverage info: Restoring from history",this.window.history.state.coverageInfoSettings),t=!0,this.settings=JSON.parse(JSON.stringify(this.window.history.state.coverageInfoSettings));else{let o=0,i=this.window.assemblies;for(let s=0;s-1&&(this.queryString=window.location.href.substring(r)),this.updateCoverageInfo(),t&&this.restoreCollapseState()}onBeforeUnload(){if(this.saveCollapseState(),void 0!==this.window.history&&void 0!==this.window.history.replaceState){console.log("Coverage info: Updating history",this.settings);let t=new Gw;null!==window.history.state&&(t=JSON.parse(JSON.stringify(this.window.history.state))),t.coverageInfoSettings=JSON.parse(JSON.stringify(this.settings)),window.history.replaceState(t,"")}}updateCoverageInfo(){let t=(new Date).getTime(),r=this.window.assemblies,o=[],i=0;if(0===this.settings.grouping)for(let l=0;l{for(let o=0;o{for(let i=0;it&&(o[i].collapsed=this.settings.collapseStates[t]),t++,r(o[i].subElements)};r(this.codeElements)}static#e=this.\u0275fac=function(r){return new(r||e)(T(Gf))};static#t=this.\u0275cmp=un({type:e,selectors:[["coverage-info"]],hostBindings:function(r,o){1&r&&j("beforeunload",function(){return o.onBeforeUnload()},0,lu)},decls:1,vars:1,consts:[[4,"ngIf"],[3,"visible","translations","branchCoverageAvailable","methodCoverageAvailable","metrics","showLineCoverage","showBranchCoverage","showMethodCoverage","visibleMetrics","visibleChange","showLineCoverageChange","showBranchCoverageChange","showMethodCoverageChange","visibleMetricsChange",4,"ngIf"],[1,"customizebox"],["href","#",3,"click"],[1,"col-center"],[1,"slider-label"],["type","range","step","1","min","-1",3,"ngModelChange","max","ngModel"],[1,"col-right"],["type","button",3,"click"],[1,"icon-cog"],["type","text",3,"ngModelChange","ngModel"],[1,"table-responsive"],[1,"overview","table-fixed","stripped"],[1,"column-min-200"],["class","column90",4,"ngIf"],["class","column105",4,"ngIf"],["class","column100",4,"ngIf"],["class","column70",4,"ngIf"],["class","column98",4,"ngIf"],["class","column112",4,"ngIf"],["class","column112",4,"ngFor","ngForOf"],[1,"header"],["class","center","colspan","6",4,"ngIf"],["class","center","colspan","4",4,"ngIf"],["class","center",4,"ngIf"],[1,"icon-down-dir",3,"ngClass"],["class","right",4,"ngIf"],["class","center","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],[3,"visibleChange","showLineCoverageChange","showBranchCoverageChange","showMethodCoverageChange","visibleMetricsChange","visible","translations","branchCoverageAvailable","methodCoverageAvailable","metrics","showLineCoverage","showBranchCoverage","showMethodCoverage","visibleMetrics"],[3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["value","allChanges"],["value","lineCoverageIncreaseOnly"],["value","lineCoverageDecreaseOnly"],["value","branchCoverageIncreaseOnly",4,"ngIf"],["value","branchCoverageDecreaseOnly",4,"ngIf"],["value","methodCoverageIncreaseOnly",4,"ngIf"],["value","methodCoverageDecreaseOnly",4,"ngIf"],["value","branchCoverageIncreaseOnly"],["value","branchCoverageDecreaseOnly"],["value","methodCoverageIncreaseOnly"],["value","methodCoverageDecreaseOnly"],[1,"column90"],[1,"column105"],[1,"column100"],[1,"column70"],[1,"column98"],[1,"column112"],["colspan","6",1,"center"],["colspan","4",1,"center"],[1,"center"],[1,"right"],["colspan","2",1,"center"],["target","_blank",3,"href"],[1,"icon-info-circled"],["codeelement-row","",3,"element","collapsed","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics",4,"ngIf"],["codeelement-row","",3,"element","collapsed","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics"],["class-row","",3,"clazz","translations","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics","historyComparisionDate",4,"ngIf"],["class-row","",3,"clazz","translations","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics","historyComparisionDate"],["codeelement-row","",1,"namespace",3,"element","collapsed","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics"],["class","namespace","class-row","",3,"clazz","translations","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics","historyComparisionDate",4,"ngIf"],["class-row","",1,"namespace",3,"clazz","translations","lineCoverageAvailable","branchCoverageAvailable","methodCoverageAvailable","visibleMetrics","historyComparisionDate"]],template:function(r,o){1&r&&k(0,cV,74,51,"div",0),2&r&&g("ngIf",o.codeElements.length>0)},dependencies:[Vi,_o,cr,Bf,$f,Ui,kf,Qi,cl,Zi,Jk,y2,dL],encapsulation:2})}return e})();class dV{constructor(){this.assembly="",this.numberOfRiskHotspots=10,this.filter="",this.sortBy="",this.sortOrder="asc"}}const _l=(e,n,t)=>({"icon-up-dir_active":e,"icon-down-dir_active":n,"icon-down-dir":t}),fV=(e,n)=>({lightred:e,lightgreen:n});function hV(e,n){if(1&e&&(C(0,"option",16),b(1),_()),2&e){const t=n.$implicit;g("value",t),f(),A(t)}}function pV(e,n){if(1&e&&(C(0,"span"),b(1),_()),2&e){const t=v(2);f(),A(t.translations.top)}}function gV(e,n){1&e&&(C(0,"option",23),b(1,"20"),_())}function mV(e,n){1&e&&(C(0,"option",24),b(1,"50"),_())}function vV(e,n){1&e&&(C(0,"option",25),b(1,"100"),_())}function _V(e,n){if(1&e&&(C(0,"option",16),b(1),_()),2&e){const t=v(3);g("value",t.totalNumberOfRiskHotspots),f(),A(t.translations.all)}}function yV(e,n){if(1&e){const t=Me();C(0,"select",17),bt("ngModelChange",function(o){Z(t);const i=v(2);return Xe(i.settings.numberOfRiskHotspots,o)||(i.settings.numberOfRiskHotspots=o),Q(o)}),C(1,"option",18),b(2,"10"),_(),k(3,gV,2,0,"option",19)(4,mV,2,0,"option",20)(5,vV,2,0,"option",21)(6,_V,2,2,"option",22),_()}if(2&e){const t=v(2);ht("ngModel",t.settings.numberOfRiskHotspots),f(3),g("ngIf",t.totalNumberOfRiskHotspots>10),f(),g("ngIf",t.totalNumberOfRiskHotspots>20),f(),g("ngIf",t.totalNumberOfRiskHotspots>50),f(),g("ngIf",t.totalNumberOfRiskHotspots>100)}}function CV(e,n){1&e&&N(0,"col",26)}function DV(e,n){if(1&e){const t=Me();C(0,"th")(1,"a",13),j("click",function(o){const i=Z(t).index;return Q(v(2).updateSorting(""+i,o))}),N(2,"i",14),b(3),_(),C(4,"a",27),N(5,"i",28),_()()}if(2&e){const t=n.$implicit,r=n.index,o=v(2);f(2),g("ngClass",Ue(3,_l,o.settings.sortBy===""+r&&"desc"===o.settings.sortOrder,o.settings.sortBy===""+r&&"asc"===o.settings.sortOrder,o.settings.sortBy!==""+r)),f(),A(t.name),f(),Rn("href",t.explanationUrl,Sn)}}function wV(e,n){if(1&e&&(C(0,"td",32),b(1),_()),2&e){const t=n.$implicit;g("ngClass",Td(2,fV,t.exceeded,!t.exceeded)),f(),A(t.value)}}function bV(e,n){if(1&e&&(C(0,"tr")(1,"td"),b(2),_(),C(3,"td")(4,"a",29),b(5),_()(),C(6,"td",30)(7,"a",29),b(8),_()(),k(9,wV,2,5,"td",31),_()),2&e){const t=n.$implicit,r=v(2);f(2),A(t.assembly),f(2),g("href",t.reportPath+r.queryString,Sn),f(),A(t.class),f(),g("title",t.methodName),f(),g("href",t.reportPath+r.queryString+"#file"+t.fileIndex+"_line"+t.line,Sn),f(),q(" ",t.methodShortName," "),f(),g("ngForOf",t.metrics)}}function IV(e,n){if(1&e){const t=Me();C(0,"div")(1,"div",1)(2,"div")(3,"select",2),bt("ngModelChange",function(o){Z(t);const i=v();return Xe(i.settings.assembly,o)||(i.settings.assembly=o),Q(o)}),j("ngModelChange",function(){return Z(t),Q(v().updateRiskHotpots())}),C(4,"option",3),b(5),_(),k(6,hV,2,2,"option",4),_()(),C(7,"div",5),k(8,pV,2,1,"span",0)(9,yV,7,5,"select",6),_(),N(10,"div",5),C(11,"div",7)(12,"span"),b(13),_(),C(14,"input",8),bt("ngModelChange",function(o){Z(t);const i=v();return Xe(i.settings.filter,o)||(i.settings.filter=o),Q(o)}),j("ngModelChange",function(){return Z(t),Q(v().updateRiskHotpots())}),_()()(),C(15,"div",9)(16,"table",10)(17,"colgroup"),N(18,"col",11)(19,"col",11)(20,"col",11),k(21,CV,1,0,"col",12),_(),C(22,"thead")(23,"tr")(24,"th")(25,"a",13),j("click",function(o){return Z(t),Q(v().updateSorting("assembly",o))}),N(26,"i",14),b(27),_()(),C(28,"th")(29,"a",13),j("click",function(o){return Z(t),Q(v().updateSorting("class",o))}),N(30,"i",14),b(31),_()(),C(32,"th")(33,"a",13),j("click",function(o){return Z(t),Q(v().updateSorting("method",o))}),N(34,"i",14),b(35),_()(),k(36,DV,6,7,"th",15),_()(),C(37,"tbody"),k(38,bV,10,7,"tr",15),function Ny(e,n){const t=K();let r;const o=e+B;t.firstCreatePass?(r=function P1(e,n){if(n)for(let t=n.length-1;t>=0;t--){const r=n[t];if(e===r.name)return r}}(n,t.pipeRegistry),t.data[o]=r,r.onDestroy&&(t.destroyHooks??=[]).push(o,r.onDestroy)):r=t.data[o];const i=r.factory||(r.factory=$n(r.type)),a=at(T);try{const l=Ss(!1),c=i();return Ss(l),function a1(e,n,t,r){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=r}(t,D(),o,c),c}finally{at(a)}}(39,"slice"),_()()()()}if(2&e){const t=v();f(3),ht("ngModel",t.settings.assembly),f(2),A(t.translations.assembly),f(),g("ngForOf",t.assemblies),f(2),g("ngIf",t.totalNumberOfRiskHotspots>10),f(),g("ngIf",t.totalNumberOfRiskHotspots>10),f(4),q("",t.translations.filter," "),f(),ht("ngModel",t.settings.filter),f(7),g("ngForOf",t.riskHotspotMetrics),f(5),g("ngClass",Ue(20,_l,"assembly"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"assembly"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"assembly"!==t.settings.sortBy)),f(),A(t.translations.assembly),f(3),g("ngClass",Ue(24,_l,"class"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"class"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"class"!==t.settings.sortBy)),f(),A(t.translations.class),f(3),g("ngClass",Ue(28,_l,"method"===t.settings.sortBy&&"desc"===t.settings.sortOrder,"method"===t.settings.sortBy&&"asc"===t.settings.sortOrder,"method"!==t.settings.sortBy)),f(),A(t.translations.method),f(),g("ngForOf",t.riskHotspotMetrics),f(2),g("ngForOf",Ay(39,16,t.riskHotspots,0,t.settings.numberOfRiskHotspots))}}let EV=(()=>{class e{constructor(t){this.queryString="",this.riskHotspotMetrics=[],this.riskHotspots=[],this.totalNumberOfRiskHotspots=0,this.assemblies=[],this.translations={},this.settings=new dV,this.window=t.nativeWindow}ngOnInit(){this.riskHotspotMetrics=this.window.riskHotspotMetrics,this.translations=this.window.translations,void 0!==this.window.history&&void 0!==this.window.history.replaceState&&null!==this.window.history.state&&null!=this.window.history.state.riskHotspotsSettings&&(console.log("Risk hotspots: Restoring from history",this.window.history.state.riskHotspotsSettings),this.settings=JSON.parse(JSON.stringify(this.window.history.state.riskHotspotsSettings)));const t=window.location.href.indexOf("?");t>-1&&(this.queryString=window.location.href.substring(t)),this.updateRiskHotpots()}onDonBeforeUnlodad(){if(void 0!==this.window.history&&void 0!==this.window.history.replaceState){console.log("Risk hotspots: Updating history",this.settings);let t=new Gw;null!==window.history.state&&(t=JSON.parse(JSON.stringify(this.window.history.state))),t.riskHotspotsSettings=JSON.parse(JSON.stringify(this.settings)),window.history.replaceState(t,"")}}updateRiskHotpots(){const t=this.window.riskHotspots;if(this.totalNumberOfRiskHotspots=t.length,0===this.assemblies.length){let s=[];for(let a=0;a0)},dependencies:[Vi,_o,cr,Bf,$f,Ui,Qi,cl,Zi,rD],encapsulation:2})}return e})(),MV=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Un({type:e,bootstrap:[EV,uV]});static#n=this.\u0275inj=wn({providers:[Gf],imports:[dP,jk]})}return e})();cP().bootstrapModule(MV).catch(e=>console.error(e))}},wo=>{wo(wo.s=403)}]); \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ActivitySourceHelper.html b/coveragereport/mysqlconnector.dll_ActivitySourceHelper.html new file mode 100644 index 0000000..84b7b40 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ActivitySourceHelper.html @@ -0,0 +1,176 @@ + + + + + + + +MySqlConnector.Utilities.ActivitySourceHelper - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.ActivitySourceHelper
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/ActivitySourceHelper.cs
+
+
+
+
+
+
+
Line coverage
+
+
30%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:6
Uncovered lines:14
Coverable lines:20
Total lines:65
Line coverage:30%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
StartActivity(...)47
SetException(...)017
CopyTags(...)018
ActivitySourceHelper()50
GetVersion()50
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/ActivitySourceHelper.cs

+

File '/_/src/MySqlConnector/Utilities/ActivitySourceHelper.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ArraySegmentHolder_T_.html b/coveragereport/mysqlconnector.dll_ArraySegmentHolder_T_.html new file mode 100644 index 0000000..0c1f9a0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ArraySegmentHolder_T_.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.ArraySegmentHolder<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.ArraySegmentHolder<T>
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/ArraySegmentHolder.cs
+
+
+
+
+
+
+
Line coverage
+
+
57%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:4
Uncovered lines:3
Coverable lines:7
Total lines:21
Line coverage:57.1%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Clear()44
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/ArraySegmentHolder.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/ArraySegmentHolder.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_AuthGSSAPI.html b/coveragereport/mysqlconnector.dll_AuthGSSAPI.html new file mode 100644 index 0000000..d9056c9 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_AuthGSSAPI.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.AuthGSSAPI - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.AuthGSSAPI
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:14
Coverable lines:14
Total lines:235
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
GetServicePrincipalName(...)07
AuthenticateAsync()070
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_AuthenticationMethodSwitchRequestPayload.html b/coveragereport/mysqlconnector.dll_AuthenticationMethodSwitchRequestPayload.html new file mode 100644 index 0000000..1af430c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_AuthenticationMethodSwitchRequestPayload.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.AuthenticationMethodSwitchRequestPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.AuthenticationMethodSwitchRequestPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMethodSwitchRequestPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:13
Coverable lines:13
Total lines:40
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)015
AuthenticationMethodSwitchRequestPayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMethodSwitchRequestPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMethodSwitchRequestPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_AuthenticationMoreDataPayload.html b/coveragereport/mysqlconnector.dll_AuthenticationMoreDataPayload.html new file mode 100644 index 0000000..b1b0f5e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_AuthenticationMoreDataPayload.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.AuthenticationMoreDataPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.AuthenticationMoreDataPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMoreDataPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)07
AuthenticationMoreDataPayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMoreDataPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/AuthenticationMoreDataPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_AuthenticationPlugins.html b/coveragereport/mysqlconnector.dll_AuthenticationPlugins.html new file mode 100644 index 0000000..905e384 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_AuthenticationPlugins.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Authentication.AuthenticationPlugins - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Authentication.AuthenticationPlugins
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Authentication/AuthenticationPlugins.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:40
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
Register(...)012
TryGetPlugin(...)08
AuthenticationPlugins()03
+
+

File(s)

+

/_/src/MySqlConnector/Authentication/AuthenticationPlugins.cs

+

File '/_/src/MySqlConnector/Authentication/AuthenticationPlugins.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_AuthenticationUtility.html b/coveragereport/mysqlconnector.dll_AuthenticationUtility.html new file mode 100644 index 0000000..29488c0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_AuthenticationUtility.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.AuthenticationUtility - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.AuthenticationUtility
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/AuthenticationUtility.cs
+
+
+
+
+
+
+
Line coverage
+
+
43%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:14
Uncovered lines:18
Coverable lines:32
Total lines:108
Line coverage:43.7%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/AuthenticationUtility.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/AuthenticationUtility.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryBooleanColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryBooleanColumnReader.html new file mode 100644 index 0000000..d56906a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryBooleanColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryBooleanColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryBooleanColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryBooleanColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryBooleanColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryBooleanColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryBooleanColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryDateTimeColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryDateTimeColumnReader.html new file mode 100644 index 0000000..8339b14 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryDateTimeColumnReader.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryDateTimeColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryDateTimeColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryDateTimeColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:28
Coverable lines:28
Total lines:62
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
BinaryDateTimeColumnReader(...)05
ReadValue(...)039
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryDateTimeColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryDateTimeColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryDoubleColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryDoubleColumnReader.html new file mode 100644 index 0000000..10fbb45 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryDoubleColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryDoubleColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryDoubleColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryDoubleColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
BinaryDoubleColumnReader()02
ReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryDoubleColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryDoubleColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryFloatColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryFloatColumnReader.html new file mode 100644 index 0000000..2e8d4c9 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryFloatColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryFloatColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryFloatColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryFloatColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
BinaryFloatColumnReader()02
ReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryFloatColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryFloatColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinarySignedInt16ColumnReader.html b/coveragereport/mysqlconnector.dll_BinarySignedInt16ColumnReader.html new file mode 100644 index 0000000..0e595f7 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinarySignedInt16ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinarySignedInt16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinarySignedInt16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinarySignedInt16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinarySignedInt16ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinarySignedInt16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinarySignedInt16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinarySignedInt32ColumnReader.html b/coveragereport/mysqlconnector.dll_BinarySignedInt32ColumnReader.html new file mode 100644 index 0000000..9a3e342 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinarySignedInt32ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinarySignedInt32ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinarySignedInt32ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinarySignedInt32ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinarySignedInt32ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinarySignedInt32ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinarySignedInt32ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinarySignedInt64ColumnReader.html b/coveragereport/mysqlconnector.dll_BinarySignedInt64ColumnReader.html new file mode 100644 index 0000000..a4c97d4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinarySignedInt64ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinarySignedInt64ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinarySignedInt64ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinarySignedInt64ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinarySignedInt64ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinarySignedInt64ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinarySignedInt64ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinarySignedInt8ColumnReader.html b/coveragereport/mysqlconnector.dll_BinarySignedInt8ColumnReader.html new file mode 100644 index 0000000..e7f84cf --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinarySignedInt8ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinarySignedInt8ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinarySignedInt8ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinarySignedInt8ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinarySignedInt8ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinarySignedInt8ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinarySignedInt8ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryTimeColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryTimeColumnReader.html new file mode 100644 index 0000000..a7e376d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryTimeColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryTimeColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryTimeColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryTimeColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:16
Coverable lines:16
Total lines:33
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
BinaryTimeColumnReader()02
ReadValue(...)021
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryTimeColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryTimeColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryUnsignedInt16ColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt16ColumnReader.html new file mode 100644 index 0000000..7d80a3a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt16ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryUnsignedInt16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryUnsignedInt16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryUnsignedInt16ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryUnsignedInt32ColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt32ColumnReader.html new file mode 100644 index 0000000..e7eccd6 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt32ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryUnsignedInt32ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryUnsignedInt32ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt32ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryUnsignedInt32ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt32ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt32ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryUnsignedInt64ColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt64ColumnReader.html new file mode 100644 index 0000000..7f7916b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt64ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryUnsignedInt64ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryUnsignedInt64ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt64ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryUnsignedInt64ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt64ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt64ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryUnsignedInt8ColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt8ColumnReader.html new file mode 100644 index 0000000..e7233b4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryUnsignedInt8ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryUnsignedInt8ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryUnsignedInt8ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt8ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryUnsignedInt8ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt8ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryUnsignedInt8ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BinaryYearColumnReader.html b/coveragereport/mysqlconnector.dll_BinaryYearColumnReader.html new file mode 100644 index 0000000..47e8524 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BinaryYearColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BinaryYearColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BinaryYearColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BinaryYearColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BinaryYearColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BinaryYearColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BinaryYearColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BitColumnReader.html b/coveragereport/mysqlconnector.dll_BitColumnReader.html new file mode 100644 index 0000000..f8ccb72 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BitColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.BitColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BitColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BitColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:11
Coverable lines:11
Total lines:37
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
BitColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)024
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BitColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BitColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BufferedByteReader.html b/coveragereport/mysqlconnector.dll_BufferedByteReader.html new file mode 100644 index 0000000..2c681b8 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BufferedByteReader.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.BufferedByteReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.BufferedByteReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/BufferedByteReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
70%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:17
Uncovered lines:7
Coverable lines:24
Total lines:54
Line coverage:70.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
BufferedByteReader()20
ReadBytesAsync(...)158
ReadBytesAsync()225
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/BufferedByteReader.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/BufferedByteReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ByteArrayReader.html b/coveragereport/mysqlconnector.dll_ByteArrayReader.html new file mode 100644 index 0000000..f686af8 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ByteArrayReader.html @@ -0,0 +1,199 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.ByteArrayReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.ByteArrayReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/ByteArrayReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
73%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:65
Uncovered lines:23
Coverable lines:88
Total lines:180
Line coverage:73.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/ByteArrayReader.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/ByteArrayReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ByteBufferWriter.html b/coveragereport/mysqlconnector.dll_ByteBufferWriter.html new file mode 100644 index 0000000..b3071b4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ByteBufferWriter.html @@ -0,0 +1,220 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.ByteBufferWriter - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.ByteBufferWriter
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs
+
+
+
+
+
+
+
Line coverage
+
+
31%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:39
Uncovered lines:86
Coverable lines:125
Total lines:242
Line coverage:31.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ByteBufferWriterExtensions.html b/coveragereport/mysqlconnector.dll_ByteBufferWriterExtensions.html new file mode 100644 index 0000000..20bbee0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ByteBufferWriterExtensions.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.ByteBufferWriterExtensions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.ByteBufferWriterExtensions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs
+
+
+
+
+
+
+
Line coverage
+
+
47%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:10
Uncovered lines:11
Coverable lines:21
Total lines:294
Line coverage:47.6%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_BytesColumnReader.html b/coveragereport/mysqlconnector.dll_BytesColumnReader.html new file mode 100644 index 0000000..f29e4a4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_BytesColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.BytesColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.BytesColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/BytesColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
BytesColumnReader()02
ReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/BytesColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/BytesColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CachedParameter.html b/coveragereport/mysqlconnector.dll_CachedParameter.html new file mode 100644 index 0000000..8457c78 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CachedParameter.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Core.CachedParameter - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.CachedParameter
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/CachedParameter.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:19
Coverable lines:19
Total lines:26
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
CachedParameter(...)016
+
+

File(s)

+

/_/src/MySqlConnector/Core/CachedParameter.cs

+

File '/_/src/MySqlConnector/Core/CachedParameter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CachedProcedure.html b/coveragereport/mysqlconnector.dll_CachedProcedure.html new file mode 100644 index 0000000..c712f7f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CachedProcedure.html @@ -0,0 +1,180 @@ + + + + + + + +MySqlConnector.Core.CachedProcedure - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.CachedProcedure
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/CachedProcedure.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:155
Coverable lines:155
Total lines:268
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
FillAsync()0190
CachedProcedure(...)02
AlignParamsWithDb(...)048
ParseParameters(...)047
ParseDataType(...)029
CreateCachedParameter(...)06
CachedProcedure()026
+
+

File(s)

+

/_/src/MySqlConnector/Core/CachedProcedure.cs

+

File '/_/src/MySqlConnector/Core/CachedProcedure.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CachingSha2ServerResponsePayload.html b/coveragereport/mysqlconnector.dll_CachingSha2ServerResponsePayload.html new file mode 100644 index 0000000..4bf9b8c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CachingSha2ServerResponsePayload.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.CachingSha2ServerResponsePayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.CachingSha2ServerResponsePayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/CachingSha2ServerResponsePayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:11
Coverable lines:11
Total lines:32
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
CachingSha2ServerResponsePayload(...)01
Create(...)05
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/CachingSha2ServerResponsePayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/CachingSha2ServerResponsePayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ChangeUserPayload.html b/coveragereport/mysqlconnector.dll_ChangeUserPayload.html new file mode 100644 index 0000000..e7d00c0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ChangeUserPayload.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.ChangeUserPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.ChangeUserPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/ChangeUserPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:12
Coverable lines:12
Total lines:23
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Create(...)018
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/ChangeUserPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/ChangeUserPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ColumnCountPayload.html b/coveragereport/mysqlconnector.dll_ColumnCountPayload.html new file mode 100644 index 0000000..2ee5cc5 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ColumnCountPayload.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.ColumnCountPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.ColumnCountPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/ColumnCountPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:9
Uncovered lines:0
Coverable lines:9
Total lines:27
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ColumnCountPayload(...)10
Create(...)64
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/ColumnCountPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/ColumnCountPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ColumnDefinitionPayload.html b/coveragereport/mysqlconnector.dll_ColumnDefinitionPayload.html new file mode 100644 index 0000000..e660c33 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ColumnDefinitionPayload.html @@ -0,0 +1,190 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.ColumnDefinitionPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.ColumnDefinitionPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/ColumnDefinitionPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
47%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:31
Uncovered lines:34
Coverable lines:65
Total lines:137
Line coverage:47.6%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
Initialize(...)50
Initialize(...)231
SkipLengthEncodedByteString(...)40
ColumnDefinitionPayload()20
ReadNames()021
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/ColumnDefinitionPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/ColumnDefinitionPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ColumnReader.html b/coveragereport/mysqlconnector.dll_ColumnReader.html new file mode 100644 index 0000000..03c3fa7 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ColumnReader.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.ColumnReaders.ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:59
Coverable lines:59
Total lines:125
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)0150
TryReadInt32(...)01
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ColumnTypeMetadata.html b/coveragereport/mysqlconnector.dll_ColumnTypeMetadata.html new file mode 100644 index 0000000..f3363e6 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ColumnTypeMetadata.html @@ -0,0 +1,179 @@ + + + + + + + +MySqlConnector.Core.ColumnTypeMetadata - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ColumnTypeMetadata
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ColumnTypeMetadata.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:12
Coverable lines:12
Total lines:18
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
ColumnTypeMetadata(...)09
CreateLookupKey(...)011
CreateLookupKey()05
+
+

File(s)

+

/_/src/MySqlConnector/Core/ColumnTypeMetadata.cs

+

File '/_/src/MySqlConnector/Core/ColumnTypeMetadata.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CommandExecutor.html b/coveragereport/mysqlconnector.dll_CommandExecutor.html new file mode 100644 index 0000000..30f39f4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CommandExecutor.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Core.CommandExecutor - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.CommandExecutor
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/CommandExecutor.cs
+
+
+
+
+
+
+
Line coverage
+
+
54%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:19
Uncovered lines:16
Coverable lines:35
Total lines:79
Line coverage:54.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
ExecuteReaderAsync()5675
+
+

File(s)

+

/_/src/MySqlConnector/Core/CommandExecutor.cs

+

File '/_/src/MySqlConnector/Core/CommandExecutor.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+ExecuteReaderAsync()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CommandListPosition.html b/coveragereport/mysqlconnector.dll_CommandListPosition.html new file mode 100644 index 0000000..9a057f1 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CommandListPosition.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Core.CommandListPosition - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.CommandListPosition
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/CommandListPosition.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:17
Uncovered lines:0
Coverable lines:17
Total lines:29
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
CommandListPosition(...)35
CommandAt(...)46
+
+

File(s)

+

/_/src/MySqlConnector/Core/CommandListPosition.cs

+

File '/_/src/MySqlConnector/Core/CommandListPosition.cs' does not exist (any more).

+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_CompressedPayloadHandler.html b/coveragereport/mysqlconnector.dll_CompressedPayloadHandler.html new file mode 100644 index 0000000..1896833 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_CompressedPayloadHandler.html @@ -0,0 +1,196 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.CompressedPayloadHandler - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.CompressedPayloadHandler
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/CompressedPayloadHandler.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:99
Coverable lines:99
Total lines:269
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/CompressedPayloadHandler.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/CompressedPayloadHandler.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ConcatenatedCommandPayloadCreator.html b/coveragereport/mysqlconnector.dll_ConcatenatedCommandPayloadCreator.html new file mode 100644 index 0000000..9c794c8 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ConcatenatedCommandPayloadCreator.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.Core.ConcatenatedCommandPayloadCreator - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ConcatenatedCommandPayloadCreator
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ConcatenatedCommandPayloadCreator.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:16
Coverable lines:16
Total lines:43
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ConcatenatedCommandPayloadCreator()02
WriteQueryCommand(...)020
+
+

File(s)

+

/_/src/MySqlConnector/Core/ConcatenatedCommandPayloadCreator.cs

+

File '/_/src/MySqlConnector/Core/ConcatenatedCommandPayloadCreator.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ConnectionPool.html b/coveragereport/mysqlconnector.dll_ConnectionPool.html new file mode 100644 index 0000000..3c59261 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ConnectionPool.html @@ -0,0 +1,225 @@ + + + + + + + +MySqlConnector.Core.ConnectionPool - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ConnectionPool
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ConnectionPool.cs
+
+
+
+
+
+
+
Line coverage
+
+
32%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:122
Uncovered lines:254
Coverable lines:376
Total lines:822
Line coverage:32.4%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/ConnectionPool.cs

+

File '/_/src/MySqlConnector/Core/ConnectionPool.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ConnectionSettings.html b/coveragereport/mysqlconnector.dll_ConnectionSettings.html new file mode 100644 index 0000000..9acc340 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ConnectionSettings.html @@ -0,0 +1,232 @@ + + + + + + + +MySqlConnector.Core.ConnectionSettings - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ConnectionSettings
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ConnectionSettings.cs
+
+
+
+
+
+
+
Line coverage
+
+
47%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:107
Uncovered lines:117
Coverable lines:224
Total lines:330
Line coverage:47.7%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
ConnectionSettings(...)86100
CloneWith(...)02
GetEffectiveGuidFormat(...)39
ConnectionSettings(...)050
ConnectionSettings()01
+
+

File(s)

+

/_/src/MySqlConnector/Core/ConnectionSettings.cs

+

File '/_/src/MySqlConnector/Core/ConnectionSettings.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ConsoleLoggerProvider.html b/coveragereport/mysqlconnector.dll_ConsoleLoggerProvider.html new file mode 100644 index 0000000..5968859 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ConsoleLoggerProvider.html @@ -0,0 +1,178 @@ + + + + + + + +MySqlConnector.Logging.ConsoleLoggerProvider - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.ConsoleLoggerProvider
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Logging/ConsoleLoggerProvider.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:53
Coverable lines:53
Total lines:83
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
ConsoleLoggerProvider(...)06
CreateLogger(...)02
ConsoleLogger(...)02
IsEnabled(...)04
Log(...)040
ConsoleLogger()02
+
+

File(s)

+

/_/src/MySqlConnector/Logging/ConsoleLoggerProvider.cs

+

File '/_/src/MySqlConnector/Logging/ConsoleLoggerProvider.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_DataReaderValuesEnumerator.html b/coveragereport/mysqlconnector.dll_DataReaderValuesEnumerator.html new file mode 100644 index 0000000..add044a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_DataReaderValuesEnumerator.html @@ -0,0 +1,175 @@ + + + + + + + +MySqlConnector.Core.DataReaderValuesEnumerator - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.DataReaderValuesEnumerator
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/IValuesEnumerator.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:37
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
DataReaderValuesEnumerator(...)02
Create(...)05
MoveNextAsync()03
MoveNext()02
GetValues(...)02
+
+

File(s)

+

/_/src/MySqlConnector/Core/IValuesEnumerator.cs

+

File '/_/src/MySqlConnector/Core/IValuesEnumerator.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_DataRowsValuesEnumerator.html b/coveragereport/mysqlconnector.dll_DataRowsValuesEnumerator.html new file mode 100644 index 0000000..a593154 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_DataRowsValuesEnumerator.html @@ -0,0 +1,175 @@ + + + + + + + +MySqlConnector.Core.DataRowsValuesEnumerator - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.DataRowsValuesEnumerator
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/IValuesEnumerator.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:13
Coverable lines:13
Total lines:63
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
DataRowsValuesEnumerator(...)03
Create(...)014
MoveNextAsync()03
MoveNext()05
GetValues(...)07
+
+

File(s)

+

/_/src/MySqlConnector/Core/IValuesEnumerator.cs

+

File '/_/src/MySqlConnector/Core/IValuesEnumerator.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_DbDataReaderValuesEnumerator.html b/coveragereport/mysqlconnector.dll_DbDataReaderValuesEnumerator.html new file mode 100644 index 0000000..f9567ab --- /dev/null +++ b/coveragereport/mysqlconnector.dll_DbDataReaderValuesEnumerator.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.Core.DbDataReaderValuesEnumerator - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.DbDataReaderValuesEnumerator
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/IValuesEnumerator.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:24
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
DbDataReaderValuesEnumerator(...)02
MoveNextAsync()03
MoveNext()02
GetValues(...)02
+
+

File(s)

+

/_/src/MySqlConnector/Core/IValuesEnumerator.cs

+

File '/_/src/MySqlConnector/Core/IValuesEnumerator.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_DbTypeMapping.html b/coveragereport/mysqlconnector.dll_DbTypeMapping.html new file mode 100644 index 0000000..ab4fc6b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_DbTypeMapping.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Core.DbTypeMapping - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.DbTypeMapping
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/DbTypeMapping.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:15
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
DbTypeMapping(...)02
DoConversion(...)012
+
+

File(s)

+

/_/src/MySqlConnector/Core/DbTypeMapping.cs

+

File '/_/src/MySqlConnector/Core/DbTypeMapping.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_DecimalColumnReader.html b/coveragereport/mysqlconnector.dll_DecimalColumnReader.html new file mode 100644 index 0000000..0eb94dc --- /dev/null +++ b/coveragereport/mysqlconnector.dll_DecimalColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.DecimalColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.DecimalColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/DecimalColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
DecimalColumnReader()02
ReadValue(...)02
TryReadInt32(...)04
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/DecimalColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/DecimalColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_EmptyPayload.html b/coveragereport/mysqlconnector.dll_EmptyPayload.html new file mode 100644 index 0000000..107485d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_EmptyPayload.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.EmptyPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.EmptyPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/EmptyPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:6
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
EmptyPayload()03
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/EmptyPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/EmptyPayload.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Instance()
+EmptyPayload()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_EnlistedTransactionBase.html b/coveragereport/mysqlconnector.dll_EnlistedTransactionBase.html new file mode 100644 index 0000000..cded5b2 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_EnlistedTransactionBase.html @@ -0,0 +1,184 @@ + + + + + + + +MySqlConnector.Core.EnlistedTransactionBase - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.EnlistedTransactionBase
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/EnlistedTransactionBase.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:28
Coverable lines:28
Total lines:59
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/EnlistedTransactionBase.cs

+

File '/_/src/MySqlConnector/Core/EnlistedTransactionBase.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_EofPayload.html b/coveragereport/mysqlconnector.dll_EofPayload.html new file mode 100644 index 0000000..e4e2c9e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_EofPayload.html @@ -0,0 +1,172 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.EofPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.EofPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/EofPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:15
Coverable lines:15
Total lines:42
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
Create(...)014
IsEof(...)07
EofPayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/EofPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/EofPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ErrorPayload.html b/coveragereport/mysqlconnector.dll_ErrorPayload.html new file mode 100644 index 0000000..f34d281 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ErrorPayload.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.ErrorPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.ErrorPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/ErrorPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:18
Coverable lines:18
Total lines:45
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
ToException()05
Create(...)024
ErrorPayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/ErrorPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/ErrorPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_FailOverLoadBalancer.html b/coveragereport/mysqlconnector.dll_FailOverLoadBalancer.html new file mode 100644 index 0000000..6f86cf3 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_FailOverLoadBalancer.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Core.FailOverLoadBalancer - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.FailOverLoadBalancer
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ILoadBalancer.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:4
Uncovered lines:0
Coverable lines:4
Total lines:21
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
FailOverLoadBalancer()20
LoadBalance(...)10
FailOverLoadBalancer()20
+
+

File(s)

+

/_/src/MySqlConnector/Core/ILoadBalancer.cs

+

File '/_/src/MySqlConnector/Core/ILoadBalancer.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_GuidBinary16ColumnReader.html b/coveragereport/mysqlconnector.dll_GuidBinary16ColumnReader.html new file mode 100644 index 0000000..ca084aa --- /dev/null +++ b/coveragereport/mysqlconnector.dll_GuidBinary16ColumnReader.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.ColumnReaders.GuidBinary16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.GuidBinary16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/GuidBinary16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
GuidBinary16ColumnReader()02
ReadValue(...)02
ReadGuid(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/GuidBinary16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/GuidBinary16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_GuidChar32ColumnReader.html b/coveragereport/mysqlconnector.dll_GuidChar32ColumnReader.html new file mode 100644 index 0000000..a1a6a74 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_GuidChar32ColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.GuidChar32ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.GuidChar32ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/GuidChar32ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:15
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
GuidChar32ColumnReader()02
ReadValue(...)09
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/GuidChar32ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/GuidChar32ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_GuidChar36ColumnReader.html b/coveragereport/mysqlconnector.dll_GuidChar36ColumnReader.html new file mode 100644 index 0000000..7a88017 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_GuidChar36ColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.GuidChar36ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.GuidChar36ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/GuidChar36ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:15
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
GuidChar36ColumnReader()02
ReadValue(...)09
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/GuidChar36ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/GuidChar36ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_GuidLittleEndianBinary16ColumnReader.html b/coveragereport/mysqlconnector.dll_GuidLittleEndianBinary16ColumnReader.html new file mode 100644 index 0000000..7b8aed3 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_GuidLittleEndianBinary16ColumnReader.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.ColumnReaders.GuidLittleEndianBinary16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.GuidLittleEndianBinary16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/GuidLittleEndianBinary16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:17
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
GuidLittleEndianBinary16ColumnReader()02
ReadValue(...)02
ReadGuid(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/GuidLittleEndianBinary16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/GuidLittleEndianBinary16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_GuidTimeSwapBinary16ColumnReader.html b/coveragereport/mysqlconnector.dll_GuidTimeSwapBinary16ColumnReader.html new file mode 100644 index 0000000..3e30ff4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_GuidTimeSwapBinary16ColumnReader.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.ColumnReaders.GuidTimeSwapBinary16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.GuidTimeSwapBinary16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/GuidTimeSwapBinary16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
GuidTimeSwapBinary16ColumnReader()02
ReadValue(...)02
ReadGuid(...)020
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/GuidTimeSwapBinary16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/GuidTimeSwapBinary16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_HandshakeResponse41Payload.html b/coveragereport/mysqlconnector.dll_HandshakeResponse41Payload.html new file mode 100644 index 0000000..33bb970 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_HandshakeResponse41Payload.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.HandshakeResponse41Payload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.HandshakeResponse41Payload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/HandshakeResponse41Payload.cs
+
+
+
+
+
+
+
Line coverage
+
+
97%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:43
Uncovered lines:1
Coverable lines:44
Total lines:77
Line coverage:97.7%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
CreateCapabilitiesPayload(...)247
CreateWithSsl(...)30
Create(...)240
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/HandshakeResponse41Payload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/HandshakeResponse41Payload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ICancellableCommandExtensions.html b/coveragereport/mysqlconnector.dll_ICancellableCommandExtensions.html new file mode 100644 index 0000000..80142e5 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ICancellableCommandExtensions.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Core.ICancellableCommandExtensions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ICancellableCommandExtensions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ICancellableCommand.cs
+
+
+
+
+
+
+
Line coverage
+
+
72%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:16
Uncovered lines:6
Coverable lines:22
Total lines:92
Line coverage:72.7%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
GetNextId()20
ResetCommandTimeout(...)3110
ICancellableCommandExtensions()10
+
+

File(s)

+

/_/src/MySqlConnector/Core/ICancellableCommand.cs

+

File '/_/src/MySqlConnector/Core/ICancellableCommand.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_IMySqlCommandExtensions.html b/coveragereport/mysqlconnector.dll_IMySqlCommandExtensions.html new file mode 100644 index 0000000..c2c20f4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_IMySqlCommandExtensions.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Core.IMySqlCommandExtensions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.IMySqlCommandExtensions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/IMySqlCommand.cs
+
+
+
+
+
+
+
Line coverage
+
+
77%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:17
Uncovered lines:5
Coverable lines:22
Total lines:54
Line coverage:77.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
CreateStatementPreparerOptions(...)1911
+
+

File(s)

+

/_/src/MySqlConnector/Core/IMySqlCommand.cs

+

File '/_/src/MySqlConnector/Core/IMySqlCommand.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_InitDatabasePayload.html b/coveragereport/mysqlconnector.dll_InitDatabasePayload.html new file mode 100644 index 0000000..6a35314 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_InitDatabasePayload.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.InitDatabasePayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.InitDatabasePayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/InitDatabasePayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:15
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Create(...)05
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/InitDatabasePayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/InitDatabasePayload.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Create(string)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_InitialHandshakePayload.html b/coveragereport/mysqlconnector.dll_InitialHandshakePayload.html new file mode 100644 index 0000000..70e08b0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_InitialHandshakePayload.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.InitialHandshakePayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.InitialHandshakePayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/InitialHandshakePayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
95%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:40
Uncovered lines:2
Coverable lines:42
Total lines:70
Line coverage:95.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)385
InitialHandshakePayload(...)20
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/InitialHandshakePayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/InitialHandshakePayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_LocalInfilePayload.html b/coveragereport/mysqlconnector.dll_LocalInfilePayload.html new file mode 100644 index 0000000..ab3f4e5 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_LocalInfilePayload.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.LocalInfilePayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.LocalInfilePayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/LocalInfilePayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:7
Coverable lines:7
Total lines:26
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)08
LocalInfilePayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/LocalInfilePayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/LocalInfilePayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_Log.html b/coveragereport/mysqlconnector.dll_Log.html new file mode 100644 index 0000000..885dae2 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_Log.html @@ -0,0 +1,502 @@ + + + + + + + +MySqlConnector.Logging.Log - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.Log
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Microsoft.Extensions.Logging.Generators/Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator/LoggerMessage.g.cs
+
+
+
+
+
+
+
Line coverage
+
+
3%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:32
Uncovered lines:830
Coverable lines:862
Total lines:2124
Line coverage:3.7%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
Log()0533
DataSourceCreatedWithPoolWithName(...)04
DataSourceCreatedWithoutPoolWithName(...)04
DataSourceCreatedWithPoolWithoutName(...)31
DataSourceCreatedWithoutPoolWithoutName(...)04
PeriodicPasswordProviderFailed(...)04
CreatedNonPooledSession(...)04
ResettingConnection(...)04
ReturningToPool(...)31
SendingQuitCommand(...)04
ConnectingFailed(...)04
ServerSentAuthPluginName(...)31
UnsupportedAuthenticationMethod(...)04
AutoDetectedAurora57(...)04
__SessionMadeConnectionStruct(...)01
ToString()025
__SessionMadeConnectionStruct()02
GetEnumerator()09
global::System.Collections.IEnumerable.GetEnumerator()02
SessionMadeConnection(...)33
ServerDoesNotSupportSsl(...)04
CouldNotConnectToServer(...)04
SendingPipelinedResetConnectionRequest(...)04
SendingResetConnectionRequest(...)04
SendingChangeUserRequest(...)04
SendingChangeUserRequestDueToChangedDatabase(...)04
OptimisticReauthenticationFailed(...)04
IgnoringFailureInTryResetConnectionAsync(...)04
SwitchingToAuthenticationMethod(...)04
NeedsSecureConnection(...)04
AuthenticationMethodNotSupported(...)04
CouldNotLoadServerRsaPublicKey(...)04
CouldNotLoadServerRsaPublicKeyFromFile(...)04
CouldNotUseAuthenticationMethodForRsa(...)04
FailedToResolveHostName(...)04
__ConnectingToIpAddressStruct(...)01
ToString()018
__ConnectingToIpAddressStruct()02
GetEnumerator()09
global::System.Collections.IEnumerable.GetEnumerator()02
ConnectingToIpAddress(...)33
ConnectTimeoutExpired(...)04
FailedToConnectToSingleIpAddress(...)04
__FailedToConnectToIpAddressStruct(...)01
ToString()019
__FailedToConnectToIpAddressStruct()02
GetEnumerator()09
global::System.Collections.IEnumerable.GetEnumerator()02
FailedToConnectToIpAddress(...)06
ConnectedToIpAddress(...)31
ConnectingToUnixSocket(...)04
ConnectTimeoutExpiredForUnixSocket(...)04
ConnectingToNamedPipe(...)04
ConnectTimeoutExpiredForNamedPipe(...)04
InitializingTlsConnection(...)31
NoCertificatesFound(...)04
CertificateNotFoundInStore(...)04
CouldNotLoadCertificate(...)04
NoPrivateKeyIncludedWithCertificateFile(...)04
CouldNotLoadCertificateFromFile(...)04
FailedToObtainClientCertificates(...)04
LoadingCaCertificatesFromFile(...)04
__CouldNotLoadCaCertificateFromFileStruct(...)01
ToString()08
__CouldNotLoadCaCertificateFromFileStruct()02
GetEnumerator()09
global::System.Collections.IEnumerable.GetEnumerator()02
CouldNotLoadCaCertificateFromFile(...)06
LoadingCaCertificate(...)04
LoadedCaCertificatesFromFile(...)04
NotUsingRemoteCertificateValidationCallbackDueToSslCa(...)04
NotUsingRemoteCertificateValidationCallbackDueToSslMode(...)04
UsingRemoteCertificateValidationCallback(...)04
ConnectedTlsBasic(...)31
ConnectedTlsDetailed(...)04
CouldNotInitializeTlsConnection(...)04
LoadingClientKeyFromKeyFile(...)04
CouldNotLoadClientKeyFromKeyFile(...)04
DetectedProxy(...)04
ChangingConnectionId(...)04
FailedToGetConnectionId(...)04
ClosingStreamSocket(...)04
CreatingConnectionAttributes(...)31
ObtainingPasswordViaProvidePasswordCallback(...)04
FailedToObtainPassword(...)04
IgnoringCancellationForCommand(...)04
CommandHasBeenCanceled(...)04
IgnoringCancellationForClosedConnection(...)04
CancelingCommandFailed(...)04
WillCancelCommand(...)04
CancelingCommandFromSession(...)04
IgnoringCancellationForInactiveCommand(...)04
CancelingCommand(...)04
SendingSleepToClearPendingCancellation(...)04
GettingCachedProcedure(...)04
PoolDoesNotHaveSharedProcedureCache(...)04
CouldNotNormalizeDatabaseAndName(...)04
FailedToCacheProcedure(...)04
CachingProcedure(...)04
ProcedureCacheCount(...)04
DidNotFindCachedProcedure(...)04
ReturningCachedProcedure(...)04
FailedToRetrieveProcedureMetadata(...)04
ServerDoesNotSupportCachedProcedures(...)04
ProcedureHasRoutineCount(...)04
CreatedNewSession(...)31
PingingServer(...)04
__SuccessfullyPingedServerStruct(...)01
ToString()02
__SuccessfullyPingedServerStruct()02
GetEnumerator()09
global::System.Collections.IEnumerable.GetEnumerator()02
SuccessfullyPingedServer(...)06
PingFailed(...)04
SettingStateToFailed(...)04
ExpectedToReadMoreBytes(...)04
ErrorPayload(...)04
CommandExecutorExecuteReader(...)31
QueryWasInterrupted(...)04
PreparingCommandPayload(...)31
PreparingCommandPayloadWithId(...)04
QueryAttributesNotSupported(...)04
QueryAttributesNotSupportedWithId(...)04
IgnoringExceptionInDisposeAsync(...)04
StartingBulkCopy(...)04
AddingDefaultColumnMapping(...)04
IgnoringColumn(...)04
FinishedBulkCopy(...)04
BulkCopyFailed(...)04
ColumnMappingAlreadyHasExpression(...)04
SettingExpressionToMapColumn(...)04
WaitingForAvailableSession(...)31
FailedInReceiveReplyAsync(...)04
FailedInSendReplyAsync(...)04
CreatingNewConnectionPool(...)31
ScanningForLeakedSessions(...)04
FoundExistingSession(...)04
DiscardingSessionDueToWrongGeneration(...)04
SessionIsUnusable(...)04
ReturningPooledSession(...)04
ReturningNewSession(...)31
DisposingCreatedSessionDueToException(...)04
UnexpectedErrorInGetSessionAsync(...)04
ReceivingSessionBack(...)31
ReceivedInvalidSession(...)04
ReceivedExpiredSession(...)04
ClearingConnectionPool(...)04
DisposingConnectionPool(...)04
RecoveredNoSessions(...)04
RecoveredSessionCount(...)04
FoundSessionToCleanUp(...)04
HasServerRedirectionHeader(...)04
ServerRedirectionIsDisabled(...)04
OpeningNewConnection(...)04
FailedToConnectRedirectedSession(...)04
ClosingSessionToUseRedirectedSession(...)04
SessionAlreadyConnectedToServer(...)04
RequiresServerRedirection(...)04
CreatedPoolWillNotBeUsed(...)04
ReapingConnectionPool(...)04
CheckingForDnsChanges(...)04
DetectedDnsChange(...)04
DnsCheckFailed(...)04
ClearingPoolDueToDnsChanges(...)04
+
+

File(s)

+

/_/src/MySqlConnector/Microsoft.Extensions.Logging.Generators/Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator/LoggerMessage.g.cs

+

File '/_/src/MySqlConnector/Microsoft.Extensions.Logging.Generators/Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator/LoggerMessage.g.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Log()
+DataSourceCreatedWithPoolWithName(Microsoft.Extensions.Logging.ILogger, int, int, string)
+DataSourceCreatedWithoutPoolWithName(Microsoft.Extensions.Logging.ILogger, int, string)
+DataSourceCreatedWithPoolWithoutName(Microsoft.Extensions.Logging.ILogger, int, int)
+DataSourceCreatedWithoutPoolWithoutName(Microsoft.Extensions.Logging.ILogger, int)
+PeriodicPasswordProviderFailed(Microsoft.Extensions.Logging.ILogger, System.Exception, int, string)
+CreatedNonPooledSession(Microsoft.Extensions.Logging.ILogger, string)
+ResettingConnection(Microsoft.Extensions.Logging.ILogger, string)
+ReturningToPool(Microsoft.Extensions.Logging.ILogger, string, int)
+SendingQuitCommand(Microsoft.Extensions.Logging.ILogger, string)
+ConnectingFailed(Microsoft.Extensions.Logging.ILogger, string)
+ServerSentAuthPluginName(Microsoft.Extensions.Logging.ILogger, string, string)
+UnsupportedAuthenticationMethod(Microsoft.Extensions.Logging.ILogger, string, string)
+AutoDetectedAurora57(Microsoft.Extensions.Logging.ILogger, string, string)
+__SessionMadeConnectionStruct(string, string, int, bool, bool, bool, bool, bool, bool, bool, bool)
+ToString()
+__SessionMadeConnectionStruct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+SessionMadeConnection(Microsoft.Extensions.Logging.ILogger, string, string, int, bool, bool, bool, bool, bool, bool, bool, bool)
+ServerDoesNotSupportSsl(Microsoft.Extensions.Logging.ILogger, string)
+CouldNotConnectToServer(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+SendingPipelinedResetConnectionRequest(Microsoft.Extensions.Logging.ILogger, string, string)
+SendingResetConnectionRequest(Microsoft.Extensions.Logging.ILogger, string, string)
+SendingChangeUserRequest(Microsoft.Extensions.Logging.ILogger, string, string)
+SendingChangeUserRequestDueToChangedDatabase(Microsoft.Extensions.Logging.ILogger, string, string)
+OptimisticReauthenticationFailed(Microsoft.Extensions.Logging.ILogger, string)
+IgnoringFailureInTryResetConnectionAsync(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+SwitchingToAuthenticationMethod(Microsoft.Extensions.Logging.ILogger, string, string)
+NeedsSecureConnection(Microsoft.Extensions.Logging.ILogger, string, string)
+AuthenticationMethodNotSupported(Microsoft.Extensions.Logging.ILogger, string, string)
+CouldNotLoadServerRsaPublicKey(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+CouldNotLoadServerRsaPublicKeyFromFile(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+CouldNotUseAuthenticationMethodForRsa(Microsoft.Extensions.Logging.ILogger, string, string)
+FailedToResolveHostName(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, int, int, string)
+__ConnectingToIpAddressStruct(string, string, int, int, string, int, int)
+ToString()
+__ConnectingToIpAddressStruct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+ConnectingToIpAddress(Microsoft.Extensions.Logging.ILogger, string, string, int, int, string, int, int)
+ConnectTimeoutExpired(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, string)
+FailedToConnectToSingleIpAddress(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, string, string)
+__FailedToConnectToIpAddressStruct(string, string, int, int, string, int, int, string)
+ToString()
+__FailedToConnectToIpAddressStruct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+FailedToConnectToIpAddress(Microsoft.Extensions.Logging.ILogger, System.Exception, Microsoft.Extensions.Logging.LogLevel, string, string, int, int, string, int, int, string)
+ConnectedToIpAddress(Microsoft.Extensions.Logging.ILogger, string, string, string, System.Nullable<int>)
+ConnectingToUnixSocket(Microsoft.Extensions.Logging.ILogger, string, string)
+ConnectTimeoutExpiredForUnixSocket(Microsoft.Extensions.Logging.ILogger, string, string)
+ConnectingToNamedPipe(Microsoft.Extensions.Logging.ILogger, string, string, string)
+ConnectTimeoutExpiredForNamedPipe(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, string)
+InitializingTlsConnection(Microsoft.Extensions.Logging.ILogger, string)
+NoCertificatesFound(Microsoft.Extensions.Logging.ILogger, string)
+CertificateNotFoundInStore(Microsoft.Extensions.Logging.ILogger, string, string)
+CouldNotLoadCertificate(Microsoft.Extensions.Logging.ILogger, System.Exception, string, MySqlConnector.MySqlCertificateStoreLocation)
+NoPrivateKeyIncludedWithCertificateFile(Microsoft.Extensions.Logging.ILogger, string, string)
+CouldNotLoadCertificateFromFile(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+FailedToObtainClientCertificates(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+LoadingCaCertificatesFromFile(Microsoft.Extensions.Logging.ILogger, string, string)
+__CouldNotLoadCaCertificateFromFileStruct(string, string)
+ToString()
+__CouldNotLoadCaCertificateFromFileStruct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+CouldNotLoadCaCertificateFromFile(Microsoft.Extensions.Logging.ILogger, System.Exception, Microsoft.Extensions.Logging.LogLevel, string, string)
+LoadingCaCertificate(Microsoft.Extensions.Logging.ILogger, string, int)
+LoadedCaCertificatesFromFile(Microsoft.Extensions.Logging.ILogger, string, int, string)
+NotUsingRemoteCertificateValidationCallbackDueToSslCa(Microsoft.Extensions.Logging.ILogger, string)
+NotUsingRemoteCertificateValidationCallbackDueToSslMode(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.MySqlSslMode)
+UsingRemoteCertificateValidationCallback(Microsoft.Extensions.Logging.ILogger, string)
+ConnectedTlsBasic(Microsoft.Extensions.Logging.ILogger, string, System.Security.Authentication.SslProtocols, System.Net.Security.TlsCipherSuite)
+ConnectedTlsDetailed(Microsoft.Extensions.Logging.ILogger, string, System.Security.Authentication.SslProtocols, System.Security.Authentication.CipherAlgorithmType, System.Security.Authentication.HashAlgorithmType, System.Security.Authentication.ExchangeAlgorithmType, int)
+CouldNotInitializeTlsConnection(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+LoadingClientKeyFromKeyFile(Microsoft.Extensions.Logging.ILogger, string, string)
+CouldNotLoadClientKeyFromKeyFile(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+DetectedProxy(Microsoft.Extensions.Logging.ILogger, string)
+ChangingConnectionId(Microsoft.Extensions.Logging.ILogger, string, int, int, string, string)
+FailedToGetConnectionId(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+ClosingStreamSocket(Microsoft.Extensions.Logging.ILogger, string)
+CreatingConnectionAttributes(Microsoft.Extensions.Logging.ILogger, string)
+ObtainingPasswordViaProvidePasswordCallback(Microsoft.Extensions.Logging.ILogger, string)
+FailedToObtainPassword(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+IgnoringCancellationForCommand(Microsoft.Extensions.Logging.ILogger, int)
+CommandHasBeenCanceled(Microsoft.Extensions.Logging.ILogger, int, string, string)
+IgnoringCancellationForClosedConnection(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+CancelingCommandFailed(Microsoft.Extensions.Logging.ILogger, System.Exception, string, int)
+WillCancelCommand(Microsoft.Extensions.Logging.ILogger, string, int, int, string)
+CancelingCommandFromSession(Microsoft.Extensions.Logging.ILogger, string, int, string, string)
+IgnoringCancellationForInactiveCommand(Microsoft.Extensions.Logging.ILogger, string, int, int)
+CancelingCommand(Microsoft.Extensions.Logging.ILogger, string, int, string)
+SendingSleepToClearPendingCancellation(Microsoft.Extensions.Logging.ILogger, string)
+GettingCachedProcedure(Microsoft.Extensions.Logging.ILogger, string, string)
+PoolDoesNotHaveSharedProcedureCache(Microsoft.Extensions.Logging.ILogger, string, System.Nullable<int>)
+CouldNotNormalizeDatabaseAndName(Microsoft.Extensions.Logging.ILogger, string, string, string)
+FailedToCacheProcedure(Microsoft.Extensions.Logging.ILogger, string, string, string)
+CachingProcedure(Microsoft.Extensions.Logging.ILogger, string, string, string)
+ProcedureCacheCount(Microsoft.Extensions.Logging.ILogger, string, int)
+DidNotFindCachedProcedure(Microsoft.Extensions.Logging.ILogger, string, string, string)
+ReturningCachedProcedure(Microsoft.Extensions.Logging.ILogger, string, string, string)
+FailedToRetrieveProcedureMetadata(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, string, string)
+ServerDoesNotSupportCachedProcedures(Microsoft.Extensions.Logging.ILogger, string, string)
+ProcedureHasRoutineCount(Microsoft.Extensions.Logging.ILogger, string, string, int, int)
+CreatedNewSession(Microsoft.Extensions.Logging.ILogger, string)
+PingingServer(Microsoft.Extensions.Logging.ILogger, string)
+__SuccessfullyPingedServerStruct(string)
+ToString()
+__SuccessfullyPingedServerStruct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+SuccessfullyPingedServer(Microsoft.Extensions.Logging.ILogger, Microsoft.Extensions.Logging.LogLevel, string)
+PingFailed(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string)
+SettingStateToFailed(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+ExpectedToReadMoreBytes(Microsoft.Extensions.Logging.ILogger, string, int, int)
+ErrorPayload(Microsoft.Extensions.Logging.ILogger, string, int, string, string)
+CommandExecutorExecuteReader(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.Protocol.Serialization.IOBehavior, int)
+QueryWasInterrupted(Microsoft.Extensions.Logging.ILogger, string)
+PreparingCommandPayload(Microsoft.Extensions.Logging.ILogger, string, string)
+PreparingCommandPayloadWithId(Microsoft.Extensions.Logging.ILogger, string, int, string)
+QueryAttributesNotSupported(Microsoft.Extensions.Logging.ILogger, string, string)
+QueryAttributesNotSupportedWithId(Microsoft.Extensions.Logging.ILogger, string, int)
+IgnoringExceptionInDisposeAsync(Microsoft.Extensions.Logging.ILogger, System.Exception, string, string, string)
+StartingBulkCopy(Microsoft.Extensions.Logging.ILogger, string)
+AddingDefaultColumnMapping(Microsoft.Extensions.Logging.ILogger, int, string)
+IgnoringColumn(Microsoft.Extensions.Logging.ILogger, int)
+FinishedBulkCopy(Microsoft.Extensions.Logging.ILogger, string)
+BulkCopyFailed(Microsoft.Extensions.Logging.ILogger, string, int, int)
+ColumnMappingAlreadyHasExpression(Microsoft.Extensions.Logging.ILogger, int, string, string)
+SettingExpressionToMapColumn(Microsoft.Extensions.Logging.ILogger, int, string, string)
+WaitingForAvailableSession(Microsoft.Extensions.Logging.ILogger, int)
+FailedInReceiveReplyAsync(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+FailedInSendReplyAsync(Microsoft.Extensions.Logging.ILogger, System.Exception, string)
+CreatingNewConnectionPool(Microsoft.Extensions.Logging.ILogger, int, string)
+ScanningForLeakedSessions(Microsoft.Extensions.Logging.ILogger, int)
+FoundExistingSession(Microsoft.Extensions.Logging.ILogger, int)
+DiscardingSessionDueToWrongGeneration(Microsoft.Extensions.Logging.ILogger, int)
+SessionIsUnusable(Microsoft.Extensions.Logging.ILogger, int, string)
+ReturningPooledSession(Microsoft.Extensions.Logging.ILogger, int, string, int)
+ReturningNewSession(Microsoft.Extensions.Logging.ILogger, int, string, int)
+DisposingCreatedSessionDueToException(Microsoft.Extensions.Logging.ILogger, System.Exception, int, string, string)
+UnexpectedErrorInGetSessionAsync(Microsoft.Extensions.Logging.ILogger, System.Exception, int, string)
+ReceivingSessionBack(Microsoft.Extensions.Logging.ILogger, int, string)
+ReceivedInvalidSession(Microsoft.Extensions.Logging.ILogger, int, string)
+ReceivedExpiredSession(Microsoft.Extensions.Logging.ILogger, int, string)
+ClearingConnectionPool(Microsoft.Extensions.Logging.ILogger, int)
+DisposingConnectionPool(Microsoft.Extensions.Logging.ILogger, int)
+RecoveredNoSessions(Microsoft.Extensions.Logging.ILogger, int)
+RecoveredSessionCount(Microsoft.Extensions.Logging.ILogger, int, int)
+FoundSessionToCleanUp(Microsoft.Extensions.Logging.ILogger, int, string)
+HasServerRedirectionHeader(Microsoft.Extensions.Logging.ILogger, string, string)
+ServerRedirectionIsDisabled(Microsoft.Extensions.Logging.ILogger, int)
+OpeningNewConnection(Microsoft.Extensions.Logging.ILogger, int, string, int, string)
+FailedToConnectRedirectedSession(Microsoft.Extensions.Logging.ILogger, System.Exception, int, string)
+ClosingSessionToUseRedirectedSession(Microsoft.Extensions.Logging.ILogger, int, string, string)
+SessionAlreadyConnectedToServer(Microsoft.Extensions.Logging.ILogger, string)
+RequiresServerRedirection(Microsoft.Extensions.Logging.ILogger, int)
+CreatedPoolWillNotBeUsed(Microsoft.Extensions.Logging.ILogger, int)
+ReapingConnectionPool(Microsoft.Extensions.Logging.ILogger, int)
+CheckingForDnsChanges(Microsoft.Extensions.Logging.ILogger, int)
+DetectedDnsChange(Microsoft.Extensions.Logging.ILogger, int, string, string, string)
+DnsCheckFailed(Microsoft.Extensions.Logging.ILogger, System.Exception, int, string, string)
+ClearingPoolDueToDnsChanges(Microsoft.Extensions.Logging.ILogger, int)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MetricsReporter.html b/coveragereport/mysqlconnector.dll_MetricsReporter.html new file mode 100644 index 0000000..754ec96 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MetricsReporter.html @@ -0,0 +1,186 @@ + + + + + + + +MySqlConnector.Core.MetricsReporter - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.MetricsReporter
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/MetricsReporter.cs
+
+
+
+
+
+
+
Line coverage
+
+
86%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:33
Uncovered lines:5
Coverable lines:38
Total lines:60
Line coverage:86.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/MetricsReporter.cs

+

File '/_/src/MySqlConnector/Core/MetricsReporter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlAttribute.html b/coveragereport/mysqlconnector.dll_MySqlAttribute.html new file mode 100644 index 0000000..1dcc881 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlAttribute.html @@ -0,0 +1,178 @@ + + + + + + + +MySqlConnector.MySqlAttribute - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlAttribute
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlAttribute.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:41
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
MySqlAttribute(...)04
MySqlAttribute()02
Clone()04
System.ICloneable.Clone()02
ToParameter()09
+
+

File(s)

+

/_/src/MySqlConnector/MySqlAttribute.cs

+

File '/_/src/MySqlConnector/MySqlAttribute.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlAttributeCollection.html b/coveragereport/mysqlconnector.dll_MySqlAttributeCollection.html new file mode 100644 index 0000000..d1e0194 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlAttributeCollection.html @@ -0,0 +1,180 @@ + + + + + + + +MySqlConnector.MySqlAttributeCollection - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlAttributeCollection
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlAttributeCollection.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:21
Coverable lines:21
Total lines:96
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
Add(...)022
SetAttribute(...)015
Clear()02
GetEnumerator()02
Remove(...)02
System.Collections.IEnumerable.GetEnumerator()02
MySqlAttributeCollection()03
+
+

File(s)

+

/_/src/MySqlConnector/MySqlAttributeCollection.cs

+

File '/_/src/MySqlConnector/MySqlAttributeCollection.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBatch.html b/coveragereport/mysqlconnector.dll_MySqlBatch.html new file mode 100644 index 0000000..a09760e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBatch.html @@ -0,0 +1,246 @@ + + + + + + + +MySqlConnector.MySqlBatch - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBatch
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBatch.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:138
Coverable lines:138
Total lines:413
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlBatch.cs

+

File '/_/src/MySqlConnector/MySqlBatch.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlBatch()
+MySqlBatch(MySqlConnector.MySqlConnection, MySqlConnector.MySqlTransaction)
+Connection()
+Connection(MySqlConnector.MySqlConnection)
+DbConnection()
+DbConnection(System.Data.Common.DbConnection)
+Transaction()
+Transaction(MySqlConnector.MySqlTransaction)
+DbTransaction()
+DbTransaction(System.Data.Common.DbTransaction)
+BatchCommands()
+DbBatchCommands()
+ExecuteReader(System.Data.CommandBehavior)
+ExecuteReaderAsync()
+ExecuteDbDataReader(System.Data.CommandBehavior)
+ExecuteDbDataReaderAsync()
+ExecuteReaderAsync(System.Data.CommandBehavior, MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+ExecuteNonQuery()
+ExecuteScalar()
+ExecuteNonQueryAsync(System.Threading.CancellationToken)
+ExecuteScalarAsync(System.Threading.CancellationToken)
+Timeout()
+Timeout(int)
+Prepare()
+PrepareAsync(System.Threading.CancellationToken)
+Cancel()
+CreateDbBatchCommand()
+Dispose()
+CurrentCommandBehavior()
+CurrentCommandBehavior(System.Data.CommandBehavior)
+MySqlConnector.Core.ICancellableCommand.get_CommandId()
+MySqlConnector.Core.ICancellableCommand.get_CommandTimeout()
+MySqlConnector.Core.ICancellableCommand.get_EffectiveCommandTimeout()
+MySqlConnector.Core.ICancellableCommand.set_EffectiveCommandTimeout(System.Nullable<int>)
+MySqlConnector.Core.ICancellableCommand.get_CancelAttemptCount()
+MySqlConnector.Core.ICancellableCommand.set_CancelAttemptCount(int)
+MySqlConnector.Core.ICancellableCommand.RegisterCancel(System.Threading.CancellationToken)
+MySqlConnector.Core.ICancellableCommand.SetTimeout(int)
+MySqlConnector.Core.ICancellableCommand.get_IsTimedOut()
+CancelCommandForTimeout()
+ExecuteNonQueryAsync()
+ExecuteScalarAsync()
+IsValid(out System.Exception)
+NeedsPrepare(out System.Exception)
+GetExceptionForInvalidCommands()
+PrepareAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+DoPrepareAsync()
+IsPrepared()
+AsyncIOBehavior()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBatchCommand.html b/coveragereport/mysqlconnector.dll_MySqlBatchCommand.html new file mode 100644 index 0000000..0a6bd8f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBatchCommand.html @@ -0,0 +1,208 @@ + + + + + + + +MySqlConnector.MySqlBatchCommand - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBatchCommand
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBatchCommand.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:26
Coverable lines:26
Total lines:93
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlBatchCommand.cs

+

File '/_/src/MySqlConnector/MySqlBatchCommand.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBatchCommandCollection.html b/coveragereport/mysqlconnector.dll_MySqlBatchCommandCollection.html new file mode 100644 index 0000000..7eea0ec --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBatchCommandCollection.html @@ -0,0 +1,193 @@ + + + + + + + +MySqlConnector.MySqlBatchCommandCollection - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBatchCommandCollection
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBatchCommandCollection.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:18
Coverable lines:18
Total lines:54
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlBatchCommandCollection.cs

+

File '/_/src/MySqlConnector/MySqlBatchCommandCollection.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBulkCopy.html b/coveragereport/mysqlconnector.dll_MySqlBulkCopy.html new file mode 100644 index 0000000..8ae66a7 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBulkCopy.html @@ -0,0 +1,194 @@ + + + + + + + +MySqlConnector.MySqlBulkCopy - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBulkCopy
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBulkCopy.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:294
Coverable lines:294
Total lines:705
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlBulkCopy.cs

+

File '/_/src/MySqlConnector/MySqlBulkCopy.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBulkCopyColumnMapping.html b/coveragereport/mysqlconnector.dll_MySqlBulkCopyColumnMapping.html new file mode 100644 index 0000000..f71ec51 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBulkCopyColumnMapping.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.MySqlBulkCopyColumnMapping - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBulkCopyColumnMapping
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBulkCopyColumnMapping.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:61
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
MySqlBulkCopyColumnMapping(...)02
MySqlBulkCopyColumnMapping()02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlBulkCopyColumnMapping.cs

+

File '/_/src/MySqlConnector/MySqlBulkCopyColumnMapping.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBulkCopyResult.html b/coveragereport/mysqlconnector.dll_MySqlBulkCopyResult.html new file mode 100644 index 0000000..e28678d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBulkCopyResult.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.MySqlBulkCopyResult - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBulkCopyResult
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBulkCopyResult.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:24
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlBulkCopyResult(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlBulkCopyResult.cs

+

File '/_/src/MySqlConnector/MySqlBulkCopyResult.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlBulkLoader.html b/coveragereport/mysqlconnector.dll_MySqlBulkLoader.html new file mode 100644 index 0000000..a8c7009 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlBulkLoader.html @@ -0,0 +1,222 @@ + + + + + + + +MySqlConnector.MySqlBulkLoader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlBulkLoader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlBulkLoader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:120
Coverable lines:120
Total lines:324
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlBulkLoader.cs

+

File '/_/src/MySqlConnector/MySqlBulkLoader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlCommand.html b/coveragereport/mysqlconnector.dll_MySqlCommand.html new file mode 100644 index 0000000..4efdb15 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlCommand.html @@ -0,0 +1,303 @@ + + + + + + + +MySqlConnector.MySqlCommand - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlCommand
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlCommand.cs
+
+
+
+
+
+
+
Line coverage
+
+
37%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:71
Uncovered lines:120
Coverable lines:191
Total lines:464
Line coverage:37.1%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
MySqlCommand()02
MySqlCommand(...)02
MySqlCommand(...)20
MySqlCommand(...)02
MySqlCommand(...)90
MySqlCommand(...)013
MySqlConnector.Core.IMySqlCommand.get_RawParameters()10
MySqlConnector.Core.IMySqlCommand.get_RawAttributes()10
CreateParameter()02
Cancel()05
ExecuteNonQuery()04
ExecuteScalar()04
ExecuteReader()03
ExecuteReader(...)04
Prepare()011
PrepareAsync(...)03
CloneRawParameters()017
CloneRawAttributes()018
MySqlConnector.Core.IMySqlCommand.get_AllowUserVariables()20
PrepareAsync(...)011
NeedsPrepare(...)047
MySqlConnector.Core.IMySqlCommand.SetLastInsertedId(...)20
CreateDbParameter()02
ExecuteDbDataReader(...)04
ExecuteNonQueryAsync(...)04
ExecuteNonQueryAsync()055
ExecuteScalarAsync(...)04
ExecuteScalarAsync()058
ExecuteReaderAsync(...)40
ExecuteReaderAsync(...)04
ExecuteDbDataReaderAsync()017
ExecuteReaderAsync()232
ExecuteReaderNoResetTimeoutAsync(...)133
Clone()02
System.ICloneable.Clone()02
Dispose(...)20
DisposeAsync()02
MySqlConnector.Core.ICancellableCommand.RegisterCancel(...)35
MySqlConnector.Core.ICancellableCommand.SetTimeout(...)120
MySqlConnector.Core.ICancellableCommand.get_IsTimedOut()02
MySqlConnector.Core.ICancellableCommand.get_CommandId()10
MySqlConnector.Core.ICancellableCommand.get_EffectiveCommandTimeout()10
MySqlConnector.Core.ICancellableCommand.set_EffectiveCommandTimeout(...)10
MySqlConnector.Core.ICancellableCommand.get_CancelAttemptCount()01
MySqlConnector.Core.ICancellableCommand.set_CancelAttemptCount(...)10
MySqlConnector.Core.IMySqlCommand.get_CancellableCommand()10
CancelCommandForTimeout()06
IsValid(...)1721
MySqlConnector.Core.IMySqlCommand.TryGetPreparedStatements()121
MySqlConnector.Core.IMySqlCommand.get_CommandBehavior()10
MySqlConnector.Core.IMySqlCommand.get_OutParameters()10
MySqlConnector.Core.IMySqlCommand.set_OutParameters(...)01
MySqlConnector.Core.IMySqlCommand.get_ReturnParameter()10
MySqlConnector.Core.IMySqlCommand.set_ReturnParameter(...)01
MySqlConnector.Core.IMySqlCommand.get_Logger()40
+
+

File(s)

+

/_/src/MySqlConnector/MySqlCommand.cs

+

File '/_/src/MySqlConnector/MySqlCommand.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlCommand()
+MySqlCommand(string)
+MySqlCommand(MySqlConnector.MySqlConnection, MySqlConnector.MySqlTransaction)
+MySqlCommand(string, MySqlConnector.MySqlConnection)
+MySqlCommand(string, MySqlConnector.MySqlConnection, MySqlConnector.MySqlTransaction)
+MySqlCommand(MySqlConnector.MySqlCommand)
+Parameters()
+MySqlConnector.Core.IMySqlCommand.get_RawParameters()
+Attributes()
+MySqlConnector.Core.IMySqlCommand.get_RawAttributes()
+CreateParameter()
+Cancel()
+ExecuteNonQuery()
+ExecuteScalar()
+ExecuteReader()
+ExecuteReader(System.Data.CommandBehavior)
+Prepare()
+PrepareAsync(System.Threading.CancellationToken)
+CloneRawParameters()
+CloneRawAttributes()
+MySqlConnector.Core.IMySqlCommand.get_AllowUserVariables()
+AllowUserVariables()
+AllowUserVariables(bool)
+NoActivity()
+NoActivity(bool)
+PrepareAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+NeedsPrepare(out System.Exception)
+CommandText()
+CommandText(string)
+IsPrepared()
+Transaction()
+Transaction(MySqlConnector.MySqlTransaction)
+Connection()
+Connection(MySqlConnector.MySqlConnection)
+CommandTimeout()
+CommandTimeout(int)
+CommandType()
+CommandType(System.Data.CommandType)
+DesignTimeVisible()
+DesignTimeVisible(bool)
+UpdatedRowSource()
+UpdatedRowSource(System.Data.UpdateRowSource)
+LastInsertedId()
+LastInsertedId(long)
+MySqlConnector.Core.IMySqlCommand.SetLastInsertedId(long)
+DbConnection()
+DbConnection(System.Data.Common.DbConnection)
+DbParameterCollection()
+DbTransaction()
+DbTransaction(System.Data.Common.DbTransaction)
+CreateDbParameter()
+ExecuteDbDataReader(System.Data.CommandBehavior)
+ExecuteNonQueryAsync(System.Threading.CancellationToken)
+ExecuteNonQueryAsync()
+ExecuteScalarAsync(System.Threading.CancellationToken)
+ExecuteScalarAsync()
+ExecuteReaderAsync(System.Threading.CancellationToken)
+ExecuteReaderAsync(System.Data.CommandBehavior, System.Threading.CancellationToken)
+ExecuteDbDataReaderAsync()
+ExecuteReaderAsync()
+ExecuteReaderNoResetTimeoutAsync(System.Data.CommandBehavior, MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+Clone()
+System.ICloneable.Clone()
+Dispose(bool)
+DisposeAsync()
+MySqlConnector.Core.ICancellableCommand.RegisterCancel(System.Threading.CancellationToken)
+MySqlConnector.Core.ICancellableCommand.SetTimeout(int)
+MySqlConnector.Core.ICancellableCommand.get_IsTimedOut()
+MySqlConnector.Core.ICancellableCommand.get_CommandId()
+MySqlConnector.Core.ICancellableCommand.get_EffectiveCommandTimeout()
+MySqlConnector.Core.ICancellableCommand.set_EffectiveCommandTimeout(System.Nullable<int>)
+MySqlConnector.Core.ICancellableCommand.get_CancelAttemptCount()
+MySqlConnector.Core.ICancellableCommand.set_CancelAttemptCount(int)
+MySqlConnector.Core.IMySqlCommand.get_CancellableCommand()
+AsyncIOBehavior()
+CancelCommandForTimeout()
+IsValid(out System.Exception)
+MySqlConnector.Core.IMySqlCommand.TryGetPreparedStatements()
+MySqlConnector.Core.IMySqlCommand.get_CommandBehavior()
+MySqlConnector.Core.IMySqlCommand.get_OutParameters()
+MySqlConnector.Core.IMySqlCommand.set_OutParameters(MySqlConnector.MySqlParameterCollection)
+MySqlConnector.Core.IMySqlCommand.get_ReturnParameter()
+MySqlConnector.Core.IMySqlCommand.set_ReturnParameter(MySqlConnector.MySqlParameter)
+MySqlConnector.Core.IMySqlCommand.get_Logger()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlCommandBuilder.html b/coveragereport/mysqlconnector.dll_MySqlCommandBuilder.html new file mode 100644 index 0000000..5036260 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlCommandBuilder.html @@ -0,0 +1,200 @@ + + + + + + + +MySqlConnector.MySqlCommandBuilder - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlCommandBuilder
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlCommandBuilder.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:51
Coverable lines:51
Total lines:103
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlCommandBuilder.cs

+

File '/_/src/MySqlConnector/MySqlCommandBuilder.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnection.html b/coveragereport/mysqlconnector.dll_MySqlConnection.html new file mode 100644 index 0000000..049e127 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnection.html @@ -0,0 +1,338 @@ + + + + + + + +MySqlConnector.MySqlConnection - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConnection
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConnection.cs
+
+
+
+
+
+
+
Line coverage
+
+
21%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:107
Uncovered lines:382
Coverable lines:489
Total lines:1126
Line coverage:21.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
MySqlConnection()02
MySqlConnection(...)05
MySqlConnection(...)40
MySqlConnection(...)40
BeginTransaction()04
BeginTransaction(...)04
BeginTransaction(...)05
BeginDbTransaction(...)04
BeginTransactionAsync(...)03
BeginTransactionAsync(...)03
BeginDbTransactionAsync()017
BeginTransactionAsync(...)04
BeginTransactionAsync()096
EnlistTransaction(...)048
UnenlistTransaction()032
FindExistingEnlistedSession(...)041
TakeSessionFrom(...)03
Close()04
CloseAsync()03
CloseAsync(...)02
ChangeDatabase(...)05
ChangeDatabaseAsync(...)03
ChangeDatabaseAsync()047
CreateCommand()20
Ping()05
PingAsync(...)04
PingAsync()025
Open()06
OpenAsync(...)20
OpenAsync()4957
ResetConnectionAsync()036
ClearPool(...)05
ClearPoolAsync(...)03
ClearAllPools()05
ClearAllPoolsAsync(...)02
ClearPoolAsync()019
CreateDbCommand()20
GetSchema()05
GetSchema(...)05
GetSchema(...)05
GetSchemaAsync(...)05
GetSchemaAsync(...)05
GetSchemaAsync(...)05
GetSchemaProvider()04
CreateBatch()02
CreateDbBatch()02
Dispose(...)80
DisposeAsync()022
Clone()02
System.ICloneable.Clone()02
CloneWith(...)030
SetSessionFailed(...)02
Cancel(...)080
GetCachedProcedure()092
SetActiveReader(...)32
FinishQuerying(...)325
CreateSessionAsync()47113
SetState(...)122
MySqlConnection(...)09
VerifyNotDisposed()20
CloseAsync()2716
DoCloseAsync()099
CloseDatabaseAsync()033
GetConnectionSettings()23
GetInitializedConnectionSettings()10
MySqlConnection()60
+
+

File(s)

+

/_/src/MySqlConnector/MySqlConnection.cs

+

File '/_/src/MySqlConnector/MySqlConnection.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlConnection()
+MySqlConnection(string)
+MySqlConnection(MySqlConnector.MySqlDataSource)
+MySqlConnection(string, MySqlConnector.Logging.MySqlConnectorLoggingConfiguration)
+BeginTransaction()
+BeginTransaction(System.Data.IsolationLevel)
+BeginTransaction(System.Data.IsolationLevel, bool)
+BeginDbTransaction(System.Data.IsolationLevel)
+BeginTransactionAsync(System.Threading.CancellationToken)
+BeginTransactionAsync(System.Data.IsolationLevel, System.Threading.CancellationToken)
+BeginDbTransactionAsync()
+BeginTransactionAsync(System.Data.IsolationLevel, bool, System.Threading.CancellationToken)
+BeginTransactionAsync()
+EnlistTransaction(System.Transactions.Transaction)
+UnenlistTransaction()
+FindExistingEnlistedSession(System.Transactions.Transaction)
+TakeSessionFrom(MySqlConnector.MySqlConnection)
+Close()
+CloseAsync()
+CloseAsync(MySqlConnector.Protocol.Serialization.IOBehavior)
+ChangeDatabase(string)
+ChangeDatabaseAsync(string, System.Threading.CancellationToken)
+ChangeDatabaseAsync()
+CreateCommand()
+Ping()
+PingAsync(System.Threading.CancellationToken)
+PingAsync()
+Open()
+OpenAsync(System.Threading.CancellationToken)
+OpenAsync()
+ResetConnectionAsync()
+ConnectionString()
+ConnectionString(string)
+Database()
+State()
+DataSource()
+ServerVersion()
+ServerThread()
+ProvideClientCertificatesCallback()
+ProvideClientCertificatesCallback(System.Func<System.Security.Cryptography.X509Certificates.X509CertificateCollection, System.Threading.Tasks.ValueTask>)
+ProvidePasswordCallback()
+ProvidePasswordCallback(System.Func<MySqlConnector.MySqlProvidePasswordContext, string>)
+RemoteCertificateValidationCallback()
+RemoteCertificateValidationCallback(System.Net.Security.RemoteCertificateValidationCallback)
+ClearPool(MySqlConnector.MySqlConnection)
+ClearPoolAsync(MySqlConnector.MySqlConnection, System.Threading.CancellationToken)
+ClearAllPools()
+ClearAllPoolsAsync(System.Threading.CancellationToken)
+ClearPoolAsync()
+CreateDbCommand()
+DbProviderFactory()
+GetSchema()
+GetSchema(string)
+GetSchema(string, string[])
+GetSchemaAsync(System.Threading.CancellationToken)
+GetSchemaAsync(string, System.Threading.CancellationToken)
+GetSchemaAsync(string, string[], System.Threading.CancellationToken)
+GetSchemaProvider()
+ConnectionTimeout()
+CreateBatch()
+CreateDbBatch()
+CanCreateBatch()
+Dispose(bool)
+DisposeAsync()
+Clone()
+System.ICloneable.Clone()
+CloneWith(string)
+Session()
+SetSessionFailed(System.Exception)
+Cancel(MySqlConnector.Core.ICancellableCommand, int, bool)
+GetCachedProcedure()
+CurrentTransaction()
+CurrentTransaction(MySqlConnector.MySqlTransaction)
+LoggingConfiguration()
+AllowLoadLocalInfile()
+AllowUserVariables()
+AllowZeroDateTime()
+ConvertZeroDateTime()
+DateTimeKind()
+DefaultCommandTimeout()
+GuidFormat()
+IgnoreCommandTransaction()
+IgnorePrepare()
+NoBackslashEscapes()
+TreatTinyAsBoolean()
+AsyncIOBehavior()
+SimpleAsyncIOBehavior()
+SslMode()
+ActiveCommandId()
+SupportsPerQueryVariables()
+HasActiveReader()
+SetActiveReader(MySqlConnector.MySqlDataReader)
+FinishQuerying(bool)
+CreateSessionAsync()
+SslIsEncrypted()
+SslIsSigned()
+SslIsAuthenticated()
+SslIsMutuallyAuthenticated()
+SslProtocol()
+SetState(System.Data.ConnectionState)
+MySqlConnection(MySqlConnector.MySqlConnection, MySqlConnector.MySqlDataSource, string, bool)
+VerifyNotDisposed()
+CloseAsync()
+DoCloseAsync()
+CloseDatabaseAsync()
+GetConnectionSettings()
+GetInitializedConnectionSettings()
+MySqlConnection()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectionStringBuilder.html b/coveragereport/mysqlconnector.dll_MySqlConnectionStringBuilder.html new file mode 100644 index 0000000..27f3c05 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectionStringBuilder.html @@ -0,0 +1,295 @@ + + + + + + + +MySqlConnector.MySqlConnectionStringBuilder - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConnectionStringBuilder
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs
+
+
+
+
+
+
+
Line coverage
+
+
48%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:73
Uncovered lines:76
Coverable lines:149
Total lines:886
Line coverage:48.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs

+

File '/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlConnectionStringBuilder()
+MySqlConnectionStringBuilder(string)
+Server()
+Server(string)
+Port()
+Port(uint)
+UserID()
+UserID(string)
+Password()
+Password(string)
+Database()
+Database(string)
+LoadBalance()
+LoadBalance(MySqlConnector.MySqlLoadBalance)
+ConnectionProtocol()
+ConnectionProtocol(MySqlConnector.MySqlConnectionProtocol)
+PipeName()
+PipeName(string)
+SslMode()
+SslMode(MySqlConnector.MySqlSslMode)
+CertificateFile()
+CertificateFile(string)
+CertificatePassword()
+CertificatePassword(string)
+CertificateStoreLocation()
+CertificateStoreLocation(MySqlConnector.MySqlCertificateStoreLocation)
+CertificateThumbprint()
+CertificateThumbprint(string)
+SslCert()
+SslCert(string)
+SslKey()
+SslKey(string)
+CACertificateFile()
+CACertificateFile(string)
+SslCa()
+SslCa(string)
+TlsVersion()
+TlsVersion(string)
+TlsCipherSuites()
+TlsCipherSuites(string)
+Pooling()
+Pooling(bool)
+ConnectionLifeTime()
+ConnectionLifeTime(uint)
+ConnectionReset()
+ConnectionReset(bool)
+DeferConnectionReset()
+DeferConnectionReset(bool)
+ConnectionIdlePingTime()
+ConnectionIdlePingTime(uint)
+ConnectionIdleTimeout()
+ConnectionIdleTimeout(uint)
+MinimumPoolSize()
+MinimumPoolSize(uint)
+MaximumPoolSize()
+MaximumPoolSize(uint)
+DnsCheckInterval()
+DnsCheckInterval(uint)
+AllowLoadLocalInfile()
+AllowLoadLocalInfile(bool)
+AllowPublicKeyRetrieval()
+AllowPublicKeyRetrieval(bool)
+AllowUserVariables()
+AllowUserVariables(bool)
+AllowZeroDateTime()
+AllowZeroDateTime(bool)
+ApplicationName()
+ApplicationName(string)
+AutoEnlist()
+AutoEnlist(bool)
+CancellationTimeout()
+CancellationTimeout(int)
+CharacterSet()
+CharacterSet(string)
+ConnectionTimeout()
+ConnectionTimeout(uint)
+ConvertZeroDateTime()
+ConvertZeroDateTime(bool)
+DateTimeKind()
+DateTimeKind(MySqlConnector.MySqlDateTimeKind)
+DefaultCommandTimeout()
+DefaultCommandTimeout(uint)
+ForceSynchronous()
+ForceSynchronous(bool)
+GuidFormat()
+GuidFormat(MySqlConnector.MySqlGuidFormat)
+IgnoreCommandTransaction()
+IgnoreCommandTransaction(bool)
+IgnorePrepare()
+IgnorePrepare(bool)
+InteractiveSession()
+InteractiveSession(bool)
+Keepalive()
+Keepalive(uint)
+NoBackslashEscapes()
+NoBackslashEscapes(bool)
+OldGuids()
+OldGuids(bool)
+PersistSecurityInfo()
+PersistSecurityInfo(bool)
+Pipelining()
+Pipelining(bool)
+ServerRedirectionMode()
+ServerRedirectionMode(MySqlConnector.MySqlServerRedirectionMode)
+ServerRsaPublicKeyFile()
+ServerRsaPublicKeyFile(string)
+ServerSPN()
+ServerSPN(string)
+TreatTinyAsBoolean()
+TreatTinyAsBoolean(bool)
+UseAffectedRows()
+UseAffectedRows(bool)
+UseCompression()
+UseCompression(bool)
+UseXaTransactions()
+UseXaTransactions(bool)
+Keys()
+ContainsKey(string)
+Remove(string)
+Item(string)
+Item(string, object)
+DoSetValue(string, object)
+GetConnectionString(bool)
+GetProperties(System.Collections.Hashtable)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectionStringOption.html b/coveragereport/mysqlconnector.dll_MySqlConnectionStringOption.html new file mode 100644 index 0000000..aba68f2 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectionStringOption.html @@ -0,0 +1,181 @@ + + + + + + + +MySqlConnector.MySqlConnectionStringOption - Coverage Report + +
+

< Summary

+
+ +
+
+
+
Line coverage
+
+
99%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:228
Uncovered lines:1
Coverable lines:229
Total lines:1363
Line coverage:99.5%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs

+

File '/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs' does not exist (any more).

+

/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs

+

File '/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectionStringReferenceOption_T_.html b/coveragereport/mysqlconnector.dll_MySqlConnectionStringReferenceOption_T_.html new file mode 100644 index 0000000..defabf7 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectionStringReferenceOption_T_.html @@ -0,0 +1,176 @@ + + + + + + + +MySqlConnector.MySqlConnectionStringReferenceOption<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConnectionStringReferenceOption<T>
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs
+
+
+
+
+
+
+
Line coverage
+
+
88%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:8
Uncovered lines:1
Coverable lines:9
Total lines:1380
Line coverage:88.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
MySqlConnectionStringReferenceOption(...)20
GetValue(...)60
SetValue(...)52
GetObject(...)02
SetObject(...)30
ChangeType(...)40
+
+

File(s)

+

/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs

+

File '/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectionStringValueOption_T_.html b/coveragereport/mysqlconnector.dll_MySqlConnectionStringValueOption_T_.html new file mode 100644 index 0000000..c575f0f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectionStringValueOption_T_.html @@ -0,0 +1,176 @@ + + + + + + + +MySqlConnector.MySqlConnectionStringValueOption<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConnectionStringValueOption<T>
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs
+
+
+
+
+
+
+
Line coverage
+
+
47%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:11
Uncovered lines:12
Coverable lines:23
Total lines:1353
Line coverage:47.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
MySqlConnectionStringValueOption(...)20
GetValue(...)60
SetValue(...)52
GetObject(...)02
SetObject(...)30
ChangeType(...)3837
+
+

File(s)

+

/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs

+

File '/_/src/MySqlConnector/MySqlConnectionStringBuilder.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectorFactory.html b/coveragereport/mysqlconnector.dll_MySqlConnectorFactory.html new file mode 100644 index 0000000..eb5c6ed --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectorFactory.html @@ -0,0 +1,190 @@ + + + + + + + +MySqlConnector.MySqlConnectorFactory - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConnectorFactory
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConnectorFactory.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:16
Coverable lines:16
Total lines:103
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlConnectorFactory.cs

+

File '/_/src/MySqlConnector/MySqlConnectorFactory.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectorLogManager.html b/coveragereport/mysqlconnector.dll_MySqlConnectorLogManager.html new file mode 100644 index 0000000..a3ebe3d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectorLogManager.html @@ -0,0 +1,183 @@ + + + + + + + +MySqlConnector.Logging.MySqlConnectorLogManager - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.MySqlConnectorLogManager
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Logging/MySqlConnectorLogManager.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:20
Coverable lines:20
Total lines:62
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Logging/MySqlConnectorLogManager.cs

+

File '/_/src/MySqlConnector/Logging/MySqlConnectorLogManager.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConnectorLoggingConfiguration.html b/coveragereport/mysqlconnector.dll_MySqlConnectorLoggingConfiguration.html new file mode 100644 index 0000000..2116035 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConnectorLoggingConfiguration.html @@ -0,0 +1,176 @@ + + + + + + + +MySqlConnector.Logging.MySqlConnectorLoggingConfiguration - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.MySqlConnectorLoggingConfiguration
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Logging/MySqlConnectorLoggingConfiguration.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:8
Uncovered lines:0
Coverable lines:8
Total lines:16
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
MySqlConnectorLoggingConfiguration(...)70
MySqlConnectorLoggingConfiguration()30
+
+

File(s)

+

/_/src/MySqlConnector/Logging/MySqlConnectorLoggingConfiguration.cs

+

File '/_/src/MySqlConnector/Logging/MySqlConnectorLoggingConfiguration.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlConversionException.html b/coveragereport/mysqlconnector.dll_MySqlConversionException.html new file mode 100644 index 0000000..22b6e7f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlConversionException.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.MySqlConversionException - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlConversionException
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlConversionException.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:27
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
MySqlConversionException(...)02
MySqlConversionException(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlConversionException.cs

+

File '/_/src/MySqlConnector/MySqlConversionException.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDataAdapter.html b/coveragereport/mysqlconnector.dll_MySqlDataAdapter.html new file mode 100644 index 0000000..89ef027 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDataAdapter.html @@ -0,0 +1,211 @@ + + + + + + + +MySqlConnector.MySqlDataAdapter - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDataAdapter
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataAdapter.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:110
Coverable lines:110
Total lines:237
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlDataAdapter.cs

+

File '/_/src/MySqlConnector/MySqlDataAdapter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDataReader.html b/coveragereport/mysqlconnector.dll_MySqlDataReader.html new file mode 100644 index 0000000..21cfd2c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDataReader.html @@ -0,0 +1,353 @@ + + + + + + + +MySqlConnector.MySqlDataReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDataReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
20%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:79
Uncovered lines:306
Coverable lines:385
Total lines:694
Line coverage:20.5%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
NextResult()010
Read()06
ReadAsync()245
ReadAsync(...)02
NextResultAsync()041
NextResultAsync()2680
ActivateResultSet(...)437
ScanResultSetAsync()1143
GetName(...)03
GetValues(...)04
IsDBNull(...)04
GetOrdinal(...)03
GetBoolean(...)04
GetBoolean(...)03
GetByte(...)04
GetByte(...)03
GetSByte(...)04
GetSByte(...)03
GetBytes(...)04
GetBytes(...)05
GetChar(...)04
GetChar(...)03
GetChars(...)04
GetGuid(...)04
GetGuid(...)03
GetInt16(...)04
GetInt16(...)03
GetInt32(...)04
GetInt32(...)03
GetInt64(...)04
GetInt64(...)03
GetDataTypeName(...)03
GetFieldType(...)03
GetFieldType(...)03
GetValue(...)04
GetEnumerator()02
GetDbDataReader(...)02
GetDateOnly(...)03
GetDateOnly(...)03
GetDateTime(...)04
GetDateTime(...)03
GetDateTimeOffset(...)04
GetDateTimeOffset(...)03
GetMySqlDateTime(...)04
GetMySqlDateTime(...)03
GetMySqlGeometry(...)04
GetMySqlGeometry(...)03
GetMySqlDecimal(...)04
GetMySqlDecimal(...)03
GetTimeOnly(...)03
GetTimeOnly(...)03
GetTimeSpan(...)02
GetTimeSpan(...)03
GetStream(...)04
GetStream(...)03
GetTextReader(...)03
GetTextReader(...)03
GetString(...)04
GetString(...)03
GetDecimal(...)04
GetDecimal(...)03
GetDouble(...)04
GetDouble(...)03
GetFloat(...)04
GetFloat(...)03
GetUInt16(...)04
GetUInt16(...)03
GetUInt32(...)04
GetUInt32(...)03
GetUInt64(...)04
GetUInt64(...)03
GetSchemaTable()04
GetSchemaTableAsync(...)04
Close()50
GetColumnSchema()025
GetColumnSchemaAsync(...)04
GetFieldValue<T>(...)0150
Dispose(...)90
DisposeAsync()07
InitAsync()3234
BuildSchemaTable()0133
MySqlDataReader()30
DisposeAsync()3928
ReadOutParametersAsync()057
VerifyNotDisposed()32
GetResultSet()07
+
+

File(s)

+

/_/src/MySqlConnector/MySqlDataReader.cs

+

File '/_/src/MySqlConnector/MySqlDataReader.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+NextResult()
+Read()
+ReadAsync()
+ReadAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+NextResultAsync()
+NextResultAsync()
+ActivateResultSet(System.Threading.CancellationToken)
+ScanResultSetAsync()
+GetName(int)
+GetValues(object[])
+IsDBNull(int)
+FieldCount()
+Item(int)
+Item(string)
+HasRows()
+IsClosed()
+RecordsAffected()
+GetOrdinal(string)
+GetBoolean(int)
+GetBoolean(string)
+GetByte(int)
+GetByte(string)
+GetSByte(int)
+GetSByte(string)
+GetBytes(int, long, byte[], int, int)
+GetBytes(string, long, byte[], int, int)
+GetChar(int)
+GetChar(string)
+GetChars(int, long, char[], int, int)
+GetGuid(int)
+GetGuid(string)
+GetInt16(int)
+GetInt16(string)
+GetInt32(int)
+GetInt32(string)
+GetInt64(int)
+GetInt64(string)
+GetDataTypeName(int)
+GetFieldType(string)
+GetFieldType(int)
+GetValue(int)
+GetEnumerator()
+Depth()
+GetDbDataReader(int)
+GetDateOnly(int)
+GetDateOnly(string)
+GetDateTime(int)
+GetDateTime(string)
+GetDateTimeOffset(int)
+GetDateTimeOffset(string)
+GetMySqlDateTime(int)
+GetMySqlDateTime(string)
+GetMySqlGeometry(int)
+GetMySqlGeometry(string)
+GetMySqlDecimal(int)
+GetMySqlDecimal(string)
+GetTimeOnly(int)
+GetTimeOnly(string)
+GetTimeSpan(int)
+GetTimeSpan(string)
+GetStream(int)
+GetStream(string)
+GetTextReader(int)
+GetTextReader(string)
+GetString(int)
+GetString(string)
+GetDecimal(int)
+GetDecimal(string)
+GetDouble(int)
+GetDouble(string)
+GetFloat(int)
+GetFloat(string)
+GetUInt16(int)
+GetUInt16(string)
+GetUInt32(int)
+GetUInt32(string)
+GetUInt64(int)
+GetUInt64(string)
+VisibleFieldCount()
+GetSchemaTable()
+GetSchemaTableAsync(System.Threading.CancellationToken)
+Close()
+GetColumnSchema()
+GetColumnSchemaAsync(System.Threading.CancellationToken)
+GetFieldValue<T>(int)
+Dispose(bool)
+DisposeAsync()
+Activity()
+Activity(System.Diagnostics.Activity)
+Command()
+Command(MySqlConnector.Core.IMySqlCommand)
+Connection()
+RealRecordsAffected()
+RealRecordsAffected(System.Nullable<ulong>)
+Session()
+InitAsync()
+BuildSchemaTable()
+MySqlDataReader()
+DisposeAsync()
+ReadOutParametersAsync()
+VerifyNotDisposed()
+LastUsedPreparedStatement()
+GetResultSet()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDataSource.html b/coveragereport/mysqlconnector.dll_MySqlDataSource.html new file mode 100644 index 0000000..06e7491 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDataSource.html @@ -0,0 +1,193 @@ + + + + + + + +MySqlConnector.MySqlDataSource - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDataSource
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataSource.cs
+
+
+
+
+
+
+
Line coverage
+
+
41%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:35
Uncovered lines:49
Coverable lines:84
Total lines:212
Line coverage:41.6%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlDataSource.cs

+

File '/_/src/MySqlConnector/MySqlDataSource.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDataSourceBuilder.html b/coveragereport/mysqlconnector.dll_MySqlDataSourceBuilder.html new file mode 100644 index 0000000..b189c9e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDataSourceBuilder.html @@ -0,0 +1,179 @@ + + + + + + + +MySqlConnector.MySqlDataSourceBuilder - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDataSourceBuilder
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataSourceBuilder.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:26
Coverable lines:26
Total lines:113
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlDataSourceBuilder.cs

+

File '/_/src/MySqlConnector/MySqlDataSourceBuilder.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDateTime.html b/coveragereport/mysqlconnector.dll_MySqlDateTime.html new file mode 100644 index 0000000..20bf50f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDateTime.html @@ -0,0 +1,249 @@ + + + + + + + +MySqlConnector.MySqlDateTime - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDateTime
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDateTime.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:74
Coverable lines:74
Total lines:203
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlDateTime.cs

+

File '/_/src/MySqlConnector/MySqlDateTime.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlDateTime(System.DateTime)
+MySqlDateTime(MySqlConnector.MySqlDateTime)
+IsValidDateTime()
+MySqlDateTime(int, int, int, int, int, int, int)
+Year()
+Year(int)
+Month()
+Month(int)
+Day()
+Day(int)
+Hour()
+Hour(int)
+Minute()
+Minute(int)
+Second()
+Second(int)
+Microsecond()
+Microsecond(int)
+Millisecond()
+Millisecond(int)
+GetDateTime()
+ToString()
+op_Explicit(MySqlConnector.MySqlDateTime)
+Equals(object)
+GetHashCode()
+op_Equality(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+op_Inequality(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+op_LessThan(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+op_LessThanOrEqual(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+op_GreaterThan(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+op_GreaterThanOrEqual(MySqlConnector.MySqlDateTime, MySqlConnector.MySqlDateTime)
+System.IComparable.CompareTo(object)
+System.IComparable<MySqlConnector.MySqlDateTime>.CompareTo(MySqlConnector.MySqlDateTime)
+System.IEquatable<MySqlConnector.MySqlDateTime>.Equals(MySqlConnector.MySqlDateTime)
+System.IConvertible.ToDateTime(System.IFormatProvider)
+System.IConvertible.ToString(System.IFormatProvider)
+System.IConvertible.ToType(System.Type, System.IFormatProvider)
+System.IConvertible.GetTypeCode()
+System.IConvertible.ToBoolean(System.IFormatProvider)
+System.IConvertible.ToChar(System.IFormatProvider)
+System.IConvertible.ToSByte(System.IFormatProvider)
+System.IConvertible.ToByte(System.IFormatProvider)
+System.IConvertible.ToInt16(System.IFormatProvider)
+System.IConvertible.ToUInt16(System.IFormatProvider)
+System.IConvertible.ToInt32(System.IFormatProvider)
+System.IConvertible.ToUInt32(System.IFormatProvider)
+System.IConvertible.ToInt64(System.IFormatProvider)
+System.IConvertible.ToUInt64(System.IFormatProvider)
+System.IConvertible.ToSingle(System.IFormatProvider)
+System.IConvertible.ToDouble(System.IFormatProvider)
+System.IConvertible.ToDecimal(System.IFormatProvider)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDbColumn.html b/coveragereport/mysqlconnector.dll_MySqlDbColumn.html new file mode 100644 index 0000000..8d1c34c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDbColumn.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.MySqlDbColumn - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDbColumn
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDbColumn.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:37
Coverable lines:37
Total lines:54
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlDbColumn(...)0114
+
+

File(s)

+

/_/src/MySqlConnector/MySqlDbColumn.cs

+

File '/_/src/MySqlConnector/MySqlDbColumn.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlDecimal.html b/coveragereport/mysqlconnector.dll_MySqlDecimal.html new file mode 100644 index 0000000..ea833ce --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlDecimal.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.MySqlDecimal - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlDecimal
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDecimal.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:13
Coverable lines:13
Total lines:50
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
ToDouble()03
ToString()01
MySqlDecimal(...)030
MySqlDecimal()02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlDecimal.cs

+

File '/_/src/MySqlConnector/MySqlDecimal.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlEndOfStreamException.html b/coveragereport/mysqlconnector.dll_MySqlEndOfStreamException.html new file mode 100644 index 0000000..a4d097c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlEndOfStreamException.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.MySqlEndOfStreamException - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlEndOfStreamException
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlEndOfStreamException.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:15
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlEndOfStreamException(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlEndOfStreamException.cs

+

File '/_/src/MySqlConnector/MySqlEndOfStreamException.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlError.html b/coveragereport/mysqlconnector.dll_MySqlError.html new file mode 100644 index 0000000..56088a0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlError.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.MySqlError - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlError
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlError.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:38
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlError(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlError.cs

+

File '/_/src/MySqlConnector/MySqlError.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlException.html b/coveragereport/mysqlconnector.dll_MySqlException.html new file mode 100644 index 0000000..5408fd8 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlException.html @@ -0,0 +1,191 @@ + + + + + + + +MySqlConnector.MySqlException - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlException
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlException.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:41
Coverable lines:41
Total lines:129
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlException.cs

+

File '/_/src/MySqlConnector/MySqlException.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlGeometry.html b/coveragereport/mysqlconnector.dll_MySqlGeometry.html new file mode 100644 index 0000000..ab1266d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlGeometry.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.MySqlGeometry - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlGeometry
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlGeometry.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:52
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
FromWkb(...)09
FromMySql(...)03
MySqlGeometry(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlGeometry.cs

+

File '/_/src/MySqlConnector/MySqlGeometry.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlHelper.html b/coveragereport/mysqlconnector.dll_MySqlHelper.html new file mode 100644 index 0000000..810da6a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlHelper.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.MySqlHelper - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlHelper
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlHelper.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:13
Coverable lines:13
Total lines:38
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ClearConnectionPools()02
EscapeString(...)030
+
+

File(s)

+

/_/src/MySqlConnector/MySqlHelper.cs

+

File '/_/src/MySqlConnector/MySqlHelper.cs' does not exist (any more).

+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlInfoMessageEventArgs.html b/coveragereport/mysqlconnector.dll_MySqlInfoMessageEventArgs.html new file mode 100644 index 0000000..5da2914 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlInfoMessageEventArgs.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.MySqlInfoMessageEventArgs - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlInfoMessageEventArgs
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlInfoMessageEventArgs.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:14
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlInfoMessageEventArgs(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlInfoMessageEventArgs.cs

+

File '/_/src/MySqlConnector/MySqlInfoMessageEventArgs.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlParameter.html b/coveragereport/mysqlconnector.dll_MySqlParameter.html new file mode 100644 index 0000000..a9dec62 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlParameter.html @@ -0,0 +1,234 @@ + + + + + + + +MySqlConnector.MySqlParameter - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlParameter
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlParameter.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:466
Coverable lines:466
Total lines:950
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlParameter.cs

+

File '/_/src/MySqlConnector/MySqlParameter.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+MySqlParameter()
+MySqlParameter(string, object)
+MySqlParameter(string, MySqlConnector.MySqlDbType)
+MySqlParameter(string, MySqlConnector.MySqlDbType, int)
+MySqlParameter(string, MySqlConnector.MySqlDbType, int, string)
+MySqlParameter(string, MySqlConnector.MySqlDbType, int, System.Data.ParameterDirection, bool, byte, byte, string, System.Data.DataRowVersion, object)
+DbType()
+DbType(System.Data.DbType)
+MySqlDbType()
+MySqlDbType(MySqlConnector.MySqlDbType)
+Direction()
+Direction(System.Data.ParameterDirection)
+IsNullable()
+IsNullable(bool)
+Precision()
+Precision(byte)
+Scale()
+Scale(byte)
+ParameterName()
+ParameterName(string)
+Size()
+Size(int)
+SourceColumn()
+SourceColumn(string)
+SourceColumnNullMapping()
+SourceColumnNullMapping(bool)
+SourceVersion()
+SourceVersion(System.Data.DataRowVersion)
+Value()
+Value(object)
+ResetDbType()
+Clone()
+System.ICloneable.Clone()
+WithParameterName(string)
+MySqlParameter(MySqlConnector.MySqlParameter)
+MySqlParameter(MySqlConnector.MySqlParameter, string)
+HasSetDirection()
+HasSetDbType()
+HasSetDbType(bool)
+NormalizedParameterName()
+NormalizedParameterName(string)
+ParameterCollection()
+ParameterCollection(MySqlConnector.MySqlParameterCollection)
+AppendSqlString(MySqlConnector.Protocol.Serialization.ByteBufferWriter, MySqlConnector.Core.StatementPreparerOptions)
+AppendBinary(MySqlConnector.Protocol.Serialization.ByteBufferWriter, MySqlConnector.Core.StatementPreparerOptions)
+AppendBinary(MySqlConnector.Protocol.Serialization.ByteBufferWriter, object, MySqlConnector.Core.StatementPreparerOptions)
+NormalizeParameterName(string)
+WriteDateOnly(MySqlConnector.Protocol.Serialization.ByteBufferWriter, System.DateOnly)
+WriteDateTime(MySqlConnector.Protocol.Serialization.ByteBufferWriter, System.DateTime)
+WriteTime(MySqlConnector.Protocol.Serialization.ByteBufferWriter, System.TimeSpan)
+BinaryBytes()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlParameterCollection.html b/coveragereport/mysqlconnector.dll_MySqlParameterCollection.html new file mode 100644 index 0000000..2723fd7 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlParameterCollection.html @@ -0,0 +1,229 @@ + + + + + + + +MySqlConnector.MySqlParameterCollection - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlParameterCollection
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlParameterCollection.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:100
Coverable lines:100
Total lines:205
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlParameterCollection.cs

+

File '/_/src/MySqlConnector/MySqlParameterCollection.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlProtocolException.html b/coveragereport/mysqlconnector.dll_MySqlProtocolException.html new file mode 100644 index 0000000..cd103e6 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlProtocolException.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.MySqlProtocolException - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlProtocolException
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlProtocolException.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:32
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
CreateForPacketOutOfOrder(...)09
MySqlProtocolException(...)02
MySqlProtocolException(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlProtocolException.cs

+

File '/_/src/MySqlConnector/MySqlProtocolException.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlProvidePasswordContext.html b/coveragereport/mysqlconnector.dll_MySqlProvidePasswordContext.html new file mode 100644 index 0000000..dc30c5b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlProvidePasswordContext.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.MySqlProvidePasswordContext - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlProvidePasswordContext
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlProvidePasswordContext.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:35
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlProvidePasswordContext(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlProvidePasswordContext.cs

+

File '/_/src/MySqlConnector/MySqlProvidePasswordContext.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlRowUpdatedEventArgs.html b/coveragereport/mysqlconnector.dll_MySqlRowUpdatedEventArgs.html new file mode 100644 index 0000000..b0aa621 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlRowUpdatedEventArgs.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.MySqlRowUpdatedEventArgs - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlRowUpdatedEventArgs
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataAdapter.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:268
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlRowUpdatedEventArgs(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlDataAdapter.cs

+

File '/_/src/MySqlConnector/MySqlDataAdapter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlRowUpdatingEventArgs.html b/coveragereport/mysqlconnector.dll_MySqlRowUpdatingEventArgs.html new file mode 100644 index 0000000..afde898 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlRowUpdatingEventArgs.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.MySqlRowUpdatingEventArgs - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlRowUpdatingEventArgs
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlDataAdapter.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:258
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlRowUpdatingEventArgs(...)02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlDataAdapter.cs

+

File '/_/src/MySqlConnector/MySqlDataAdapter.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlRowsCopiedEventArgs.html b/coveragereport/mysqlconnector.dll_MySqlRowsCopiedEventArgs.html new file mode 100644 index 0000000..509d581 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlRowsCopiedEventArgs.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.MySqlRowsCopiedEventArgs - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlRowsCopiedEventArgs
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlRowsCopiedEventArgs.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:18
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
MySqlRowsCopiedEventArgs()02
+
+

File(s)

+

/_/src/MySqlConnector/MySqlRowsCopiedEventArgs.cs

+

File '/_/src/MySqlConnector/MySqlRowsCopiedEventArgs.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_MySqlTransaction.html b/coveragereport/mysqlconnector.dll_MySqlTransaction.html new file mode 100644 index 0000000..837e6cd --- /dev/null +++ b/coveragereport/mysqlconnector.dll_MySqlTransaction.html @@ -0,0 +1,210 @@ + + + + + + + +MySqlConnector.MySqlTransaction - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.MySqlTransaction
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/MySqlTransaction.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:79
Coverable lines:79
Total lines:295
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/MySqlTransaction.cs

+

File '/_/src/MySqlConnector/MySqlTransaction.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_NegotiateToMySqlConverterStream.html b/coveragereport/mysqlconnector.dll_NegotiateToMySqlConverterStream.html new file mode 100644 index 0000000..cdf1a42 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_NegotiateToMySqlConverterStream.html @@ -0,0 +1,190 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.NegotiateToMySqlConverterStream - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.NegotiateToMySqlConverterStream
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:83
Coverable lines:83
Total lines:200
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/AuthGSSAPI.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_NoOpLogger.html b/coveragereport/mysqlconnector.dll_NoOpLogger.html new file mode 100644 index 0000000..90d614e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_NoOpLogger.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Logging.NoOpLogger - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.NoOpLogger
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Logging/NoOpLogger.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:25
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
IsEnabled(...)01
Log(...)01
NoOpLogger()02
+
+

File(s)

+

/_/src/MySqlConnector/Logging/NoOpLogger.cs

+

File '/_/src/MySqlConnector/Logging/NoOpLogger.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_NoOpLoggerProvider.html b/coveragereport/mysqlconnector.dll_NoOpLoggerProvider.html new file mode 100644 index 0000000..5c03dc0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_NoOpLoggerProvider.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Logging.NoOpLoggerProvider - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Logging.NoOpLoggerProvider
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Logging/NoOpLoggerProvider.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
CreateLogger(...)02
+
+

File(s)

+

/_/src/MySqlConnector/Logging/NoOpLoggerProvider.cs

+

File '/_/src/MySqlConnector/Logging/NoOpLoggerProvider.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+CreateLogger(string)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_NormalizedSchema.html b/coveragereport/mysqlconnector.dll_NormalizedSchema.html new file mode 100644 index 0000000..70f76e6 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_NormalizedSchema.html @@ -0,0 +1,175 @@ + + + + + + + +MySqlConnector.Core.NormalizedSchema - Coverage Report + +
+

< Summary

+ +
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:27
Coverable lines:27
Total lines:108
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
File 1: MustNormalize(...)010
File 1: NormalizedSchema(...)053
File 2: NameRegex()01
+
+

File(s)

+

/_/src/MySqlConnector/Core/NormalizedSchema.cs

+

File '/_/src/MySqlConnector/Core/NormalizedSchema.cs' does not exist (any more).

+

/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs

+

File '/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_NullColumnReader.html b/coveragereport/mysqlconnector.dll_NullColumnReader.html new file mode 100644 index 0000000..8dced9f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_NullColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.NullColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.NullColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/NullColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:11
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
NullColumnReader()02
ReadValue(...)01
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/NullColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/NullColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_OkPayload.html b/coveragereport/mysqlconnector.dll_OkPayload.html new file mode 100644 index 0000000..4d62706 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_OkPayload.html @@ -0,0 +1,182 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.OkPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.OkPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/OkPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
78%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:43
Uncovered lines:12
Coverable lines:55
Total lines:140
Line coverage:78.1%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
IsOk(...)113
Create(...)20
Verify(...)20
Read(...)4621
OkPayload(...)20
OkPayload()03
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/OkPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/OkPayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_Packet.html b/coveragereport/mysqlconnector.dll_Packet.html new file mode 100644 index 0000000..b11629c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_Packet.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.Packet - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.Packet
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/Packet.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:3
Uncovered lines:0
Coverable lines:3
Total lines:11
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Packet(...)10
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/Packet.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/Packet.cs' does not exist (any more).

+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ParsedStatement.html b/coveragereport/mysqlconnector.dll_ParsedStatement.html new file mode 100644 index 0000000..003f0d2 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ParsedStatement.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Core.ParsedStatement - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ParsedStatement
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ParsedStatement.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:31
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
ParsedStatement()05
+
+

File(s)

+

/_/src/MySqlConnector/Core/ParsedStatement.cs

+

File '/_/src/MySqlConnector/Core/ParsedStatement.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ParsedStatements.html b/coveragereport/mysqlconnector.dll_ParsedStatements.html new file mode 100644 index 0000000..ca9e59e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ParsedStatements.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.Core.ParsedStatements - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ParsedStatements
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ParsedStatements.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:6
Coverable lines:6
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ParsedStatements(...)02
Dispose()03
+
+

File(s)

+

/_/src/MySqlConnector/Core/ParsedStatements.cs

+

File '/_/src/MySqlConnector/Core/ParsedStatements.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_PayloadData.html b/coveragereport/mysqlconnector.dll_PayloadData.html new file mode 100644 index 0000000..a7270eb --- /dev/null +++ b/coveragereport/mysqlconnector.dll_PayloadData.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.Protocol.PayloadData - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.PayloadData
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/PayloadData.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:10
Uncovered lines:0
Coverable lines:10
Total lines:25
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
PayloadData(...)20
PayloadData(...)10
Dispose()80
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/PayloadData.cs

+

File '/_/src/MySqlConnector/Protocol/PayloadData.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_PingPayload.html b/coveragereport/mysqlconnector.dll_PingPayload.html new file mode 100644 index 0000000..4bc07b1 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_PingPayload.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.PingPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.PingPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/PingPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:6
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
PingPayload()02
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/PingPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/PingPayload.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Instance()
+PingPayload()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_PreparedStatement.html b/coveragereport/mysqlconnector.dll_PreparedStatement.html new file mode 100644 index 0000000..a132ee2 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_PreparedStatement.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Core.PreparedStatement - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.PreparedStatement
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/PreparedStatement.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:14
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
PreparedStatement(...)02
+
+

File(s)

+

/_/src/MySqlConnector/Core/PreparedStatement.cs

+

File '/_/src/MySqlConnector/Core/PreparedStatement.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_PreparedStatements.html b/coveragereport/mysqlconnector.dll_PreparedStatements.html new file mode 100644 index 0000000..9a0d4b6 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_PreparedStatements.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.Core.PreparedStatements - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.PreparedStatements
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/PreparedStatements.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
PreparedStatements(...)02
Dispose()04
+
+

File(s)

+

/_/src/MySqlConnector/Core/PreparedStatements.cs

+

File '/_/src/MySqlConnector/Core/PreparedStatements.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ProtocolUtility.html b/coveragereport/mysqlconnector.dll_ProtocolUtility.html new file mode 100644 index 0000000..6c226bb --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ProtocolUtility.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.ProtocolUtility - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.ProtocolUtility
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs
+
+
+
+
+
+
+
Line coverage
+
+
57%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:28
Uncovered lines:21
Coverable lines:49
Total lines:501
Line coverage:57.1%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
GetBytesPerCharacter(...)030
ReadPayloadAsync()4351
WritePayloadAsync()385
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_QueryPayload.html b/coveragereport/mysqlconnector.dll_QueryPayload.html new file mode 100644 index 0000000..a483084 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_QueryPayload.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.QueryPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.QueryPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/QueryPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:6
Uncovered lines:0
Coverable lines:6
Total lines:13
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
Create(...)130
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/QueryPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/QueryPayload.cs' does not exist (any more).

+
+
+ +
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_QuitPayload.html b/coveragereport/mysqlconnector.dll_QuitPayload.html new file mode 100644 index 0000000..9ed8eef --- /dev/null +++ b/coveragereport/mysqlconnector.dll_QuitPayload.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.QuitPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.QuitPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/QuitPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:6
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
QuitPayload()02
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/QuitPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/QuitPayload.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Instance()
+QuitPayload()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_RandomLoadBalancer.html b/coveragereport/mysqlconnector.dll_RandomLoadBalancer.html new file mode 100644 index 0000000..612cc8d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_RandomLoadBalancer.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Core.RandomLoadBalancer - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.RandomLoadBalancer
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ILoadBalancer.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:11
Coverable lines:11
Total lines:48
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
RandomLoadBalancer()02
LoadBalance(...)018
RandomLoadBalancer()03
+
+

File(s)

+

/_/src/MySqlConnector/Core/ILoadBalancer.cs

+

File '/_/src/MySqlConnector/Core/ILoadBalancer.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ResetConnectionPayload.html b/coveragereport/mysqlconnector.dll_ResetConnectionPayload.html new file mode 100644 index 0000000..da8b11f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ResetConnectionPayload.html @@ -0,0 +1,167 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.ResetConnectionPayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.ResetConnectionPayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/ResetConnectionPayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:6
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
ResetConnectionPayload()02
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/ResetConnectionPayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/ResetConnectionPayload.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Instance()
+ResetConnectionPayload()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ResizableArraySegment_T_.html b/coveragereport/mysqlconnector.dll_ResizableArraySegment_T_.html new file mode 100644 index 0000000..055e646 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ResizableArraySegment_T_.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Utilities.ResizableArraySegment<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.ResizableArraySegment<T>
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/ResizableArraySegment.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:4
Uncovered lines:0
Coverable lines:4
Total lines:14
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ResizableArraySegment(...)10
op_Implicit(...)60
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/ResizableArraySegment.cs

+

File '/_/src/MySqlConnector/Utilities/ResizableArraySegment.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ResizableArray_T_.html b/coveragereport/mysqlconnector.dll_ResizableArray_T_.html new file mode 100644 index 0000000..28cbb2b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ResizableArray_T_.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.Utilities.ResizableArray<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.ResizableArray<T>
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/ResizableArray.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:6
Uncovered lines:0
Coverable lines:6
Total lines:22
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
AsSpan(...)20
DoResize(...)51
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/ResizableArray.cs

+

File '/_/src/MySqlConnector/Utilities/ResizableArray.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+Array()
+Count()
+AsSpan(int)
+DoResize(int)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ResultSet.html b/coveragereport/mysqlconnector.dll_ResultSet.html new file mode 100644 index 0000000..222749a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ResultSet.html @@ -0,0 +1,215 @@ + + + + + + + +MySqlConnector.Core.ResultSet - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ResultSet
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ResultSet.cs
+
+
+
+
+
+
+
Line coverage
+
+
37%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:72
Uncovered lines:122
Coverable lines:194
Total lines:374
Line coverage:37.1%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/ResultSet.cs

+

File '/_/src/MySqlConnector/Core/ResultSet.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_RoundRobinLoadBalancer.html b/coveragereport/mysqlconnector.dll_RoundRobinLoadBalancer.html new file mode 100644 index 0000000..4ce7e10 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_RoundRobinLoadBalancer.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Core.RoundRobinLoadBalancer - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.RoundRobinLoadBalancer
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ILoadBalancer.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:9
Coverable lines:9
Total lines:68
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
RoundRobinLoadBalancer()03
LoadBalance(...)021
+
+

File(s)

+

/_/src/MySqlConnector/Core/ILoadBalancer.cs

+

File '/_/src/MySqlConnector/Core/ILoadBalancer.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_Row.html b/coveragereport/mysqlconnector.dll_Row.html new file mode 100644 index 0000000..720b4f5 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_Row.html @@ -0,0 +1,236 @@ + + + + + + + +MySqlConnector.Core.Row - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.Row
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/Row.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:299
Coverable lines:299
Total lines:499
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/Row.cs

+

File '/_/src/MySqlConnector/Core/Row.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SchemaProvider.html b/coveragereport/mysqlconnector.dll_SchemaProvider.html new file mode 100644 index 0000000..284ffa3 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SchemaProvider.html @@ -0,0 +1,250 @@ + + + + + + + +MySqlConnector.Core.SchemaProvider - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.SchemaProvider
Assembly:mysqlconnector.dll
File(s):File 1: /_/src/MySqlConnector/Core/SchemaProvider.cs
File 2: /_/src/MySqlConnector/Core/SchemaProvider.g.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1193
Coverable lines:1193
Total lines:1463
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
File 1: SchemaProvider(...)02
File 1: DoFillDataSourceInformation(...)026
File 1: DoFillDataTypes(...)074
File 1: DoFillReservedWords(...)06
File 1: FillDataTableAsync()018
File 1: FillDataTableAsync()0115
File 1: DoFillForeignKeysAsync(...)04
File 1: DoFillIndexesAsync(...)04
File 1: DoFillIndexColumnsAsync(...)04
File 2: GetSchemaAsync()0396
File 2: FillMetaDataCollectionsAsync(...)079
File 2: FillCharacterSetsAsync()031
File 2: FillCollationsAsync()035
File 2: FillCollationCharacterSetApplicabilityAsync()027
File 2: FillColumnsAsync()087
File 2: FillDatabasesAsync()033
File 2: FillDataSourceInformationAsync(...)044
File 2: FillDataTypesAsync(...)056
File 2: FillEnginesAsync()035
File 2: FillKeyColumnUsageAsync()047
File 2: FillKeyWordsAsync()027
File 2: FillParametersAsync()055
File 2: FillPartitionsAsync()073
File 2: FillPluginsAsync()045
File 2: FillProceduresAsync()063
File 2: FillProcessListAsync()039
File 2: FillProfilingAsync()059
File 2: FillReferentialConstraintsAsync()045
File 2: FillReservedWordsAsync(...)012
File 2: FillResourceGroupsAsync()033
File 2: FillRestrictionsAsync(...)059
File 2: FillSchemaPrivilegesAsync()033
File 2: FillTablesAsync()087
File 2: FillTableConstraintsAsync()035
File 2: FillTablePrivilegesAsync()035
File 2: FillTableSpacesAsync()041
File 2: FillTriggersAsync()067
File 2: FillUserPrivilegesAsync()031
File 2: FillViewsAsync()043
File 2: FillForeignKeysAsync()047
File 2: FillIndexesAsync()039
File 2: FillIndexColumnsAsync()037
+
+

File(s)

+

/_/src/MySqlConnector/Core/SchemaProvider.cs

+

File '/_/src/MySqlConnector/Core/SchemaProvider.cs' does not exist (any more).

+

/_/src/MySqlConnector/Core/SchemaProvider.g.cs

+

File '/_/src/MySqlConnector/Core/SchemaProvider.g.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+SchemaProvider(MySqlConnector.MySqlConnection)
+DoFillDataSourceInformation(System.Data.DataTable)
+DoFillDataTypes(System.Data.DataTable)
+DoFillReservedWords(System.Data.DataTable)
+FillDataTableAsync()
+FillDataTableAsync()
+DoFillForeignKeysAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string[], System.Threading.CancellationToken)
+DoFillIndexesAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string[], System.Threading.CancellationToken)
+DoFillIndexColumnsAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string[], System.Threading.CancellationToken)
+GetSchemaAsync()
+FillMetaDataCollectionsAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string, string[], System.Threading.CancellationToken)
+FillCharacterSetsAsync()
+FillCollationsAsync()
+FillCollationCharacterSetApplicabilityAsync()
+FillColumnsAsync()
+FillDatabasesAsync()
+FillDataSourceInformationAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string, string[], System.Threading.CancellationToken)
+FillDataTypesAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string, string[], System.Threading.CancellationToken)
+FillEnginesAsync()
+FillKeyColumnUsageAsync()
+FillKeyWordsAsync()
+FillParametersAsync()
+FillPartitionsAsync()
+FillPluginsAsync()
+FillProceduresAsync()
+FillProcessListAsync()
+FillProfilingAsync()
+FillReferentialConstraintsAsync()
+FillReservedWordsAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string, string[], System.Threading.CancellationToken)
+FillResourceGroupsAsync()
+FillRestrictionsAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Data.DataTable, string, string[], System.Threading.CancellationToken)
+FillSchemaPrivilegesAsync()
+FillTablesAsync()
+FillTableConstraintsAsync()
+FillTablePrivilegesAsync()
+FillTableSpacesAsync()
+FillTriggersAsync()
+FillUserPrivilegesAsync()
+FillViewsAsync()
+FillForeignKeysAsync()
+FillIndexesAsync()
+FillIndexColumnsAsync()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SerializationUtility.html b/coveragereport/mysqlconnector.dll_SerializationUtility.html new file mode 100644 index 0000000..1256a02 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SerializationUtility.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.SerializationUtility - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.SerializationUtility
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/SerializationUtility.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:8
Uncovered lines:0
Coverable lines:8
Total lines:21
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
ReadUInt32(...)60
WriteUInt32(...)40
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/SerializationUtility.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/SerializationUtility.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ServerSession.html b/coveragereport/mysqlconnector.dll_ServerSession.html new file mode 100644 index 0000000..6daac6a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ServerSession.html @@ -0,0 +1,324 @@ + + + + + + + +MySqlConnector.Core.ServerSession - Coverage Report + +
+

< Summary

+ +
+
+
Line coverage
+
+
30%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:311
Uncovered lines:708
Coverable lines:1019
Total lines:3770
Line coverage:30.5%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
File 1: ServerSession()290
File 1: ServerSession(...)03
File 1: ServerSession(...)171
File 1: ReturnToPoolAsync(...)182
File 1: TryStartCancel(...)026
File 1: DoCancel(...)031
File 1: AbortCancel(...)012
File 1: PrepareAsync()0182
File 1: TryGetPreparedStatement(...)23
File 1: StartQuerying(...)145
File 1: FinishQuerying()2222
File 1: SetTimeout(...)30
File 1: StartActivity(...)310
File 1: DisposeAsync()052
File 1: ConnectAsync()225134
File 1: TryResetConnectionAsync()0206
File 1: SwitchAuthenticationAsync()0227
File 1: SendClearPasswordAsync()028
File 1: SendEncryptedPasswordAsync()052
File 1: GetRsaPublicKeyAsync()056
File 1: TryPingAsync()057
File 1: SendAsync(...)30
File 1: ReceiveAsync(...)30
File 1: ReceiveReplyAsync()2315
File 1: SendReplyAsync()1710
File 1: ThrowIfStatementContainsDelimiter(...)016
File 1: CreateExceptionForInvalidState()107
File 1: OpenTcpSocketAsync()98121
File 1: OpenUnixSocketAsync()077
File 1: OpenNamedPipeAsync()086
File 1: InitSslAsync()77215
File 1: ShouldGetRealServerDetails(...)1612
File 1: GetRealServerDetailsAsync()0118
File 1: ShutdownSocket()09
File 1: SafeDispose<T>(...)07
File 1: SetFailed(...)015
File 1: VerifyState(...)211
File 1: VerifyState(...)028
File 1: CreateConnectionAttributes(...)503
File 1: CreateExceptionForErrorPayload(...)011
File 1: ClearPreparedStatements()014
File 1: GetPassword(...)518
File 1: DelimiterSqlParser(...)06
File 1: OnStatementBegin(...)010
File 2: ServerSession()290
File 2: CannotExecuteNewCommandInState(...)04
File 2: EnteringFinishQuerying(...)31
File 2: ExpectedSessionState1(...)04
File 2: __ExpectedSessionState6Struct(...)01
File 2: ToString()019
File 2: __ExpectedSessionState6Struct()02
File 2: GetEnumerator()09
File 2: global::System.Collections.IEnumerable.GetEnumerator()02
File 2: ExpectedSessionState6(...)06
+
+

File(s)

+

/_/src/MySqlConnector/Core/ServerSession.cs

+

File '/_/src/MySqlConnector/Core/ServerSession.cs' does not exist (any more).

+

/_/src/MySqlConnector/Microsoft.Extensions.Logging.Generators/Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator/LoggerMessage.g.cs

+

File '/_/src/MySqlConnector/Microsoft.Extensions.Logging.Generators/Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator/LoggerMessage.g.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+ServerSession()
+ServerSession(Microsoft.Extensions.Logging.ILogger)
+ServerSession(Microsoft.Extensions.Logging.ILogger, MySqlConnector.Core.ConnectionPool, int, int)
+Id()
+ServerVersion()
+ServerVersion(MySqlConnector.Core.ServerVersion)
+SupportsPerQueryVariables()
+ActiveCommandId()
+ActiveCommandId(int)
+CancellationTimeout()
+CancellationTimeout(int)
+ConnectionId()
+ConnectionId(int)
+AuthPluginData()
+AuthPluginData(byte[])
+CreatedTimestamp()
+Pool()
+PoolGeneration()
+LastLeasedTimestamp()
+LastLeasedTimestamp(long)
+LastReturnedTimestamp()
+LastReturnedTimestamp(long)
+DatabaseOverride()
+DatabaseOverride(string)
+HostName()
+HostName(string)
+IPEndPoint()
+UserID()
+UserID(string)
+OwningConnection()
+OwningConnection(System.WeakReference<MySqlConnector.MySqlConnection>)
+SupportsDeprecateEof()
+SupportsCachedPreparedMetadata()
+SupportsCachedPreparedMetadata(bool)
+SupportsQueryAttributes()
+SupportsQueryAttributes(bool)
+SupportsSessionTrack()
+ProcAccessDenied()
+ProcAccessDenied(bool)
+ActivityTags()
+DataReader()
+ReturnToPoolAsync(MySqlConnector.Protocol.Serialization.IOBehavior, MySqlConnector.MySqlConnection)
+IsConnected()
+TryStartCancel(MySqlConnector.Core.ICancellableCommand)
+DoCancel(MySqlConnector.Core.ICancellableCommand, MySqlConnector.MySqlCommand)
+AbortCancel(MySqlConnector.Core.ICancellableCommand)
+IsCancelingQuery()
+PrepareAsync()
+TryGetPreparedStatement(string)
+StartQuerying(MySqlConnector.Core.ICancellableCommand)
+FinishQuerying()
+SetTimeout(int)
+StartActivity(string, string, object)
+DisposeAsync()
+ConnectAsync()
+TryResetConnectionAsync()
+SwitchAuthenticationAsync()
+SendClearPasswordAsync()
+SendEncryptedPasswordAsync()
+GetRsaPublicKeyAsync()
+TryPingAsync()
+SendAsync(MySqlConnector.Protocol.PayloadData, MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+ReceiveAsync(MySqlConnector.Protocol.Serialization.IOBehavior, System.Threading.CancellationToken)
+ReceiveReplyAsync()
+SendReplyAsync()
+ThrowIfStatementContainsDelimiter(MySqlConnector.MySqlException, MySqlConnector.Core.IMySqlCommand)
+CreateExceptionForInvalidState()
+OpenTcpSocketAsync()
+OpenUnixSocketAsync()
+OpenNamedPipeAsync()
+InitSslAsync()
+ShouldGetRealServerDetails(MySqlConnector.Core.ConnectionSettings)
+GetRealServerDetailsAsync()
+ShutdownSocket()
+SafeDispose<T>(ref T)
+SetFailed(System.Exception)
+VerifyState(MySqlConnector.Core.ServerSession.State)
+VerifyState(MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State)
+SslIsEncrypted()
+SslIsSigned()
+SslIsAuthenticated()
+SslIsMutuallyAuthenticated()
+SslProtocol()
+CreateConnectionAttributes(string)
+CreateExceptionForErrorPayload(System.ReadOnlySpan<byte>)
+ClearPreparedStatements()
+GetPassword(MySqlConnector.Core.ConnectionSettings, MySqlConnector.MySqlConnection)
+DelimiterSqlParser(MySqlConnector.Core.IMySqlCommand)
+HasDelimiter()
+HasDelimiter(bool)
+OnStatementBegin(int)
+Sql()
+ServerSession()
+CannotExecuteNewCommandInState(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.Core.ServerSession.State)
+EnteringFinishQuerying(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.Core.ServerSession.State)
+ExpectedSessionState1(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State)
+__ExpectedSessionState6Struct(string, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State)
+ToString()
+__ExpectedSessionState6Struct()
+Count()
+Item(int)
+GetEnumerator()
+global::System.Collections.IEnumerable.GetEnumerator()
+ExpectedSessionState6(Microsoft.Extensions.Logging.ILogger, string, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State, MySqlConnector.Core.ServerSession.State)
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ServerVersion.html b/coveragereport/mysqlconnector.dll_ServerVersion.html new file mode 100644 index 0000000..4312865 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ServerVersion.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.Core.ServerVersion - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ServerVersion
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ServerVersion.cs
+
+
+
+
+
+
+
Line coverage
+
+
86%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:25
Uncovered lines:4
Coverable lines:29
Total lines:60
Line coverage:86.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
ServerVersion(...)364
ServerVersion()20
ServerVersion()30
+
+

File(s)

+

/_/src/MySqlConnector/Core/ServerVersion.cs

+

File '/_/src/MySqlConnector/Core/ServerVersion.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ServerVersions.html b/coveragereport/mysqlconnector.dll_ServerVersions.html new file mode 100644 index 0000000..de8d46b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ServerVersions.html @@ -0,0 +1,166 @@ + + + + + + + +MySqlConnector.Core.ServerVersions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.ServerVersions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/ServerVersions.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:6
Uncovered lines:0
Coverable lines:6
Total lines:22
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
ServerVersions()70
+
+

File(s)

+

/_/src/MySqlConnector/Core/ServerVersions.cs

+

File '/_/src/MySqlConnector/Core/ServerVersions.cs' does not exist (any more).

+
+
+
+

Methods/Properties

+ServerVersions()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SingleCommandPayloadCreator.html b/coveragereport/mysqlconnector.dll_SingleCommandPayloadCreator.html new file mode 100644 index 0000000..a2e3e7f --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SingleCommandPayloadCreator.html @@ -0,0 +1,180 @@ + + + + + + + +MySqlConnector.Core.SingleCommandPayloadCreator - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.SingleCommandPayloadCreator
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/SingleCommandPayloadCreator.cs
+
+
+
+
+
+
+
Line coverage
+
+
17%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:25
Uncovered lines:118
Coverable lines:143
Total lines:272
Line coverage:17.4%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/SingleCommandPayloadCreator.cs

+

File '/_/src/MySqlConnector/Core/SingleCommandPayloadCreator.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SocketByteHandler.html b/coveragereport/mysqlconnector.dll_SocketByteHandler.html new file mode 100644 index 0000000..0f1dc1d --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SocketByteHandler.html @@ -0,0 +1,180 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.SocketByteHandler - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.SocketByteHandler
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/SocketByteHandler.cs
+
+
+
+
+
+
+
Line coverage
+
+
53%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:26
Uncovered lines:23
Coverable lines:49
Total lines:136
Line coverage:53%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + +
MethodBlocks covered Blocks not covered
SocketByteHandler(...)40
Dispose()10
ReadBytesAsync(...)32
DoReadBytesSync(...)029
DoReadBytesAsync()3719
WriteBytesAsync(...)36
DoWriteBytesAsync()115
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/SocketByteHandler.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/SocketByteHandler.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SocketExtensions.html b/coveragereport/mysqlconnector.dll_SocketExtensions.html new file mode 100644 index 0000000..706bf59 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SocketExtensions.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Utilities.SocketExtensions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.SocketExtensions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/SocketExtensions.cs
+
+
+
+
+
+
+
Line coverage
+
+
42%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:3
Uncovered lines:4
Coverable lines:7
Total lines:72
Line coverage:42.8%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Send(...)03
SetKeepAlive(...)33
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/SocketExtensions.cs

+

File '/_/src/MySqlConnector/Utilities/SocketExtensions.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_SqlParser.html b/coveragereport/mysqlconnector.dll_SqlParser.html new file mode 100644 index 0000000..1dd4f6c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_SqlParser.html @@ -0,0 +1,185 @@ + + + + + + + +MySqlConnector.Core.SqlParser - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.SqlParser
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/SqlParser.cs
+
+
+
+
+
+
+
Line coverage
+
+
36%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:58
Uncovered lines:99
Coverable lines:157
Total lines:346
Line coverage:36.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/SqlParser.cs

+

File '/_/src/MySqlConnector/Core/SqlParser.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StandardEnlistedTransaction.html b/coveragereport/mysqlconnector.dll_StandardEnlistedTransaction.html new file mode 100644 index 0000000..135b516 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StandardEnlistedTransaction.html @@ -0,0 +1,174 @@ + + + + + + + +MySqlConnector.Core.StandardEnlistedTransaction - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.StandardEnlistedTransaction
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/StandardEnlistedTransaction.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:27
Coverable lines:27
Total lines:48
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + +
MethodBlocks covered Blocks not covered
StandardEnlistedTransaction(...)02
OnStart()038
OnPrepare(...)01
OnCommit(...)09
OnRollback(...)09
+
+

File(s)

+

/_/src/MySqlConnector/Core/StandardEnlistedTransaction.cs

+

File '/_/src/MySqlConnector/Core/StandardEnlistedTransaction.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StandardPayloadHandler.html b/coveragereport/mysqlconnector.dll_StandardPayloadHandler.html new file mode 100644 index 0000000..fb48433 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StandardPayloadHandler.html @@ -0,0 +1,178 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.StandardPayloadHandler - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.StandardPayloadHandler
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/StandardPayloadHandler.cs
+
+
+
+
+
+
+
Line coverage
+
+
78%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:15
Uncovered lines:4
Coverable lines:19
Total lines:57
Line coverage:78.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/StandardPayloadHandler.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/StandardPayloadHandler.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StatementPrepareResponsePayload.html b/coveragereport/mysqlconnector.dll_StatementPrepareResponsePayload.html new file mode 100644 index 0000000..b935e96 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StatementPrepareResponsePayload.html @@ -0,0 +1,171 @@ + + + + + + + +MySqlConnector.Protocol.Payloads.StatementPrepareResponsePayload - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Payloads.StatementPrepareResponsePayload
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Payloads/StatementPrepareResponsePayload.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:15
Coverable lines:15
Total lines:30
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
Create(...)09
StatementPrepareResponsePayload(...)01
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Payloads/StatementPrepareResponsePayload.cs

+

File '/_/src/MySqlConnector/Protocol/Payloads/StatementPrepareResponsePayload.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StatementPreparer.html b/coveragereport/mysqlconnector.dll_StatementPreparer.html new file mode 100644 index 0000000..8ccf9b4 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StatementPreparer.html @@ -0,0 +1,204 @@ + + + + + + + +MySqlConnector.Core.StatementPreparer - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.StatementPreparer
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/StatementPreparer.cs
+
+
+
+
+
+
+
Line coverage
+
+
20%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:15
Uncovered lines:59
Coverable lines:74
Total lines:152
Line coverage:20.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/StatementPreparer.cs

+

File '/_/src/MySqlConnector/Core/StatementPreparer.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StreamByteHandler.html b/coveragereport/mysqlconnector.dll_StreamByteHandler.html new file mode 100644 index 0000000..22fe157 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StreamByteHandler.html @@ -0,0 +1,178 @@ + + + + + + + +MySqlConnector.Protocol.Serialization.StreamByteHandler - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Protocol.Serialization.StreamByteHandler
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Protocol/Serialization/StreamByteHandler.cs
+
+
+
+
+
+
+
Line coverage
+
+
46%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:23
Uncovered lines:27
Coverable lines:50
Total lines:107
Line coverage:46%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
StreamByteHandler(...)40
Dispose()02
ReadBytesAsync(...)69
ReadBytesAsync()3823
WriteBytesAsync(...)36
WriteBytesAsync()115
+
+

File(s)

+

/_/src/MySqlConnector/Protocol/Serialization/StreamByteHandler.cs

+

File '/_/src/MySqlConnector/Protocol/Serialization/StreamByteHandler.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_StringColumnReader.html b/coveragereport/mysqlconnector.dll_StringColumnReader.html new file mode 100644 index 0000000..2d7e374 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_StringColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.StringColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.StringColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/StringColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:13
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
StringColumnReader()02
ReadValue(...)03
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/StringColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/StringColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextBooleanColumnReader.html b/coveragereport/mysqlconnector.dll_TextBooleanColumnReader.html new file mode 100644 index 0000000..8daaa08 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextBooleanColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextBooleanColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextBooleanColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextBooleanColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextBooleanColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextBooleanColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextBooleanColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextDateTimeColumnReader.html b/coveragereport/mysqlconnector.dll_TextDateTimeColumnReader.html new file mode 100644 index 0000000..2f7922e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextDateTimeColumnReader.html @@ -0,0 +1,170 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextDateTimeColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextDateTimeColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextDateTimeColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:42
Coverable lines:42
Total lines:95
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
TextDateTimeColumnReader(...)05
ReadValue(...)02
ParseDateTime(...)091
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextDateTimeColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextDateTimeColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextDoubleColumnReader.html b/coveragereport/mysqlconnector.dll_TextDoubleColumnReader.html new file mode 100644 index 0000000..142094b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextDoubleColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextDoubleColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextDoubleColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextDoubleColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:23
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
TextDoubleColumnReader()02
ReadValue(...)022
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextDoubleColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextDoubleColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextFloatColumnReader.html b/coveragereport/mysqlconnector.dll_TextFloatColumnReader.html new file mode 100644 index 0000000..45ea96a --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextFloatColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextFloatColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextFloatColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextFloatColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:23
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
TextFloatColumnReader()02
ReadValue(...)022
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextFloatColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextFloatColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextSignedInt16ColumnReader.html b/coveragereport/mysqlconnector.dll_TextSignedInt16ColumnReader.html new file mode 100644 index 0000000..cf12d54 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextSignedInt16ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextSignedInt16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextSignedInt16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextSignedInt16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextSignedInt16ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextSignedInt16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextSignedInt16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextSignedInt32ColumnReader.html b/coveragereport/mysqlconnector.dll_TextSignedInt32ColumnReader.html new file mode 100644 index 0000000..b43b9fb --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextSignedInt32ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextSignedInt32ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextSignedInt32ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextSignedInt32ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextSignedInt32ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextSignedInt32ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextSignedInt32ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextSignedInt64ColumnReader.html b/coveragereport/mysqlconnector.dll_TextSignedInt64ColumnReader.html new file mode 100644 index 0000000..f3af039 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextSignedInt64ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextSignedInt64ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextSignedInt64ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextSignedInt64ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextSignedInt64ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextSignedInt64ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextSignedInt64ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextSignedInt8ColumnReader.html b/coveragereport/mysqlconnector.dll_TextSignedInt8ColumnReader.html new file mode 100644 index 0000000..77e47a0 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextSignedInt8ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextSignedInt8ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextSignedInt8ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextSignedInt8ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextSignedInt8ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextSignedInt8ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextSignedInt8ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextTimeColumnReader.html b/coveragereport/mysqlconnector.dll_TextTimeColumnReader.html new file mode 100644 index 0000000..6c54b7e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextTimeColumnReader.html @@ -0,0 +1,169 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextTimeColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextTimeColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextTimeColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:12
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
TextTimeColumnReader()02
ReadValue(...)02
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextTimeColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextTimeColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextUnsignedInt16ColumnReader.html b/coveragereport/mysqlconnector.dll_TextUnsignedInt16ColumnReader.html new file mode 100644 index 0000000..d1e29e3 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextUnsignedInt16ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextUnsignedInt16ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextUnsignedInt16ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt16ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextUnsignedInt16ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt16ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt16ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextUnsignedInt32ColumnReader.html b/coveragereport/mysqlconnector.dll_TextUnsignedInt32ColumnReader.html new file mode 100644 index 0000000..cf83b3c --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextUnsignedInt32ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextUnsignedInt32ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextUnsignedInt32ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt32ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:18
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextUnsignedInt32ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt32ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt32ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextUnsignedInt64ColumnReader.html b/coveragereport/mysqlconnector.dll_TextUnsignedInt64ColumnReader.html new file mode 100644 index 0000000..6185e4b --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextUnsignedInt64ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextUnsignedInt64ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextUnsignedInt64ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt64ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextUnsignedInt64ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt64ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt64ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TextUnsignedInt8ColumnReader.html b/coveragereport/mysqlconnector.dll_TextUnsignedInt8ColumnReader.html new file mode 100644 index 0000000..22754bd --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TextUnsignedInt8ColumnReader.html @@ -0,0 +1,173 @@ + + + + + + + +MySqlConnector.ColumnReaders.TextUnsignedInt8ColumnReader - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.ColumnReaders.TextUnsignedInt8ColumnReader
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt8ColumnReader.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:20
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
TextUnsignedInt8ColumnReader()02
ReadValue(...)02
TryReadInt32(...)03
DoReadValue(...)07
+
+

File(s)

+

/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt8ColumnReader.cs

+

File '/_/src/MySqlConnector/ColumnReaders/TextUnsignedInt8ColumnReader.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TimerQueue.html b/coveragereport/mysqlconnector.dll_TimerQueue.html new file mode 100644 index 0000000..66c3193 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TimerQueue.html @@ -0,0 +1,184 @@ + + + + + + + +MySqlConnector.Utilities.TimerQueue - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.TimerQueue
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/TimerQueue.cs
+
+
+
+
+
+
+
Line coverage
+
+
61%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:35
Uncovered lines:22
Coverable lines:57
Total lines:132
Line coverage:61.4%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + + + +
MethodBlocks covered Blocks not covered
TimerQueue()20
Add(...)222
Remove(...)152
TimerQueue()60
Callback(...)038
UnsafeSetTimer(...)30
UnsafeClearTimer()02
Data(...)10
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/TimerQueue.cs

+

File '/_/src/MySqlConnector/Utilities/TimerQueue.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_TypeMapper.html b/coveragereport/mysqlconnector.dll_TypeMapper.html new file mode 100644 index 0000000..6562c11 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_TypeMapper.html @@ -0,0 +1,197 @@ + + + + + + + +MySqlConnector.Core.TypeMapper - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.TypeMapper
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/TypeMapper.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:199
Coverable lines:199
Total lines:350
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Core/TypeMapper.cs

+

File '/_/src/MySqlConnector/Core/TypeMapper.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_Utility.html b/coveragereport/mysqlconnector.dll_Utility.html new file mode 100644 index 0000000..e11e435 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_Utility.html @@ -0,0 +1,200 @@ + + + + + + + +MySqlConnector.Utilities.Utility - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.Utility
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/Utility.cs
+
+
+
+
+
+
+
Line coverage
+
+
9%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:14
Uncovered lines:138
Coverable lines:152
Total lines:684
Line coverage:9.2%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

/_/src/MySqlConnector/Utilities/Utility.cs

+

File '/_/src/MySqlConnector/Utilities/Utility.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_ValueTaskExtensions.html b/coveragereport/mysqlconnector.dll_ValueTaskExtensions.html new file mode 100644 index 0000000..3888437 --- /dev/null +++ b/coveragereport/mysqlconnector.dll_ValueTaskExtensions.html @@ -0,0 +1,168 @@ + + + + + + + +MySqlConnector.Utilities.ValueTaskExtensions - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Utilities.ValueTaskExtensions
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Utilities/ValueTaskExtensions.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + +
MethodBlocks covered Blocks not covered
FromException(...)02
FromException<T>(...)02
+
+

File(s)

+

/_/src/MySqlConnector/Utilities/ValueTaskExtensions.cs

+

File '/_/src/MySqlConnector/Utilities/ValueTaskExtensions.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll_XaEnlistedTransaction.html b/coveragereport/mysqlconnector.dll_XaEnlistedTransaction.html new file mode 100644 index 0000000..61c3a8e --- /dev/null +++ b/coveragereport/mysqlconnector.dll_XaEnlistedTransaction.html @@ -0,0 +1,176 @@ + + + + + + + +MySqlConnector.Core.XaEnlistedTransaction - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:MySqlConnector.Core.XaEnlistedTransaction
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/Core/XaEnlistedTransaction.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:21
Coverable lines:21
Total lines:52
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + + + +
MethodBlocks covered Blocks not covered
XaEnlistedTransaction(...)02
OnStart()09
OnPrepare(...)03
OnCommit(...)02
OnRollback(...)012
ExecuteXaCommand(...)011
+
+

File(s)

+

/_/src/MySqlConnector/Core/XaEnlistedTransaction.cs

+

File '/_/src/MySqlConnector/Core/XaEnlistedTransaction.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE1EA81E8FE504B5B6446748E035A__NameRegex_0.html b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE1EA81E8FE504B5B6446748E035A__NameRegex_0.html new file mode 100644 index 0000000..88f4324 --- /dev/null +++ b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE1EA81E8FE504B5B6446748E035A__NameRegex_0.html @@ -0,0 +1,172 @@ + + + + + + + +System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__NameRegex_0 - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__NameRegex_0
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:288
Coverable lines:288
Total lines:890
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
RegexGenerator_g()02
RegexGenerator_g()07
RegexGenerator_g()06
RegexGenerator_g()0252
+
+

File(s)

+

/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs

+

File '/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE711EA81E8FE504B5B6446748E035A__Utilities.html b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE711EA81E8FE504B5B6446748E035A__Utilities.html new file mode 100644 index 0000000..b9cfc86 --- /dev/null +++ b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCE711EA81E8FE504B5B6446748E035A__Utilities.html @@ -0,0 +1,172 @@ + + + + + + + +System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__Utilities - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__Utilities
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:41
Coverable lines:41
Total lines:1381
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
RegexGenerator_g()01
RegexGenerator_g()04
RegexGenerator_g()04
RegexGenerator_g()04
+
+

File(s)

+

/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs

+

File '/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCEFE504B5B6446748E035A__TlsVersionsRegex_1.html b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCEFE504B5B6446748E035A__TlsVersionsRegex_1.html new file mode 100644 index 0000000..5da93c5 --- /dev/null +++ b/coveragereport/mysqlconnector.dll__RegexGenerator_g_F74B1AE921BCEFE504B5B6446748E035A__TlsVersionsRegex_1.html @@ -0,0 +1,172 @@ + + + + + + + +System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__TlsVersionsRegex_1 - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:System.Text.RegularExpressions.Generated.<RegexGenerator_g>F74B1AE921BCEFE4BA601AA541C7A23B1CA9711EA81E8FE504B5B6446748E035A__TlsVersionsRegex_1
Assembly:mysqlconnector.dll
File(s):/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:142
Coverable lines:142
Total lines:1277
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
RegexGenerator_g()02
RegexGenerator_g()010
RegexGenerator_g()015
RegexGenerator_g()0128
+
+

File(s)

+

/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs

+

File '/_/src/MySqlConnector/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs' does not exist (any more).

+
+
+ + \ No newline at end of file diff --git a/coveragereport/report.css b/coveragereport/report.css new file mode 100644 index 0000000..db2d588 --- /dev/null +++ b/coveragereport/report.css @@ -0,0 +1,785 @@ +:root { + --green: #0aad0a; + --lightgreen: #dcf4dc; +} + +html { font-family: sans-serif; margin: 0; padding: 0; font-size: 0.9em; background-color: #d6d6d6; height: 100%; } +body { margin: 0; padding: 0; height: 100%; color: #000; } +h1 { font-family: 'Century Gothic', sans-serif; font-size: 1.2em; font-weight: normal; color: #fff; background-color: #6f6f6f; padding: 10px; margin: 20px -20px 20px -20px; } +h1:first-of-type { margin-top: 0; } +h2 { font-size: 1.0em; font-weight: bold; margin: 10px 0 15px 0; padding: 0; } +h3 { font-size: 1.0em; font-weight: bold; margin: 0 0 10px 0; padding: 0; display: inline-block; } +input, select, button { border: 1px solid #767676; border-radius: 0; } +button { background-color: #ddd; cursor: pointer; } +a { color: #c00; text-decoration: none; } +a:hover { color: #000; text-decoration: none; } +h1 a.back { color: #fff; background-color: #949494; display: inline-block; margin: -12px 5px -10px -10px; padding: 10px; border-right: 1px solid #fff; } +h1 a.back:hover { background-color: #ccc; } +h1 a.button { color: #000; background-color: #bebebe; margin: -5px 0 0 10px; padding: 5px 8px 5px 8px; border: 1px solid #fff; font-size: 0.9em; border-radius: 3px; float:right; } +h1 a.button:hover { background-color: #ccc; } +h1 a.button i { position: relative; top: 1px; } + +.container { margin: auto; max-width: 1650px; width: 90%; background-color: #fff; display: flex; box-shadow: 0 0 60px #7d7d7d; min-height: 100%; } +.containerleft { padding: 0 20px 20px 20px; flex: 1; min-width: 1%; } +.containerright { width: 340px; min-width: 340px; background-color: #e5e5e5; height: 100%; } +.containerrightfixed { position: fixed; padding: 0 20px 20px 20px; border-left: 1px solid #6f6f6f; width: 300px; overflow-y: auto; height: 100%; top: 0; bottom: 0; } +.containerrightfixed h1 { background-color: #c00; } +.containerrightfixed label, .containerright a { white-space: nowrap; overflow: hidden; display: inline-block; width: 100%; max-width: 300px; text-overflow: ellipsis; } +.containerright a { margin-bottom: 3px; } + +@media screen and (max-width:1200px){ + .container { box-shadow: none; width: 100%; } + .containerright { display: none; } +} + +.popup-container { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background-color: rgb(0, 0, 0, 0.6); z-index: 100; } +.popup { position: absolute; top: 50%; right: 50%; transform: translate(50%,-50%); background-color: #fff; padding: 25px; border-radius: 15px; min-width: 300px; } +.popup .close { text-align: right; color: #979797; font-size: 25px;position: relative; left: 10px; bottom: 10px; cursor: pointer; } + +.footer { font-size: 0.7em; text-align: center; margin-top: 35px; } + +.card-group { display: flex; flex-wrap: wrap; margin-top: -15px; margin-left: -15px; } +.card-group + .card-group { margin-top: 0; } +.card-group .card { margin-top: 15px; margin-left: 15px; display: flex; flex-direction: column; background-color: #e4e4e4; background: radial-gradient(circle, #fefefe 0%, #f6f6f6 100%); border: 1px solid #c1c1c1; padding: 15px; color: #6f6f6f; max-width: 100% } +.card-group .card .card-header { font-size: 1.5rem; font-family: 'Century Gothic', sans-serif; margin-bottom: 15px; flex-grow: 1; } +.card-group .card .card-body { display: flex; flex-direction: row; gap: 15px; flex-grow: 1; } +.card-group .card .card-body div.table { display: flex; flex-direction: column; } +.card-group .card .large { font-size: 5rem; line-height: 5rem; font-weight: bold; align-self: flex-end; border-left-width: 4px; padding-left: 10px; } +.card-group .card table { align-self: flex-end; border-collapse: collapse; } +.card-group .card table tr { border-bottom: 1px solid #c1c1c1; } +.card-group .card table tr:hover { background-color: #c1c1c1; } +.card-group .card table tr:last-child { border-bottom: none; } +.card-group .card table th, .card-group .card table td { padding: 2px; } +.card-group td.limit-width { max-width: 200px; text-overflow: ellipsis; overflow: hidden; } +.card-group td.overflow-wrap { overflow-wrap: anywhere; } + +.pro-button { color: #fff; background-color: #20A0D2; background-image: linear-gradient(50deg, #1c7ed6 0%, #23b8cf 100%); padding: 10px; border-radius: 3px; font-weight: bold; display: inline-block; } +.pro-button:hover { color: #fff; background-color: #1C8EB7; background-image: linear-gradient(50deg, #1A6FBA 0%, #1EA1B5 100%); } +.pro-button-tiny { border-radius: 10px; padding: 3px 8px; } + +th { text-align: left; } +.table-fixed { table-layout: fixed; } +.table-responsive { overflow-x: auto; } +.table-responsive::-webkit-scrollbar { height: 20px; } +.table-responsive::-webkit-scrollbar-thumb { background-color: #6f6f6f; border-radius: 20px; border: 5px solid #fff; } +.overview { border: 1px solid #c1c1c1; border-collapse: collapse; width: 100%; word-wrap: break-word; } +.overview th { border: 1px solid #c1c1c1; border-collapse: collapse; padding: 2px 4px 2px 4px; background-color: #ddd; } +.overview tr.namespace th { background-color: #dcdcdc; } +.overview thead th { background-color: #d1d1d1; } +.overview th a { color: #000; } +.overview tr.namespace a { margin-left: 15px; display: block; } +.overview td { border: 1px solid #c1c1c1; border-collapse: collapse; padding: 2px 5px 2px 5px; } +.overview tr.header th { background-color: #d1d1d1; } +.overview tr.header th:nth-child(2n+1) { background-color: #ddd; } +.overview tr.header th:first-child { border-left: 1px solid #fff; border-top: 1px solid #fff; background-color: #fff; } +.overview tr:hover>td { background-color: #b0b0b0; } + +div.currenthistory { margin: -2px -5px 0 -5px; padding: 2px 5px 2px 5px; height: 16px; } +.coverage { border-collapse: collapse; font-size: 5px; height: 10px; } +.coverage td { padding: 0; border: none; } +.stripped tr:nth-child(2n+1) { background-color: #F3F3F3; } + +.customizebox { font-size: 0.75em; margin-bottom: 7px; display: grid; grid-template-columns: 1fr; grid-template-rows: auto auto auto auto; grid-column-gap: 10px; grid-row-gap: 10px; } +.customizebox>div { align-self: end; } +.customizebox div.col-right input { width: 150px; } + +@media screen and (min-width: 1000px) { + .customizebox { grid-template-columns: repeat(4, 1fr); grid-template-rows: 1fr; } + .customizebox div.col-center { justify-self: center; } + .customizebox div.col-right { justify-self: end; } +} +.slider-label { position: relative; left: 85px; } + +.percentagebar { + padding-left: 3px; +} +a.percentagebar { + padding-left: 6px; +} +.percentagebarundefined { + border-left: 2px solid #fff; +} +.percentagebar0 { + border-left: 2px solid #c10909; +} +.percentagebar10 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 90%, var(--green) 90%, var(--green) 100%) 1; +} +.percentagebar20 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 80%, var(--green) 80%, var(--green) 100%) 1; +} +.percentagebar30 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 70%, var(--green) 70%, var(--green) 100%) 1; +} +.percentagebar40 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 60%, var(--green) 60%, var(--green) 100%) 1; +} +.percentagebar50 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 50%, var(--green) 50%, var(--green) 100%) 1; +} +.percentagebar60 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 40%, var(--green) 40%, var(--green) 100%) 1; +} +.percentagebar70 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 30%, var(--green) 30%, var(--green) 100%) 1; +} +.percentagebar80 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 20%, var(--green) 20%, var(--green) 100%) 1; +} +.percentagebar90 { + border-left: 2px solid; + border-image: linear-gradient(to bottom, #c10909 10%, var(--green) 10%, var(--green) 100%) 1; +} +.percentagebar100 { + border-left: 2px solid var(--green); +} + +.mt-1 { margin-top: 4px; } +.hidden, .ng-hide { display: none; } +.right { text-align: right; } +.center { text-align: center; } +.rightmargin { padding-right: 8px; } +.leftmargin { padding-left: 5px; } +.green { background-color: var(--green); } +.lightgreen { background-color: var(--lightgreen); } +.red { background-color: #c10909; } +.lightred { background-color: #f7dede; } +.orange { background-color: #FFA500; } +.lightorange { background-color: #FFEFD5; } +.gray { background-color: #dcdcdc; } +.lightgray { color: #888888; } +.lightgraybg { background-color: #dadada; } + +code { font-family: Consolas, monospace; font-size: 0.9em; } + +.toggleZoom { text-align:right; } + +.historychart svg { max-width: 100%; } +.ct-chart { position: relative; } +.ct-chart .ct-line { stroke-width: 2px !important; } +.ct-chart .ct-point { stroke-width: 6px !important; transition: stroke-width .2s; } +.ct-chart .ct-point:hover { stroke-width: 10px !important; } +.ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point { stroke: #c00 !important;} +.ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point { stroke: #1c2298 !important;} +.ct-chart .ct-series.ct-series-c .ct-line, .ct-chart .ct-series.ct-series-c .ct-point { stroke: #0aad0a !important;} + +.tinylinecoveragechart, .tinybranchcoveragechart, .tinymethodcoveragechart { background-color: #fff; margin-left: -3px; float: left; border: 1px solid #c1c1c1; width: 30px; height: 18px; } +.historiccoverageoffset { margin-top: 7px; } + +.tinylinecoveragechart .ct-line, .tinybranchcoveragechart .ct-line, .tinymethodcoveragechart .ct-line { stroke-width: 1px !important; } +.tinybranchcoveragechart .ct-series.ct-series-a .ct-line { stroke: #1c2298 !important; } +.tinymethodcoveragechart .ct-series.ct-series-a .ct-line { stroke: #0aad0a !important; } + +.linecoverage { background-color: #c00; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } +.branchcoverage { background-color: #1c2298; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } +.codeelementcoverage { background-color: #0aad0a; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } + +.tooltip { position: absolute; display: none; padding: 5px; background: #F4C63D; color: #453D3F; pointer-events: none; z-index: 1; min-width: 250px; } + +.column-min-200 { min-width: 200px; } +.column60 { width: 60px; } +.column70 { width: 70px; } +.column90 { width: 90px; } +.column98 { width: 98px; } +.column100 { width: 100px; } +.column105 { width: 105px; } +.column112 { width: 112px; } + +.cardpercentagebar { border-left-style: solid; } +.cardpercentagebar0 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 0%, var(--green) 0%) 1; } +.cardpercentagebar1 { border-image: linear-gradient(to bottom, #c10909 1%, #c10909 1%, var(--green) 1%) 1; } +.cardpercentagebar2 { border-image: linear-gradient(to bottom, #c10909 2%, #c10909 2%, var(--green) 2%) 1; } +.cardpercentagebar3 { border-image: linear-gradient(to bottom, #c10909 3%, #c10909 3%, var(--green) 3%) 1; } +.cardpercentagebar4 { border-image: linear-gradient(to bottom, #c10909 4%, #c10909 4%, var(--green) 4%) 1; } +.cardpercentagebar5 { border-image: linear-gradient(to bottom, #c10909 5%, #c10909 5%, var(--green) 5%) 1; } +.cardpercentagebar6 { border-image: linear-gradient(to bottom, #c10909 6%, #c10909 6%, var(--green) 6%) 1; } +.cardpercentagebar7 { border-image: linear-gradient(to bottom, #c10909 7%, #c10909 7%, var(--green) 7%) 1; } +.cardpercentagebar8 { border-image: linear-gradient(to bottom, #c10909 8%, #c10909 8%, var(--green) 8%) 1; } +.cardpercentagebar9 { border-image: linear-gradient(to bottom, #c10909 9%, #c10909 9%, var(--green) 9%) 1; } +.cardpercentagebar10 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 10%, var(--green) 10%) 1; } +.cardpercentagebar11 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 11%, var(--green) 11%) 1; } +.cardpercentagebar12 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 12%, var(--green) 12%) 1; } +.cardpercentagebar13 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 13%, var(--green) 13%) 1; } +.cardpercentagebar14 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 14%, var(--green) 14%) 1; } +.cardpercentagebar15 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 15%, var(--green) 15%) 1; } +.cardpercentagebar16 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 16%, var(--green) 16%) 1; } +.cardpercentagebar17 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 17%, var(--green) 17%) 1; } +.cardpercentagebar18 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 18%, var(--green) 18%) 1; } +.cardpercentagebar19 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 19%, var(--green) 19%) 1; } +.cardpercentagebar20 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 20%, var(--green) 20%) 1; } +.cardpercentagebar21 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 21%, var(--green) 21%) 1; } +.cardpercentagebar22 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 22%, var(--green) 22%) 1; } +.cardpercentagebar23 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 23%, var(--green) 23%) 1; } +.cardpercentagebar24 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 24%, var(--green) 24%) 1; } +.cardpercentagebar25 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 25%, var(--green) 25%) 1; } +.cardpercentagebar26 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 26%, var(--green) 26%) 1; } +.cardpercentagebar27 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 27%, var(--green) 27%) 1; } +.cardpercentagebar28 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 28%, var(--green) 28%) 1; } +.cardpercentagebar29 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 29%, var(--green) 29%) 1; } +.cardpercentagebar30 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 30%, var(--green) 30%) 1; } +.cardpercentagebar31 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 31%, var(--green) 31%) 1; } +.cardpercentagebar32 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 32%, var(--green) 32%) 1; } +.cardpercentagebar33 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 33%, var(--green) 33%) 1; } +.cardpercentagebar34 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 34%, var(--green) 34%) 1; } +.cardpercentagebar35 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 35%, var(--green) 35%) 1; } +.cardpercentagebar36 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 36%, var(--green) 36%) 1; } +.cardpercentagebar37 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 37%, var(--green) 37%) 1; } +.cardpercentagebar38 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 38%, var(--green) 38%) 1; } +.cardpercentagebar39 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 39%, var(--green) 39%) 1; } +.cardpercentagebar40 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 40%, var(--green) 40%) 1; } +.cardpercentagebar41 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 41%, var(--green) 41%) 1; } +.cardpercentagebar42 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 42%, var(--green) 42%) 1; } +.cardpercentagebar43 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 43%, var(--green) 43%) 1; } +.cardpercentagebar44 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 44%, var(--green) 44%) 1; } +.cardpercentagebar45 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 45%, var(--green) 45%) 1; } +.cardpercentagebar46 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 46%, var(--green) 46%) 1; } +.cardpercentagebar47 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 47%, var(--green) 47%) 1; } +.cardpercentagebar48 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 48%, var(--green) 48%) 1; } +.cardpercentagebar49 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 49%, var(--green) 49%) 1; } +.cardpercentagebar50 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 50%, var(--green) 50%) 1; } +.cardpercentagebar51 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 51%, var(--green) 51%) 1; } +.cardpercentagebar52 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 52%, var(--green) 52%) 1; } +.cardpercentagebar53 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 53%, var(--green) 53%) 1; } +.cardpercentagebar54 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 54%, var(--green) 54%) 1; } +.cardpercentagebar55 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 55%, var(--green) 55%) 1; } +.cardpercentagebar56 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 56%, var(--green) 56%) 1; } +.cardpercentagebar57 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 57%, var(--green) 57%) 1; } +.cardpercentagebar58 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 58%, var(--green) 58%) 1; } +.cardpercentagebar59 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 59%, var(--green) 59%) 1; } +.cardpercentagebar60 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 60%, var(--green) 60%) 1; } +.cardpercentagebar61 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 61%, var(--green) 61%) 1; } +.cardpercentagebar62 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 62%, var(--green) 62%) 1; } +.cardpercentagebar63 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 63%, var(--green) 63%) 1; } +.cardpercentagebar64 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 64%, var(--green) 64%) 1; } +.cardpercentagebar65 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 65%, var(--green) 65%) 1; } +.cardpercentagebar66 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 66%, var(--green) 66%) 1; } +.cardpercentagebar67 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 67%, var(--green) 67%) 1; } +.cardpercentagebar68 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 68%, var(--green) 68%) 1; } +.cardpercentagebar69 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 69%, var(--green) 69%) 1; } +.cardpercentagebar70 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 70%, var(--green) 70%) 1; } +.cardpercentagebar71 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 71%, var(--green) 71%) 1; } +.cardpercentagebar72 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 72%, var(--green) 72%) 1; } +.cardpercentagebar73 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 73%, var(--green) 73%) 1; } +.cardpercentagebar74 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 74%, var(--green) 74%) 1; } +.cardpercentagebar75 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 75%, var(--green) 75%) 1; } +.cardpercentagebar76 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 76%, var(--green) 76%) 1; } +.cardpercentagebar77 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 77%, var(--green) 77%) 1; } +.cardpercentagebar78 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 78%, var(--green) 78%) 1; } +.cardpercentagebar79 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 79%, var(--green) 79%) 1; } +.cardpercentagebar80 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 80%, var(--green) 80%) 1; } +.cardpercentagebar81 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 81%, var(--green) 81%) 1; } +.cardpercentagebar82 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 82%, var(--green) 82%) 1; } +.cardpercentagebar83 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 83%, var(--green) 83%) 1; } +.cardpercentagebar84 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 84%, var(--green) 84%) 1; } +.cardpercentagebar85 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 85%, var(--green) 85%) 1; } +.cardpercentagebar86 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 86%, var(--green) 86%) 1; } +.cardpercentagebar87 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 87%, var(--green) 87%) 1; } +.cardpercentagebar88 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 88%, var(--green) 88%) 1; } +.cardpercentagebar89 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 89%, var(--green) 89%) 1; } +.cardpercentagebar90 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 90%, var(--green) 90%) 1; } +.cardpercentagebar91 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 91%, var(--green) 91%) 1; } +.cardpercentagebar92 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 92%, var(--green) 92%) 1; } +.cardpercentagebar93 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 93%, var(--green) 93%) 1; } +.cardpercentagebar94 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 94%, var(--green) 94%) 1; } +.cardpercentagebar95 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 95%, var(--green) 95%) 1; } +.cardpercentagebar96 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 96%, var(--green) 96%) 1; } +.cardpercentagebar97 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 97%, var(--green) 97%) 1; } +.cardpercentagebar98 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 98%, var(--green) 98%) 1; } +.cardpercentagebar99 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 99%, var(--green) 99%) 1; } +.cardpercentagebar100 { border-image: linear-gradient(to bottom, #c10909 0%, #c10909 100%, var(--green) 100%) 1; } + +.covered0 { width: 0px; } +.covered1 { width: 1px; } +.covered2 { width: 2px; } +.covered3 { width: 3px; } +.covered4 { width: 4px; } +.covered5 { width: 5px; } +.covered6 { width: 6px; } +.covered7 { width: 7px; } +.covered8 { width: 8px; } +.covered9 { width: 9px; } +.covered10 { width: 10px; } +.covered11 { width: 11px; } +.covered12 { width: 12px; } +.covered13 { width: 13px; } +.covered14 { width: 14px; } +.covered15 { width: 15px; } +.covered16 { width: 16px; } +.covered17 { width: 17px; } +.covered18 { width: 18px; } +.covered19 { width: 19px; } +.covered20 { width: 20px; } +.covered21 { width: 21px; } +.covered22 { width: 22px; } +.covered23 { width: 23px; } +.covered24 { width: 24px; } +.covered25 { width: 25px; } +.covered26 { width: 26px; } +.covered27 { width: 27px; } +.covered28 { width: 28px; } +.covered29 { width: 29px; } +.covered30 { width: 30px; } +.covered31 { width: 31px; } +.covered32 { width: 32px; } +.covered33 { width: 33px; } +.covered34 { width: 34px; } +.covered35 { width: 35px; } +.covered36 { width: 36px; } +.covered37 { width: 37px; } +.covered38 { width: 38px; } +.covered39 { width: 39px; } +.covered40 { width: 40px; } +.covered41 { width: 41px; } +.covered42 { width: 42px; } +.covered43 { width: 43px; } +.covered44 { width: 44px; } +.covered45 { width: 45px; } +.covered46 { width: 46px; } +.covered47 { width: 47px; } +.covered48 { width: 48px; } +.covered49 { width: 49px; } +.covered50 { width: 50px; } +.covered51 { width: 51px; } +.covered52 { width: 52px; } +.covered53 { width: 53px; } +.covered54 { width: 54px; } +.covered55 { width: 55px; } +.covered56 { width: 56px; } +.covered57 { width: 57px; } +.covered58 { width: 58px; } +.covered59 { width: 59px; } +.covered60 { width: 60px; } +.covered61 { width: 61px; } +.covered62 { width: 62px; } +.covered63 { width: 63px; } +.covered64 { width: 64px; } +.covered65 { width: 65px; } +.covered66 { width: 66px; } +.covered67 { width: 67px; } +.covered68 { width: 68px; } +.covered69 { width: 69px; } +.covered70 { width: 70px; } +.covered71 { width: 71px; } +.covered72 { width: 72px; } +.covered73 { width: 73px; } +.covered74 { width: 74px; } +.covered75 { width: 75px; } +.covered76 { width: 76px; } +.covered77 { width: 77px; } +.covered78 { width: 78px; } +.covered79 { width: 79px; } +.covered80 { width: 80px; } +.covered81 { width: 81px; } +.covered82 { width: 82px; } +.covered83 { width: 83px; } +.covered84 { width: 84px; } +.covered85 { width: 85px; } +.covered86 { width: 86px; } +.covered87 { width: 87px; } +.covered88 { width: 88px; } +.covered89 { width: 89px; } +.covered90 { width: 90px; } +.covered91 { width: 91px; } +.covered92 { width: 92px; } +.covered93 { width: 93px; } +.covered94 { width: 94px; } +.covered95 { width: 95px; } +.covered96 { width: 96px; } +.covered97 { width: 97px; } +.covered98 { width: 98px; } +.covered99 { width: 99px; } +.covered100 { width: 100px; } + + @media print { + html, body { background-color: #fff; } + .container { max-width: 100%; width: 100%; padding: 0; } + .overview colgroup col:first-child { width: 300px; } +} + +.icon-up-dir_active { + background-image: url(icon_up-dir.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDEyMTZxMCAyNi0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMC00NS0xOXQtMTktNDUgMTktNDVsNDQ4LTQ0OHExOS0xOSA0NS0xOXQ0NSAxOWw0NDggNDQ4cTE5IDE5IDE5IDQ1eiIvPjwvc3ZnPg==); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; + position: relative; + top: 3px; +} +.icon-down-dir_active { + background-image: url(icon_up-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; + position: relative; + top: 3px; +} +.icon-down-dir { + background-image: url(icon_down-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; + position: relative; + top: 3px; +} +.icon-info-circled { + background-image: url(icon_info-circled.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9Ijg5NiIgY3k9Ijg5NiIgcj0iNzUwIiBmaWxsPSIjZmZmIiAvPjxwYXRoIGZpbGw9IiMyOEE1RkYiIGQ9Ik0xMTUyIDEzNzZ2LTE2MHEwLTE0LTktMjN0LTIzLTloLTk2di01MTJxMC0xNC05LTIzdC0yMy05aC0zMjBxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloOTZ2MzIwaC05NnEtMTQgMC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMy05dDktMjN6bS0xMjgtODk2di0xNjBxMC0xNC05LTIzdC0yMy05aC0xOTJxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMtOXQ5LTIzem02NDAgNDE2cTAgMjA5LTEwMyAzODUuNXQtMjc5LjUgMjc5LjUtMzg1LjUgMTAzLTM4NS41LTEwMy0yNzkuNS0yNzkuNS0xMDMtMzg1LjUgMTAzLTM4NS41IDI3OS41LTI3OS41IDM4NS41LTEwMyAzODUuNSAxMDMgMjc5LjUgMjc5LjUgMTAzIDM4NS41eiIvPjwvc3ZnPg==); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; +} +.icon-plus { + background-image: url(icon_plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTQxNnY0MTZxMCA0MC0yOCA2OHQtNjggMjhoLTE5MnEtNDAgMC02OC0yOHQtMjgtNjh2LTQxNmgtNDE2cS00MCAwLTY4LTI4dC0yOC02OHYtMTkycTAtNDAgMjgtNjh0NjgtMjhoNDE2di00MTZxMC00MCAyOC02OHQ2OC0yOGgxOTJxNDAgMCA2OCAyOHQyOCA2OHY0MTZoNDE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; + position: relative; + top: 3px; +} +.icon-minus { + background-image: url(icon_minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTEyMTZxLTQwIDAtNjgtMjh0LTI4LTY4di0xOTJxMC00MCAyOC02OHQ2OC0yOGgxMjE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); + background-repeat: no-repeat; + background-size: contain; + padding-left: 15px; + height: 0.9em; + display: inline-block; + position: relative; + top: 3px; +} +.icon-wrench { + background-image: url(icon_wrench.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00NDggMTQ3MnEwLTI2LTE5LTQ1dC00NS0xOS00NSAxOS0xOSA0NSAxOSA0NSA0NSAxOSA0NS0xOSAxOS00NXptNjQ0LTQyMGwtNjgyIDY4MnEtMzcgMzctOTAgMzctNTIgMC05MS0zN2wtMTA2LTEwOHEtMzgtMzYtMzgtOTAgMC01MyAzOC05MWw2ODEtNjgxcTM5IDk4IDExNC41IDE3My41dDE3My41IDExNC41em02MzQtNDM1cTAgMzktMjMgMTA2LTQ3IDEzNC0xNjQuNSAyMTcuNXQtMjU4LjUgODMuNXEtMTg1IDAtMzE2LjUtMTMxLjV0LTEzMS41LTMxNi41IDEzMS41LTMxNi41IDMxNi41LTEzMS41cTU4IDAgMTIxLjUgMTYuNXQxMDcuNSA0Ni41cTE2IDExIDE2IDI4dC0xNiAyOGwtMjkzIDE2OXYyMjRsMTkzIDEwN3E1LTMgNzktNDguNXQxMzUuNS04MSA3MC41LTM1LjVxMTUgMCAyMy41IDEwdDguNSAyNXoiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-cog { + background-image: url(icon_cog.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDQ0Ljc4OCAyOTEuMWw0Mi42MTYgMjQuNTk5YzQuODY3IDIuODA5IDcuMTI2IDguNjE4IDUuNDU5IDEzLjk4NS0xMS4wNyAzNS42NDItMjkuOTcgNjcuODQyLTU0LjY4OSA5NC41ODZhMTIuMDE2IDEyLjAxNiAwIDAgMS0xNC44MzIgMi4yNTRsLTQyLjU4NC0yNC41OTVhMTkxLjU3NyAxOTEuNTc3IDAgMCAxLTYwLjc1OSAzNS4xM3Y0OS4xODJhMTIuMDEgMTIuMDEgMCAwIDEtOS4zNzcgMTEuNzE4Yy0zNC45NTYgNy44NS03Mi40OTkgOC4yNTYtMTA5LjIxOS4wMDctNS40OS0xLjIzMy05LjQwMy02LjA5Ni05LjQwMy0xMS43MjN2LTQ5LjE4NGExOTEuNTU1IDE5MS41NTUgMCAwIDEtNjAuNzU5LTM1LjEzbC00Mi41ODQgMjQuNTk1YTEyLjAxNiAxMi4wMTYgMCAwIDEtMTQuODMyLTIuMjU0Yy0yNC43MTgtMjYuNzQ0LTQzLjYxOS01OC45NDQtNTQuNjg5LTk0LjU4Ni0xLjY2Ny01LjM2Ni41OTItMTEuMTc1IDUuNDU5LTEzLjk4NUw2Ny4yMTIgMjkxLjFhMTkzLjQ4IDE5My40OCAwIDAgMSAwLTcwLjE5OWwtNDIuNjE2LTI0LjU5OWMtNC44NjctMi44MDktNy4xMjYtOC42MTgtNS40NTktMTMuOTg1IDExLjA3LTM1LjY0MiAyOS45Ny02Ny44NDIgNTQuNjg5LTk0LjU4NmExMi4wMTYgMTIuMDE2IDAgMCAxIDE0LjgzMi0yLjI1NGw0Mi41ODQgMjQuNTk1YTE5MS41NzcgMTkxLjU3NyAwIDAgMSA2MC43NTktMzUuMTNWMjUuNzU5YTEyLjAxIDEyLjAxIDAgMCAxIDkuMzc3LTExLjcxOGMzNC45NTYtNy44NSA3Mi40OTktOC4yNTYgMTA5LjIxOS0uMDA3IDUuNDkgMS4yMzMgOS40MDMgNi4wOTYgOS40MDMgMTEuNzIzdjQ5LjE4NGExOTEuNTU1IDE5MS41NTUgMCAwIDEgNjAuNzU5IDM1LjEzbDQyLjU4NC0yNC41OTVhMTIuMDE2IDEyLjAxNiAwIDAgMSAxNC44MzIgMi4yNTRjMjQuNzE4IDI2Ljc0NCA0My42MTkgNTguOTQ0IDU0LjY4OSA5NC41ODYgMS42NjcgNS4zNjYtLjU5MiAxMS4xNzUtNS40NTkgMTMuOTg1TDQ0NC43ODggMjIwLjlhMTkzLjQ4NSAxOTMuNDg1IDAgMCAxIDAgNzAuMnpNMzM2IDI1NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODBzLTgwIDM1Ljg4OC04MCA4MCAzNS44ODggODAgODAgODAgODAtMzUuODg4IDgwLTgweiIvPjwvc3ZnPg==); + background-repeat: no-repeat; + background-size: contain; + padding-left: 16px; + height: 0.8em; + display: inline-block; +} +.icon-fork { + background-image: url(icon_fork.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHN0eWxlPSJmaWxsOiNmZmYiIC8+PHBhdGggZD0iTTY3MiAxNDcycTAtNDAtMjgtNjh0LTY4LTI4LTY4IDI4LTI4IDY4IDI4IDY4IDY4IDI4IDY4LTI4IDI4LTY4em0wLTExNTJxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTY0MCAxMjhxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTk2IDBxMCA1Mi0yNiA5Ni41dC03MCA2OS41cS0yIDI4Ny0yMjYgNDE0LTY3IDM4LTIwMyA4MS0xMjggNDAtMTY5LjUgNzF0LTQxLjUgMTAwdjI2cTQ0IDI1IDcwIDY5LjV0MjYgOTYuNXEwIDgwLTU2IDEzNnQtMTM2IDU2LTEzNi01Ni01Ni0xMzZxMC01MiAyNi05Ni41dDcwLTY5LjV2LTgyMHEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnEwIDUyLTI2IDk2LjV0LTcwIDY5LjV2NDk3cTU0LTI2IDE1NC01NyA1NS0xNyA4Ny41LTI5LjV0NzAuNS0zMSA1OS0zOS41IDQwLjUtNTEgMjgtNjkuNSA4LjUtOTEuNXEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnoiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-cube { + background-image: url(icon_cube.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik04OTYgMTYyOWw2NDAtMzQ5di02MzZsLTY0MCAyMzN2NzUyem0tNjQtODY1bDY5OC0yNTQtNjk4LTI1NC02OTggMjU0em04MzItMjUydjc2OHEwIDM1LTE4IDY1dC00OSA0N2wtNzA0IDM4NHEtMjggMTYtNjEgMTZ0LTYxLTE2bC03MDQtMzg0cS0zMS0xNy00OS00N3QtMTgtNjV2LTc2OHEwLTQwIDIzLTczdDYxLTQ3bDcwNC0yNTZxMjItOCA0NC04dDQ0IDhsNzA0IDI1NnEzOCAxNCA2MSA0N3QyMyA3M3oiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-search-plus { + background-image: url(icon_search-plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtMjI0djIyNHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAtMjIuNS05LjV0LTkuNS0yMi41di0yMjRoLTIyNHEtMTMgMC0yMi41LTkuNXQtOS41LTIyLjV2LTY0cTAtMTMgOS41LTIyLjV0MjIuNS05LjVoMjI0di0yMjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg2NHExMyAwIDIyLjUgOS41dDkuNSAyMi41djIyNGgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-search-minus { + background-image: url(icon_search-minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNTc2cS0xMyAwLTIyLjUtOS41dC05LjUtMjIuNXYtNjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg1NzZxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-star { + background-image: url(icon_star.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNzI4IDY0N3EwIDIyLTI2IDQ4bC0zNjMgMzU0IDg2IDUwMHExIDcgMSAyMCAwIDIxLTEwLjUgMzUuNXQtMzAuNSAxNC41cS0xOSAwLTQwLTEybC00NDktMjM2LTQ0OSAyMzZxLTIyIDEyLTQwIDEyLTIxIDAtMzEuNS0xNC41dC0xMC41LTM1LjVxMC02IDItMjBsODYtNTAwLTM2NC0zNTRxLTI1LTI3LTI1LTQ4IDAtMzcgNTYtNDZsNTAyLTczIDIyNS00NTVxMTktNDEgNDktNDF0NDkgNDFsMjI1IDQ1NSA1MDIgNzNxNTYgOSA1NiA0NnoiIGZpbGw9IiMwMDAiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} +.icon-sponsor { + background-image: url(icon_sponsor.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik04OTYgMTY2NHEtMjYgMC00NC0xOGwtNjI0LTYwMnEtMTAtOC0yNy41LTI2dC01NS41LTY1LjUtNjgtOTcuNS01My41LTEyMS0yMy41LTEzOHEwLTIyMCAxMjctMzQ0dDM1MS0xMjRxNjIgMCAxMjYuNSAyMS41dDEyMCA1OCA5NS41IDY4LjUgNzYgNjhxMzYtMzYgNzYtNjh0OTUuNS02OC41IDEyMC01OCAxMjYuNS0yMS41cTIyNCAwIDM1MSAxMjR0MTI3IDM0NHEwIDIyMS0yMjkgNDUwbC02MjMgNjAwcS0xOCAxOC00NCAxOHoiIGZpbGw9IiNlYTRhYWEiLz48L3N2Zz4=); + background-repeat: no-repeat; + background-size: contain; + padding-left: 20px; + height: 0.9em; + display: inline-block; +} + + + +@media (prefers-color-scheme: dark) { + @media screen { + html { + background-color: #333; + color: #fff; + } + + body { + color: #fff; + } + + h1 { + background-color: #555453; + color: #fff; + } + + .container { + background-color: #333; + box-shadow: 0 0 60px #0c0c0c; + } + + .containerrightfixed { + background-color: #3D3C3C; + border-left: 1px solid #515050; + } + + .containerrightfixed h1 { + background-color: #484747; + } + + .popup-container { + background-color: rgb(80, 80, 80, 0.6); + } + + .popup { + background-color: #333; + } + + .card-group .card { + background-color: #333; + background: radial-gradient(circle, #444 0%, #333 100%); + border: 1px solid #545454; + color: #fff; + } + + .card-group .card table tr { + border-bottom: 1px solid #545454; + } + + .card-group .card table tr:hover { + background-color: #2E2D2C; + } + + .table-responsive::-webkit-scrollbar-thumb { + background-color: #555453; + border: 5px solid #333; + } + + .overview tr:hover > td { + background-color: #2E2D2C; + } + + .overview th { + background-color: #444; + border: 1px solid #3B3A39; + } + + .overview tr.namespace th { + background-color: #444; + } + + .overview thead th { + background-color: #444; + } + + .overview th a { + color: #fff; + color: rgba(255, 255, 255, 0.95); + } + + .overview th a:hover { + color: #0078d4; + } + + .overview td { + border: 1px solid #3B3A39; + } + + .overview .coverage td { + border: none; + } + + .overview tr.header th { + background-color: #444; + } + + .overview tr.header th:nth-child(2n+1) { + background-color: #3a3a3a; + } + + .overview tr.header th:first-child { + border-left: 1px solid #333; + border-top: 1px solid #333; + background-color: #333; + } + + .stripped tr:nth-child(2n+1) { + background-color: #3c3c3c; + } + + input, select, button { + background-color: #333; + color: #fff; + border: 1px solid #A19F9D; + } + + a { + color: #fff; + color: rgba(255, 255, 255, 0.95); + } + + a:hover { + color: #0078d4; + } + + h1 a.back { + background-color: #4a4846; + } + + h1 a.button { + color: #fff; + background-color: #565656; + border-color: #c1c1c1; + } + + h1 a.button:hover { + background-color: #8d8d8d; + } + + .gray { + background-color: #484747; + } + + .lightgray { + color: #ebebeb; + } + + .lightgraybg { + background-color: #474747; + } + + .lightgreen { + background-color: #406540; + } + + .lightorange { + background-color: #ab7f36; + } + + .lightred { + background-color: #954848; + } + + .ct-label { + color: #fff !important; + fill: #fff !important; + } + + .ct-grid { + stroke: #fff !important; + } + + .ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point { + stroke: #0078D4 !important; + } + + .ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point { + stroke: #6dc428 !important; + } + + .ct-chart .ct-series.ct-series-c .ct-line, .ct-chart .ct-series.ct-series-c .ct-point { + stroke: #e58f1d !important; + } + + .linecoverage { + background-color: #0078D4; + } + + .branchcoverage { + background-color: #6dc428; + } + .codeelementcoverage { + background-color: #e58f1d; + } + + .tinylinecoveragechart, .tinybranchcoveragechart, .tinymethodcoveragechart { + background-color: #333; + } + + .tinybranchcoveragechart .ct-series.ct-series-a .ct-line { + stroke: #6dc428 !important; + } + + .tinymethodcoveragechart .ct-series.ct-series-a .ct-line { + stroke: #e58f1d !important; + } + + .icon-down-dir { + background-image: url(icon_down-dir_active_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE0MDggNzA0cTAgMjYtMTkgNDVsLTQ0OCA0NDhxLTE5IDE5LTQ1IDE5dC00NS0xOWwtNDQ4LTQ0OHEtMTktMTktMTktNDV0MTktNDUgNDUtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6Ii8+PC9zdmc+); + } + + .icon-info-circled { + background-image: url(icon_info-circled_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9Ijg5NiIgY3k9Ijg5NiIgcj0iNzUwIiBmaWxsPSIjZmZmIiAvPjxwYXRoIGZpbGw9IiMyOEE1RkYiIGQ9Ik0xMTUyIDEzNzZ2LTE2MHEwLTE0LTktMjN0LTIzLTloLTk2di01MTJxMC0xNC05LTIzdC0yMy05aC0zMjBxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloOTZ2MzIwaC05NnEtMTQgMC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMy05dDktMjN6bS0xMjgtODk2di0xNjBxMC0xNC05LTIzdC0yMy05aC0xOTJxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMtOXQ5LTIzem02NDAgNDE2cTAgMjA5LTEwMyAzODUuNXQtMjc5LjUgMjc5LjUtMzg1LjUgMTAzLTM4NS41LTEwMy0yNzkuNS0yNzkuNS0xMDMtMzg1LjUgMTAzLTM4NS41IDI3OS41LTI3OS41IDM4NS41LTEwMyAzODUuNSAxMDMgMjc5LjUgMjc5LjUgMTAzIDM4NS41eiIvPjwvc3ZnPg==); + } + + .icon-plus { + background-image: url(icon_plus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE2MDAgNzM2djE5MnEwIDQwLTI4IDY4dC02OCAyOGgtNDE2djQxNnEwIDQwLTI4IDY4dC02OCAyOGgtMTkycS00MCAwLTY4LTI4dC0yOC02OHYtNDE2aC00MTZxLTQwIDAtNjgtMjh0LTI4LTY4di0xOTJxMC00MCAyOC02OHQ2OC0yOGg0MTZ2LTQxNnEwLTQwIDI4LTY4dDY4LTI4aDE5MnE0MCAwIDY4IDI4dDI4IDY4djQxNmg0MTZxNDAgMCA2OCAyOHQyOCA2OHoiLz48L3N2Zz4=); + } + + .icon-minus { + background-image: url(icon_minus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE2MDAgNzM2djE5MnEwIDQwLTI4IDY4dC02OCAyOGgtMTIxNnEtNDAgMC02OC0yOHQtMjgtNjh2LTE5MnEwLTQwIDI4LTY4dDY4LTI4aDEyMTZxNDAgMCA2OCAyOHQyOCA2OHoiLz48L3N2Zz4=); + } + + .icon-wrench { + background-image: url(icon_wrench_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JEQkRCRiIgZD0iTTQ0OCAxNDcycTAtMjYtMTktNDV0LTQ1LTE5LTQ1IDE5LTE5IDQ1IDE5IDQ1IDQ1IDE5IDQ1LTE5IDE5LTQ1em02NDQtNDIwbC02ODIgNjgycS0zNyAzNy05MCAzNy01MiAwLTkxLTM3bC0xMDYtMTA4cS0zOC0zNi0zOC05MCAwLTUzIDM4LTkxbDY4MS02ODFxMzkgOTggMTE0LjUgMTczLjV0MTczLjUgMTE0LjV6bTYzNC00MzVxMCAzOS0yMyAxMDYtNDcgMTM0LTE2NC41IDIxNy41dC0yNTguNSA4My41cS0xODUgMC0zMTYuNS0xMzEuNXQtMTMxLjUtMzE2LjUgMTMxLjUtMzE2LjUgMzE2LjUtMTMxLjVxNTggMCAxMjEuNSAxNi41dDEwNy41IDQ2LjVxMTYgMTEgMTYgMjh0LTE2IDI4bC0yOTMgMTY5djIyNGwxOTMgMTA3cTUtMyA3OS00OC41dDEzNS41LTgxIDcwLjUtMzUuNXExNSAwIDIzLjUgMTB0OC41IDI1eiIvPjwvc3ZnPg==); + } + + .icon-cog { + background-image: url(icon_cog_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjQkRCREJGIiBkPSJNNDQ0Ljc4OCAyOTEuMWw0Mi42MTYgMjQuNTk5YzQuODY3IDIuODA5IDcuMTI2IDguNjE4IDUuNDU5IDEzLjk4NS0xMS4wNyAzNS42NDItMjkuOTcgNjcuODQyLTU0LjY4OSA5NC41ODZhMTIuMDE2IDEyLjAxNiAwIDAgMS0xNC44MzIgMi4yNTRsLTQyLjU4NC0yNC41OTVhMTkxLjU3NyAxOTEuNTc3IDAgMCAxLTYwLjc1OSAzNS4xM3Y0OS4xODJhMTIuMDEgMTIuMDEgMCAwIDEtOS4zNzcgMTEuNzE4Yy0zNC45NTYgNy44NS03Mi40OTkgOC4yNTYtMTA5LjIxOS4wMDctNS40OS0xLjIzMy05LjQwMy02LjA5Ni05LjQwMy0xMS43MjN2LTQ5LjE4NGExOTEuNTU1IDE5MS41NTUgMCAwIDEtNjAuNzU5LTM1LjEzbC00Mi41ODQgMjQuNTk1YTEyLjAxNiAxMi4wMTYgMCAwIDEtMTQuODMyLTIuMjU0Yy0yNC43MTgtMjYuNzQ0LTQzLjYxOS01OC45NDQtNTQuNjg5LTk0LjU4Ni0xLjY2Ny01LjM2Ni41OTItMTEuMTc1IDUuNDU5LTEzLjk4NUw2Ny4yMTIgMjkxLjFhMTkzLjQ4IDE5My40OCAwIDAgMSAwLTcwLjE5OWwtNDIuNjE2LTI0LjU5OWMtNC44NjctMi44MDktNy4xMjYtOC42MTgtNS40NTktMTMuOTg1IDExLjA3LTM1LjY0MiAyOS45Ny02Ny44NDIgNTQuNjg5LTk0LjU4NmExMi4wMTYgMTIuMDE2IDAgMCAxIDE0LjgzMi0yLjI1NGw0Mi41ODQgMjQuNTk1YTE5MS41NzcgMTkxLjU3NyAwIDAgMSA2MC43NTktMzUuMTNWMjUuNzU5YTEyLjAxIDEyLjAxIDAgMCAxIDkuMzc3LTExLjcxOGMzNC45NTYtNy44NSA3Mi40OTktOC4yNTYgMTA5LjIxOS0uMDA3IDUuNDkgMS4yMzMgOS40MDMgNi4wOTYgOS40MDMgMTEuNzIzdjQ5LjE4NGExOTEuNTU1IDE5MS41NTUgMCAwIDEgNjAuNzU5IDM1LjEzbDQyLjU4NC0yNC41OTVhMTIuMDE2IDEyLjAxNiAwIDAgMSAxNC44MzIgMi4yNTRjMjQuNzE4IDI2Ljc0NCA0My42MTkgNTguOTQ0IDU0LjY4OSA5NC41ODYgMS42NjcgNS4zNjYtLjU5MiAxMS4xNzUtNS40NTkgMTMuOTg1TDQ0NC43ODggMjIwLjlhMTkzLjQ4NSAxOTMuNDg1IDAgMCAxIDAgNzAuMnpNMzM2IDI1NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODBzLTgwIDM1Ljg4OC04MCA4MCAzNS44ODggODAgODAgODAgODAtMzUuODg4IDgwLTgweiIvPjwvc3ZnPg==); + } + + .icon-fork { + background-image: url(icon_fork_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTY3MiAxNDcycTAtNDAtMjgtNjh0LTY4LTI4LTY4IDI4LTI4IDY4IDI4IDY4IDY4IDI4IDY4LTI4IDI4LTY4em0wLTExNTJxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTY0MCAxMjhxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTk2IDBxMCA1Mi0yNiA5Ni41dC03MCA2OS41cS0yIDI4Ny0yMjYgNDE0LTY3IDM4LTIwMyA4MS0xMjggNDAtMTY5LjUgNzF0LTQxLjUgMTAwdjI2cTQ0IDI1IDcwIDY5LjV0MjYgOTYuNXEwIDgwLTU2IDEzNnQtMTM2IDU2LTEzNi01Ni01Ni0xMzZxMC01MiAyNi05Ni41dDcwLTY5LjV2LTgyMHEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnEwIDUyLTI2IDk2LjV0LTcwIDY5LjV2NDk3cTU0LTI2IDE1NC01NyA1NS0xNyA4Ny41LTI5LjV0NzAuNS0zMSA1OS0zOS41IDQwLjUtNTEgMjgtNjkuNSA4LjUtOTEuNXEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnoiLz48L3N2Zz4=); + } + + .icon-cube { + background-image: url(icon_cube_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTg5NiAxNjI5bDY0MC0zNDl2LTYzNmwtNjQwIDIzM3Y3NTJ6bS02NC04NjVsNjk4LTI1NC02OTgtMjU0LTY5OCAyNTR6bTgzMi0yNTJ2NzY4cTAgMzUtMTggNjV0LTQ5IDQ3bC03MDQgMzg0cS0yOCAxNi02MSAxNnQtNjEtMTZsLTcwNC0zODRxLTMxLTE3LTQ5LTQ3dC0xOC02NXYtNzY4cTAtNDAgMjMtNzN0NjEtNDdsNzA0LTI1NnEyMi04IDQ0LTh0NDQgOGw3MDQgMjU2cTM4IDE0IDYxIDQ3dDIzIDczeiIvPjwvc3ZnPg==); + } + + .icon-search-plus { + background-image: url(icon_search-plus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTEwODggODAwdjY0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC0yMjR2MjI0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC02NHEtMTMgMC0yMi41LTkuNXQtOS41LTIyLjV2LTIyNGgtMjI0cS0xMyAwLTIyLjUtOS41dC05LjUtMjIuNXYtNjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWgyMjR2LTIyNHEwLTEzIDkuNS0yMi41dDIyLjUtOS41aDY0cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2MjI0aDIyNHExMyAwIDIyLjUgOS41dDkuNSAyMi41em0xMjggMzJxMC0xODUtMTMxLjUtMzE2LjV0LTMxNi41LTEzMS41LTMxNi41IDEzMS41LTEzMS41IDMxNi41IDEzMS41IDMxNi41IDMxNi41IDEzMS41IDMxNi41LTEzMS41IDEzMS41LTMxNi41em01MTIgODMycTAgNTMtMzcuNSA5MC41dC05MC41IDM3LjVxLTU0IDAtOTAtMzhsLTM0My0zNDJxLTE3OSAxMjQtMzk5IDEyNC0xNDMgMC0yNzMuNS01NS41dC0yMjUtMTUwLTE1MC0yMjUtNTUuNS0yNzMuNSA1NS41LTI3My41IDE1MC0yMjUgMjI1LTE1MCAyNzMuNS01NS41IDI3My41IDU1LjUgMjI1IDE1MCAxNTAgMjI1IDU1LjUgMjczLjVxMCAyMjAtMTI0IDM5OWwzNDMgMzQzcTM3IDM3IDM3IDkweiIvPjwvc3ZnPg==); + } + + .icon-search-minus { + background-image: url(icon_search-minus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTEwODggODAwdjY0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC01NzZxLTEzIDAtMjIuNS05LjV0LTkuNS0yMi41di02NHEwLTEzIDkuNS0yMi41dDIyLjUtOS41aDU3NnExMyAwIDIyLjUgOS41dDkuNSAyMi41em0xMjggMzJxMC0xODUtMTMxLjUtMzE2LjV0LTMxNi41LTEzMS41LTMxNi41IDEzMS41LTEzMS41IDMxNi41IDEzMS41IDMxNi41IDMxNi41IDEzMS41IDMxNi41LTEzMS41IDEzMS41LTMxNi41em01MTIgODMycTAgNTMtMzcuNSA5MC41dC05MC41IDM3LjVxLTU0IDAtOTAtMzhsLTM0My0zNDJxLTE3OSAxMjQtMzk5IDEyNC0xNDMgMC0yNzMuNS01NS41dC0yMjUtMTUwLTE1MC0yMjUtNTUuNS0yNzMuNSA1NS41LTI3My41IDE1MC0yMjUgMjI1LTE1MCAyNzMuNS01NS41IDI3My41IDU1LjUgMjI1IDE1MCAxNTAgMjI1IDU1LjUgMjczLjVxMCAyMjAtMTI0IDM5OWwzNDMgMzQzcTM3IDM3IDM3IDkweiIvPjwvc3ZnPg==); + } + + .icon-star { + background-image: url(icon_star_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNzI4IDY0N3EwIDIyLTI2IDQ4bC0zNjMgMzU0IDg2IDUwMHExIDcgMSAyMCAwIDIxLTEwLjUgMzUuNXQtMzAuNSAxNC41cS0xOSAwLTQwLTEybC00NDktMjM2LTQ0OSAyMzZxLTIyIDEyLTQwIDEyLTIxIDAtMzEuNS0xNC41dC0xMC41LTM1LjVxMC02IDItMjBsODYtNTAwLTM2NC0zNTRxLTI1LTI3LTI1LTQ4IDAtMzcgNTYtNDZsNTAyLTczIDIyNS00NTVxMTktNDEgNDktNDF0NDkgNDFsMjI1IDQ1NSA1MDIgNzNxNTYgOSA1NiA0NnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=); + } + } +} + +.ct-double-octave:after,.ct-golden-section:after,.ct-major-eleventh:after,.ct-major-second:after,.ct-major-seventh:after,.ct-major-sixth:after,.ct-major-tenth:after,.ct-major-third:after,.ct-major-twelfth:after,.ct-minor-second:after,.ct-minor-seventh:after,.ct-minor-sixth:after,.ct-minor-third:after,.ct-octave:after,.ct-perfect-fifth:after,.ct-perfect-fourth:after,.ct-square:after{content:"";clear:both}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-grid-background{fill:none}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{display:table}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{display:table}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{display:table}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{display:table}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{display:table}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{display:table}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{display:table}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{display:table}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{display:table}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{display:table}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{display:table}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{display:table}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{display:table}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{display:table}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{display:table}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{display:table}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{display:table}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/obj/Chemistry Cafe API.csproj.nuget.dgspec.json b/obj/Chemistry Cafe API.csproj.nuget.dgspec.json index d427636..1261b5f 100644 --- a/obj/Chemistry Cafe API.csproj.nuget.dgspec.json +++ b/obj/Chemistry Cafe API.csproj.nuget.dgspec.json @@ -1,20 +1,20 @@ { "format": 1, "restore": { - "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj": {} + "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj": {} }, "projects": { - "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj": { + "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "projectUniqueName": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", "projectName": "Chemistry Cafe API", - "projectPath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj", - "packagesPath": "C:\\Users\\gigem\\.nuget\\packages\\", - "outputPath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\obj\\", + "projectPath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "packagesPath": "C:\\Users\\Evan\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\gigem\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\Evan\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -45,6 +45,26 @@ "net8.0": { "targetAlias": "net8.0", "dependencies": { + "MSTest.TestAdapter": { + "target": "Package", + "version": "[3.3.1, )" + }, + "MSTest.TestFramework": { + "target": "Package", + "version": "[3.3.1, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.4, )" + }, + "Microsoft.CodeCoverage": { + "target": "Package", + "version": "[17.9.0, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.9.0, )" + }, "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": { "target": "Package", "version": "[1.19.6, )" @@ -60,6 +80,10 @@ "Swashbuckle.AspNetCore": { "target": "Package", "version": "[6.5.0, )" + }, + "xunit.extensibility.core": { + "target": "Package", + "version": "[2.7.1, )" } }, "imports": [ diff --git a/obj/Chemistry Cafe API.csproj.nuget.g.props b/obj/Chemistry Cafe API.csproj.nuget.g.props index bc85f42..86cf0e7 100644 --- a/obj/Chemistry Cafe API.csproj.nuget.g.props +++ b/obj/Chemistry Cafe API.csproj.nuget.g.props @@ -5,20 +5,28 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\gigem\.nuget\packages\ + C:\Users\Evan\.nuget\packages\ PackageReference 6.9.1 - + + + + + + + + + - C:\Users\gigem\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 - C:\Users\gigem\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.19.6 + C:\Users\Evan\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 + C:\Users\Evan\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.19.6 \ No newline at end of file diff --git a/obj/Chemistry Cafe API.csproj.nuget.g.targets b/obj/Chemistry Cafe API.csproj.nuget.g.targets index 7226efd..e1e99a2 100644 --- a/obj/Chemistry Cafe API.csproj.nuget.g.targets +++ b/obj/Chemistry Cafe API.csproj.nuget.g.targets @@ -1,8 +1,18 @@  + - + + + + + + + + + + \ No newline at end of file diff --git a/obj/Debug/net8.0/ApiEndpoints.json b/obj/Debug/net8.0/ApiEndpoints.json index 6c8f0ff..d3e763d 100644 --- a/obj/Debug/net8.0/ApiEndpoints.json +++ b/obj/Debug/net8.0/ApiEndpoints.json @@ -1,7 +1,7 @@ [ { "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyController", - "Method": "GetFamilyAsync", + "Method": "Get", "RelativePath": "api/Family/{uuid}", "HttpMethod": "GET", "IsController": true, @@ -47,7 +47,7 @@ }, { "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyController", - "Method": "CreateFamily", + "Method": "Create", "RelativePath": "api/Family/create", "HttpMethod": "POST", "IsController": true, @@ -61,8 +61,12 @@ ], "ReturnTypes": [ { - "Type": "System.Void", - "MediaTypes": [], + "Type": "Chemistry_Cafe_API.Models.Family", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], "StatusCode": 200 } ] @@ -77,7 +81,7 @@ "Parameters": [ { "Name": "uuid", - "Type": "System.Int32", + "Type": "System.Guid", "IsRequired": true } ], @@ -110,5 +114,2001 @@ "StatusCode": 200 } ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", + "Method": "Get", + "RelativePath": "api/FamilyTagMechList/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechList", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", + "Method": "Get", + "RelativePath": "api/FamilyTagMechList/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.FamilyTagMechList, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", + "Method": "Create", + "RelativePath": "api/FamilyTagMechList/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newFamilyMechList", + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", + "Method": "Delete", + "RelativePath": "api/FamilyTagMechList/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListController", + "Method": "Put", + "RelativePath": "api/FamilyTagMechList/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newFamilyMechList", + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", + "Method": "Get", + "RelativePath": "api/FamilyTagMechListVersion/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechListVersion", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", + "Method": "Get", + "RelativePath": "api/FamilyTagMechListVersion/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.FamilyTagMechListVersion, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", + "Method": "Create", + "RelativePath": "api/FamilyTagMechListVersion/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newFamilyMechListVersion", + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", + "Method": "Delete", + "RelativePath": "api/FamilyTagMechListVersion/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.FamilyTagMechListVersionController", + "Method": "Put", + "RelativePath": "api/FamilyTagMechListVersion/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newFamilyMechListVersion", + "Type": "Chemistry_Cafe_API.Models.FamilyTagMechListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.OpenAtmosController", + "Method": "GetJSON", + "RelativePath": "api/OpenAtmos/JSON/{tag_mechanism_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tag_mechanism_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.String", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.OpenAtmosController", + "Method": "GetYAML", + "RelativePath": "api/OpenAtmos/YAML/{tag_mechanism_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tag_mechanism_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.String", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "Get", + "RelativePath": "api/PropertyList/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.PropertyList", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "Get", + "RelativePath": "api/PropertyList/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.PropertyList, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "Create", + "RelativePath": "api/PropertyList/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "userPreferneces", + "Type": "Chemistry_Cafe_API.Models.PropertyList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "Delete", + "RelativePath": "api/PropertyList/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "GetProperties", + "RelativePath": "api/PropertyList/Properties/{parent_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "parent_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.Property, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyListController", + "Method": "Put", + "RelativePath": "api/PropertyList/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "userpreferences", + "Type": "Chemistry_Cafe_API.Models.PropertyList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "Get", + "RelativePath": "api/PropertyType/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.PropertyType", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "Get", + "RelativePath": "api/PropertyType/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.PropertyType, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "Create", + "RelativePath": "api/PropertyType/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "propertyType", + "Type": "Chemistry_Cafe_API.Models.PropertyType", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "Delete", + "RelativePath": "api/PropertyType/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "Put", + "RelativePath": "api/PropertyType/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "propertytype", + "Type": "Chemistry_Cafe_API.Models.PropertyType", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyTypeController", + "Method": "GetValidation", + "RelativePath": "api/PropertyType/Validation/{validation}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "validation", + "Type": "System.String", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.PropertyType, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyVersionController", + "Method": "Get", + "RelativePath": "api/PropertyVersion/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.PropertyVersion", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyVersionController", + "Method": "Get", + "RelativePath": "api/PropertyVersion/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.PropertyVersion, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyVersionController", + "Method": "Create", + "RelativePath": "api/PropertyVersion/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newPropertyVersion", + "Type": "Chemistry_Cafe_API.Models.PropertyVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyVersionController", + "Method": "Delete", + "RelativePath": "api/PropertyVersion/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.PropertyVersionController", + "Method": "Put", + "RelativePath": "api/PropertyVersion/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newPropertyVersion", + "Type": "Chemistry_Cafe_API.Models.PropertyVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "Get", + "RelativePath": "api/ReactantProductList/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.ReactantProductList", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "Get", + "RelativePath": "api/ReactantProductList/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.ReactantProductList, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "Create", + "RelativePath": "api/ReactantProductList/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "reactantProduct", + "Type": "Chemistry_Cafe_API.Models.ReactantProductList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "Delete", + "RelativePath": "api/ReactantProductList/delete", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "Chemistry_Cafe_API.Models.DeleteReactantProductList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "GetProducts", + "RelativePath": "api/ReactantProductList/Products/{reaction_product_list_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "reaction_product_list_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.ReactantsProducts, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "GetReactants", + "RelativePath": "api/ReactantProductList/Reactants/{reaction_reactant_list_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "reaction_reactant_list_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.ReactantsProducts, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactantProductListController", + "Method": "Put", + "RelativePath": "api/ReactantProductList/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "reactantProductList", + "Type": "Chemistry_Cafe_API.Models.ReactantProductList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "Get", + "RelativePath": "api/Reaction/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.Reaction", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "Get", + "RelativePath": "api/Reaction/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.Reaction, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "Create", + "RelativePath": "api/Reaction/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "type", + "Type": "System.String", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "Delete", + "RelativePath": "api/Reaction/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "GetString", + "RelativePath": "api/Reaction/String/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.String", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "GetTags", + "RelativePath": "api/Reaction/TagMechanism/{tag_mechanism_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tag_mechanism_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.Reaction, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.ReactionController", + "Method": "Put", + "RelativePath": "api/Reaction/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "reaction", + "Type": "Chemistry_Cafe_API.Models.Reaction", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "Get", + "RelativePath": "api/Species/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.Species", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "Get", + "RelativePath": "api/Species/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.Species, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "Create", + "RelativePath": "api/Species/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "type", + "Type": "System.String", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "Delete", + "RelativePath": "api/Species/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "GetTags", + "RelativePath": "api/Species/TagMechanism/{tag_mechanism_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tag_mechanism_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.Species, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.SpeciesController", + "Method": "Put", + "RelativePath": "api/Species/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "species", + "Type": "Chemistry_Cafe_API.Models.Species", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "Get", + "RelativePath": "api/TagMechanism/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.TagMechanism", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "Get", + "RelativePath": "api/TagMechanism/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanism, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "Create", + "RelativePath": "api/TagMechanism/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tag", + "Type": "System.String", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "Delete", + "RelativePath": "api/TagMechanism/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "GetTags", + "RelativePath": "api/TagMechanism/Family/{family_uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "family_uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanism, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismController", + "Method": "Put", + "RelativePath": "api/TagMechanism/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "tagMechanism", + "Type": "Chemistry_Cafe_API.Models.TagMechanism", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", + "Method": "Get", + "RelativePath": "api/TagMechanismReactionList/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionList", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", + "Method": "Get", + "RelativePath": "api/TagMechanismReactionList/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanismReactionList, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", + "Method": "Create", + "RelativePath": "api/TagMechanismReactionList/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismReaction", + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", + "Method": "Delete", + "RelativePath": "api/TagMechanismReactionList/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListController", + "Method": "Put", + "RelativePath": "api/TagMechanismReactionList/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismReaction", + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", + "Method": "Get", + "RelativePath": "api/TagMechanismReactionListVersion/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionListVersion", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", + "Method": "Get", + "RelativePath": "api/TagMechanismReactionListVersion/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanismReactionListVersion, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", + "Method": "Create", + "RelativePath": "api/TagMechanismReactionListVersion/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismReactionListVersion", + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", + "Method": "Delete", + "RelativePath": "api/TagMechanismReactionListVersion/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismReactionListVersionController", + "Method": "Put", + "RelativePath": "api/TagMechanismReactionListVersion/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismReactionListVersion", + "Type": "Chemistry_Cafe_API.Models.TagMechanismReactionListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", + "Method": "Get", + "RelativePath": "api/TagMechanismSpeciesList/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesList", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", + "Method": "Get", + "RelativePath": "api/TagMechanismSpeciesList/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanismSpeciesList, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", + "Method": "Create", + "RelativePath": "api/TagMechanismSpeciesList/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismSpecies", + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", + "Method": "Delete", + "RelativePath": "api/TagMechanismSpeciesList/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListController", + "Method": "Put", + "RelativePath": "api/TagMechanismSpeciesList/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismSpecies", + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesList", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", + "Method": "Get", + "RelativePath": "api/TagMechanismSpeciesListVersion/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", + "Method": "Get", + "RelativePath": "api/TagMechanismSpeciesListVersion/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", + "Method": "Create", + "RelativePath": "api/TagMechanismSpeciesListVersion/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismSpeciesListVersion", + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", + "Method": "Delete", + "RelativePath": "api/TagMechanismSpeciesListVersion/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.TagMechanismSpeciesListVersionController", + "Method": "Put", + "RelativePath": "api/TagMechanismSpeciesListVersion/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "newTagMechanismSpeciesListVersion", + "Type": "Chemistry_Cafe_API.Models.TagMechanismSpeciesListVersion", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserController", + "Method": "Get", + "RelativePath": "api/User/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.User", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserController", + "Method": "Get", + "RelativePath": "api/User/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.User, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserController", + "Method": "Create", + "RelativePath": "api/User/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "log_in_info", + "Type": "System.String", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserController", + "Method": "Delete", + "RelativePath": "api/User/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserController", + "Method": "Put", + "RelativePath": "api/User/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "user", + "Type": "Chemistry_Cafe_API.Models.User", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserPreferencesController", + "Method": "Get", + "RelativePath": "api/UserPreferences/{uuid}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "Chemistry_Cafe_API.Models.UserPreferences", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserPreferencesController", + "Method": "Get", + "RelativePath": "api/UserPreferences/all", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [], + "ReturnTypes": [ + { + "Type": "System.Collections.Generic.IReadOnlyList\u00601[[Chemistry_Cafe_API.Models.UserPreferences, Chemistry Cafe API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserPreferencesController", + "Method": "Create", + "RelativePath": "api/UserPreferences/create", + "HttpMethod": "POST", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "userPreferneces", + "Type": "Chemistry_Cafe_API.Models.UserPreferences", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Guid", + "MediaTypes": [ + "text/plain", + "application/json", + "text/json" + ], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserPreferencesController", + "Method": "Delete", + "RelativePath": "api/UserPreferences/delete/{uuid}", + "HttpMethod": "DELETE", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "uuid", + "Type": "System.Guid", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] + }, + { + "ContainingType": "Chemistry_Cafe_API.Controllers.UserPreferencesController", + "Method": "Put", + "RelativePath": "api/UserPreferences/update", + "HttpMethod": "PUT", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "userpreferences", + "Type": "Chemistry_Cafe_API.Models.UserPreferences", + "IsRequired": true + } + ], + "ReturnTypes": [ + { + "Type": "System.Void", + "MediaTypes": [], + "StatusCode": 200 + } + ] } ] \ No newline at end of file diff --git a/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfo.cs b/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfo.cs index dac09fe..6e4c690 100644 --- a/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfo.cs +++ b/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfo.cs @@ -15,7 +15,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("Chemistry Cafe API")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bd526d7e49dee20e9f86dc1b8ac8c51fecb91757")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9fc28eb58475245c87b7fb1a1493c6bab0fd4375")] [assembly: System.Reflection.AssemblyProductAttribute("Chemistry Cafe API")] [assembly: System.Reflection.AssemblyTitleAttribute("Chemistry Cafe API")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfoInputs.cache b/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfoInputs.cache index 60b010f..ac706c5 100644 --- a/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfoInputs.cache +++ b/obj/Debug/net8.0/Chemistry Cafe API.AssemblyInfoInputs.cache @@ -1 +1 @@ -c28fc5d6cd029076feff62b2219d587133bc3fae98a148f052f4a32d91962b3a +63a8a767e2e926141f8980aa09acde294cd192fb877071feabd9b97c35e41e39 diff --git a/obj/Debug/net8.0/Chemistry Cafe API.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0/Chemistry Cafe API.GeneratedMSBuildEditorConfig.editorconfig index f7fd195..2dcdf97 100644 --- a/obj/Debug/net8.0/Chemistry Cafe API.GeneratedMSBuildEditorConfig.editorconfig +++ b/obj/Debug/net8.0/Chemistry Cafe API.GeneratedMSBuildEditorConfig.editorconfig @@ -9,11 +9,11 @@ build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Chemistry_Cafe_API build_property.RootNamespace = Chemistry_Cafe_API -build_property.ProjectDir = C:\College_Stuff\2024_Spring\CSCE482\Project\chemistry-cafe-api\ +build_property.ProjectDir = C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.RazorLangVersion = 8.0 build_property.SupportLocalizedComponentNames = build_property.GenerateRazorMetadataSourceChecksumAttributes = -build_property.MSBuildProjectDirectory = C:\College_Stuff\2024_Spring\CSCE482\Project\chemistry-cafe-api +build_property.MSBuildProjectDirectory = C:\Users\Evan\Documents\GitHub\chemistry-cafe-api build_property._RazorSourceGeneratorDebug = diff --git a/obj/Debug/net8.0/Chemistry Cafe API.assets.cache b/obj/Debug/net8.0/Chemistry Cafe API.assets.cache index e68a4ba959f97c3f90bea42439cf745533269ef5..6f6e0d7fbbc423a55c62da595ab36c755afe05cd 100644 GIT binary patch literal 87615 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 literal 6782 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 Kp6m$+9RCk9qlfbV delta 304 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 XmKIo0E#_k2Z{p7LU;h2`v%voZ!x?Wp literal 23040 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 diff --git a/obj/Debug/net8.0/Chemistry Cafe API.genruntimeconfig.cache b/obj/Debug/net8.0/Chemistry Cafe API.genruntimeconfig.cache index 4944be1..2d1b852 100644 --- a/obj/Debug/net8.0/Chemistry Cafe API.genruntimeconfig.cache +++ b/obj/Debug/net8.0/Chemistry Cafe API.genruntimeconfig.cache @@ -1 +1 @@ -c5ff5e2cf49d6a7d0a41538ad69a9e9c38a2ecbad2f8929e90ca555c3ed72103 +17470d4c6697e5103d3651de49a8cef7d5632e5d98b628ee703171d33d99ac73 diff --git a/obj/Debug/net8.0/Chemistry Cafe API.pdb b/obj/Debug/net8.0/Chemistry Cafe API.pdb index 1f858ed922e3e7710c354f97638ccedb3f788a6c..34f1ec626a232d1750324f9361bee6cef1a07499 100644 GIT binary patch literal 76688 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 delta 3455 zcmcInc~p~E7Jn~0B(m>Y!XmLKJAouE3gReMsaPNhkdZA3Ae-R6O%mL-V42SnD$)Wf z6r|E)6s?vc#h!|&RT1|MY^T;;rz%=Ib?yt|3H&|taelvdfA`+E=Y8Mf(@TuDAMvMt z+CqeoZ=xz23iKO*#{~Tkgq}fZLt;sb%JPeI7m_%G1t7kZB*X!`i`X+#W=?~$2ee8F zdTL<_Y0Nr-7rgQ0*RvYBc5Lt2&=BDEtKtnth$VM!IGk_%00nk2j0+2xwp9_Eo@IqDh-10bJkro618h~ihk_3FAls!9Yv}36O_@wwu|Wsl#64Z!@zKU|ohE1{!>4V^o|z z;>T#GnSIX8=D-%19xaR{(j+iU6~iBSIskOU1Pp6y&@jMvS`3aBXHe(z3wRxH8U!hxX(6Il*1JFQ%pIO2;poM07 zF{A~UX%WN&%?7XsIt&@3!_D-5h)0^~!=NRIL*0tzYwJ@mlF7*FA;%V@aydCgWDVV6 zTfLx`H$=$jgvbI$!G@k4pf@KJ4yzam3nxL2NC5s9DFVoTlOlxtcs3coB}WKtOt8#^ znh5D2=ZH)Pd)*_e2m3s*r561x>wuNpi@U(}NY(}6m$HlCxkeiR50Vdnhb?~rp4YHm z#DlOUvX(nxI&xzPz~d|zfX7=NLt~>mz?SHqJkw-nnrt2LV|l%ayG)!(XQN6*CY_74 z^Pu3N#fmO)*`{`Z>n_;vdrK8C*r*nmi{=CK(B@Pfcs@wefrk#vL%wMP;JFCQMeV>m z)R`8;WTWi#7$z45a>_*kA1XuUpDdU0CgZb4*CMp`k`?MR& zZ!iPJ=U?7=6d$JVXolbX*Hl8m^$?r&kM)0U@NTZozH;+`@xGr!M{&{%8_tyo$u=)l zej!)Y69044UqhcoeJ_5tCa`VQx#KTCUph~7TP(dNjoy@V=yvp#uVU9|EA4xSUY{(z zaj`DYgwxW zsKRyrZd>VO-9YDz#OaDVi8jfX|IP1}4ovT+`lQ!&9bd#;u&+p4bN?3KKZ}06X z{YwhDbLOmQpG`mVz5NnH`_>0qs{+r>7EQ{^hKz5AE~l(Gq;ns?<9Ubwi@U-G*VVtb z?QfDL@cY;MzP^3#VWQY?%B_-rt?y}R6|P!Xy~QV^Q90v8cFMHRdp2(rraCpWt=(3h zD{0CtIokQ*e`+H;mM@=JG*nlc^nX?7Bn%C|>BsT?^AwBqF8Y?UZ1QWd3+kf_w^ zun@IGBaT$%gl3Dga>O~JP>nh#TM`;2iV6EoB9vDh~F-`s=jvV=TDelzU_HnueF| z1dg3+T%Nipf8nCCM>7eK1Ww)xs3hec>r&!xz$@rf+5qxAImF zye&Vlzz)n9tozP$2?IW@i>c02J{&Ld-D9wQscUB<|3A}{YfLjU&5`EmOuBX=WNo^y zI$%r-qjC5MvzGG|h3=J^~a0 z+-E~;g#dRK;wJZwu_f07`v}45qyGwhWMw!<$9|OM`S+Yhwd3UjZA=AtQM1pxGosOK zYr|7J?2iK}+iQLTK529=U;)6}4f3P_?@FM(#GtO8_u%Lr`RJ}8nTuqCKz+oZmi7nmvdCQ@CeB7Up4!{bXEPZz&NSp`xao?03>9>2Wkr_8bW6Pe zrO?ny$9&ropCt$>?1t;Yq6Lvfvr&@uiew;v6iI_c6B|k`vG?ey29!eARe%6PECah+ z4I;k%a4RqZp<&PsJ2;yAFof@DuyV&;wO)@SO~kAw0TLB;VOk4Bp|1jr1e=FY-w#jsO4v diff --git a/obj/Debug/net8.0/Chemistry Cafe API.sourcelink.json b/obj/Debug/net8.0/Chemistry Cafe API.sourcelink.json index fd9fd35..05ca08f 100644 --- a/obj/Debug/net8.0/Chemistry Cafe API.sourcelink.json +++ b/obj/Debug/net8.0/Chemistry Cafe API.sourcelink.json @@ -1 +1 @@ -{"documents":{"C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\*":"https://raw.githubusercontent.com/NCAR/chemistry-cafe-api/bd526d7e49dee20e9f86dc1b8ac8c51fecb91757/*"}} \ No newline at end of file +{"documents":{"C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\*":"https://raw.githubusercontent.com/NCAR/chemistry-cafe-api/9fc28eb58475245c87b7fb1a1493c6bab0fd4375/*"}} \ No newline at end of file diff --git a/obj/Debug/net8.0/apphost.exe b/obj/Debug/net8.0/apphost.exe index 4c5c9a2e488760c6c95a199f12cee890845b19ee..c6a6f5f3001c8831d9f20637279a62fcd144a50f 100644 GIT binary patch delta 99 zcmZp8z|jCiEsR^3auE$$^roX?-Eu3 delta 99 zcmZp8z|jCiEsR^3a}5}2-I!LV7`5~Hj^t004rD%AOHXW diff --git a/obj/Debug/net8.0/ref/Chemistry Cafe API.dll b/obj/Debug/net8.0/ref/Chemistry Cafe API.dll index 212d096b12a7527d7a77c227695a77332301bf4a..1f79918aa72f3bb327f625ef2520a7aff8338ecf 100644 GIT binary patch literal 77312 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 diff --git a/obj/Debug/net8.0/refint/Chemistry Cafe API.dll b/obj/Debug/net8.0/refint/Chemistry Cafe API.dll index 212d096b12a7527d7a77c227695a77332301bf4a..1f79918aa72f3bb327f625ef2520a7aff8338ecf 100644 GIT binary patch literal 77312 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 diff --git a/obj/project.assets.json b/obj/project.assets.json index 5fee95e..198f5e1 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -2,6 +2,78 @@ "version": 3, "targets": { "net8.0": { + "Microsoft.ApplicationInsights/2.22.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "5.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.4": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.TestHost": "8.0.4", + "Microsoft.Extensions.DependencyModel": "8.0.0", + "Microsoft.Extensions.Hosting": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ], + "build": { + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets": {} + } + }, + "Microsoft.AspNetCore.TestHost/8.0.4": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.CodeCoverage/17.9.0": { + "type": "package", + "compile": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, "Microsoft.Extensions.ApiDescription.Server/6.0.5": { "type": "package", "build": { @@ -13,15 +85,19 @@ "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} } }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "Microsoft.Extensions.Configuration/8.0.0": { "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { "related": ".xml" } }, "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { "related": ".xml" } }, @@ -29,240 +105,1680 @@ "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Logging.Abstractions/7.0.1": { + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, "compile": { - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { "related": ".xml" } }, "runtime": { - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { "related": ".xml" } }, "build": { - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + "buildTransitive/net6.0/_._": {} } }, - "Microsoft.OpenApi/1.2.3": { + "Microsoft.Extensions.Configuration.Binder/8.0.0": { "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, "compile": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" } }, "runtime": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" } + }, + "build": { + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {} } }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": { + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, "build": { - "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props": {}, - "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets": {} + "buildTransitive/net6.0/_._": {} } }, - "MySqlConnector/2.3.5": { + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { "type": "package", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" }, "compile": { - "lib/net8.0/MySqlConnector.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { "related": ".xml" } }, "runtime": { - "lib/net8.0/MySqlConnector.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { "related": ".xml" } + }, + "build": { + "buildTransitive/net6.0/_._": {} } }, - "MySqlConnector.DependencyInjection/2.3.5": { + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "MySqlConnector": "2.3.5" + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" }, "compile": { - "lib/net7.0/MySqlConnector.DependencyInjection.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { "related": ".xml" } }, "runtime": { - "lib/net7.0/MySqlConnector.DependencyInjection.dll": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { "related": ".xml" } + }, + "build": { + "buildTransitive/net6.0/_._": {} } }, - "Swashbuckle.AspNetCore/6.5.0": { + "Microsoft.Extensions.Configuration.Json/8.0.0": { "type": "package", "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "6.5.0", - "Swashbuckle.AspNetCore.SwaggerGen": "6.5.0", - "Swashbuckle.AspNetCore.SwaggerUI": "6.5.0" + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } }, "build": { - "build/Swashbuckle.AspNetCore.props": {} + "buildTransitive/net6.0/_._": {} } }, - "Swashbuckle.AspNetCore.Swagger/6.5.0": { + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { "type": "package", "dependencies": { - "Microsoft.OpenApi": "1.2.3" + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" }, "compile": { - "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" } }, "runtime": { - "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" } }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props": {}, + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} + } }, - "Swashbuckle.AspNetCore.SwaggerGen/6.5.0": { + "Microsoft.Extensions.DependencyInjection/8.0.0": { "type": "package", "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "6.5.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" }, "compile": { - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" } }, "runtime": { - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" } + }, + "build": { + "buildTransitive/net6.0/_._": {} } }, - "Swashbuckle.AspNetCore.SwaggerUI/6.5.0": { + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { "type": "package", "compile": { - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" } }, "runtime": { - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" } }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - } - } - }, - "libraries": { - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "type": "package", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "build/Microsoft.Extensions.ApiDescription.Server.props", - "build/Microsoft.Extensions.ApiDescription.Server.targets", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", - "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "microsoft.extensions.apidescription.server.nuspec", - "tools/Newtonsoft.Json.dll", - "tools/dotnet-getdocument.deps.json", - "tools/dotnet-getdocument.dll", - "tools/dotnet-getdocument.runtimeconfig.json", - "tools/net461-x86/GetDocument.Insider.exe", - "tools/net461-x86/GetDocument.Insider.exe.config", - "tools/net461-x86/Microsoft.Win32.Primitives.dll", - "tools/net461-x86/System.AppContext.dll", - "tools/net461-x86/System.Buffers.dll", - "tools/net461-x86/System.Collections.Concurrent.dll", - "tools/net461-x86/System.Collections.NonGeneric.dll", - "tools/net461-x86/System.Collections.Specialized.dll", - "tools/net461-x86/System.Collections.dll", - "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", - "tools/net461-x86/System.ComponentModel.Primitives.dll", - "tools/net461-x86/System.ComponentModel.TypeConverter.dll", - "tools/net461-x86/System.ComponentModel.dll", - "tools/net461-x86/System.Console.dll", - "tools/net461-x86/System.Data.Common.dll", - "tools/net461-x86/System.Diagnostics.Contracts.dll", - "tools/net461-x86/System.Diagnostics.Debug.dll", - "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", - "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", - "tools/net461-x86/System.Diagnostics.Process.dll", - "tools/net461-x86/System.Diagnostics.StackTrace.dll", - "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", - "tools/net461-x86/System.Diagnostics.Tools.dll", - "tools/net461-x86/System.Diagnostics.TraceSource.dll", - "tools/net461-x86/System.Diagnostics.Tracing.dll", - "tools/net461-x86/System.Drawing.Primitives.dll", - "tools/net461-x86/System.Dynamic.Runtime.dll", - "tools/net461-x86/System.Globalization.Calendars.dll", - "tools/net461-x86/System.Globalization.Extensions.dll", - "tools/net461-x86/System.Globalization.dll", - "tools/net461-x86/System.IO.Compression.ZipFile.dll", - "tools/net461-x86/System.IO.Compression.dll", - "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", - "tools/net461-x86/System.IO.FileSystem.Primitives.dll", - "tools/net461-x86/System.IO.FileSystem.Watcher.dll", - "tools/net461-x86/System.IO.FileSystem.dll", - "tools/net461-x86/System.IO.IsolatedStorage.dll", - "tools/net461-x86/System.IO.MemoryMappedFiles.dll", - "tools/net461-x86/System.IO.Pipes.dll", - "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", - "tools/net461-x86/System.IO.dll", - "tools/net461-x86/System.Linq.Expressions.dll", - "tools/net461-x86/System.Linq.Parallel.dll", - "tools/net461-x86/System.Linq.Queryable.dll", - "tools/net461-x86/System.Linq.dll", - "tools/net461-x86/System.Memory.dll", - "tools/net461-x86/System.Net.Http.dll", - "tools/net461-x86/System.Net.NameResolution.dll", - "tools/net461-x86/System.Net.NetworkInformation.dll", - "tools/net461-x86/System.Net.Ping.dll", - "tools/net461-x86/System.Net.Primitives.dll", - "tools/net461-x86/System.Net.Requests.dll", - "tools/net461-x86/System.Net.Security.dll", - "tools/net461-x86/System.Net.Sockets.dll", - "tools/net461-x86/System.Net.WebHeaderCollection.dll", - "tools/net461-x86/System.Net.WebSockets.Client.dll", - "tools/net461-x86/System.Net.WebSockets.dll", - "tools/net461-x86/System.Numerics.Vectors.dll", - "tools/net461-x86/System.ObjectModel.dll", - "tools/net461-x86/System.Reflection.Extensions.dll", - "tools/net461-x86/System.Reflection.Primitives.dll", - "tools/net461-x86/System.Reflection.dll", - "tools/net461-x86/System.Resources.Reader.dll", - "tools/net461-x86/System.Resources.ResourceManager.dll", - "tools/net461-x86/System.Resources.Writer.dll", - "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", - "tools/net461-x86/System.Runtime.Extensions.dll", - "tools/net461-x86/System.Runtime.Handles.dll", - "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", - "tools/net461-x86/System.Runtime.InteropServices.dll", - "tools/net461-x86/System.Runtime.Numerics.dll", - "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", - "tools/net461-x86/System.Runtime.Serialization.Json.dll", - "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", - "tools/net461-x86/System.Runtime.Serialization.Xml.dll", - "tools/net461-x86/System.Runtime.dll", - "tools/net461-x86/System.Security.Claims.dll", - "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", - "tools/net461-x86/System.Security.Cryptography.Csp.dll", + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.DiagnosticSource": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Logging.Console": "8.0.0", + "Microsoft.Extensions.Logging.Debug": "8.0.0", + "Microsoft.Extensions.Logging.EventLog": "8.0.0", + "Microsoft.Extensions.Logging.EventSource": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.EventLog": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Options/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.NET.Test.Sdk/17.9.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.9.0", + "Microsoft.TestPlatform.TestHost": "17.9.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": {} + }, + "runtime": { + "lib/netcoreapp3.1/_._": {} + }, + "build": { + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props": {}, + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} + } + }, + "Microsoft.OpenApi/1.2.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.Testing.Extensions.Telemetry/1.1.0": { + "type": "package", + "dependencies": { + "Microsoft.ApplicationInsights": "2.22.0", + "Microsoft.Testing.Platform": "1.1.0" + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Testing.Extensions.Telemetry.props": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Testing.Extensions.Telemetry.props": {} + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions/1.1.0": { + "type": "package", + "dependencies": { + "Microsoft.Testing.Platform": "1.1.0" + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Testing.Extensions.VSTestBridge/1.1.0": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.5.0", + "Microsoft.Testing.Extensions.Telemetry": "1.1.0", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "1.1.0", + "Microsoft.Testing.Platform": "1.1.0" + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.Testing.Platform/1.1.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Testing.Platform.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Platform.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.Testing.Platform.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Platform.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Platform.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Platform.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Platform.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Platform.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Platform.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Platform.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Platform.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Platform.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Testing.Platform.props": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Testing.Platform.props": {} + } + }, + "Microsoft.Testing.Platform.MSBuild/1.1.0": { + "type": "package", + "dependencies": { + "Microsoft.Testing.Platform": "1.1.0" + }, + "compile": { + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Testing.Platform.MSBuild.props": {}, + "buildTransitive/net8.0/Microsoft.Testing.Platform.MSBuild.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.props": {}, + "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.targets": {} + } + }, + "Microsoft.TestPlatform.ObjectModel/17.9.0": { + "type": "package", + "dependencies": { + "System.Reflection.Metadata": "1.6.0" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.9.0": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.9.0", + "Newtonsoft.Json": "13.0.1" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props": {} + } + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": { + "type": "package", + "build": { + "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props": {}, + "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets": {} + } + }, + "MSTest.TestAdapter/3.3.1": { + "type": "package", + "dependencies": { + "Microsoft.Testing.Extensions.VSTestBridge": "1.1.0", + "Microsoft.Testing.Platform.MSBuild": "1.1.0" + }, + "build": { + "build/net8.0/MSTest.TestAdapter.props": {}, + "build/net8.0/MSTest.TestAdapter.targets": {} + } + }, + "MSTest.TestFramework/3.3.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/net8.0/MSTest.TestFramework.targets": {} + } + }, + "MySqlConnector/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + } + }, + "MySqlConnector.DependencyInjection/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/net7.0/MySqlConnector.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/MySqlConnector.DependencyInjection.dll": { + "related": ".xml" + } + } + }, + "Newtonsoft.Json/13.0.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/6.5.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.5.0", + "Swashbuckle.AspNetCore.SwaggerGen": "6.5.0", + "Swashbuckle.AspNetCore.SwaggerUI": "6.5.0" + }, + "build": { + "build/Swashbuckle.AspNetCore.props": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/6.5.0": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.2.3" + }, + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.5.0": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.5.0" + }, + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.5.0": { + "type": "package", + "compile": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Reflection.Metadata/1.6.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/8.0.0": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.core/2.7.1": { + "type": "package", + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Microsoft.ApplicationInsights/2.22.0": { + "sha512": "3AOM9bZtku7RQwHyMEY3tQMrHIgjcfRDa6YQpd/QG2LDGvMydSlL9Di+8LLMt7J2RDdfJ7/2jdYv6yHcMJAnNw==", + "type": "package", + "path": "microsoft.applicationinsights/2.22.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net452/Microsoft.ApplicationInsights.dll", + "lib/net452/Microsoft.ApplicationInsights.pdb", + "lib/net452/Microsoft.ApplicationInsights.xml", + "lib/net46/Microsoft.ApplicationInsights.dll", + "lib/net46/Microsoft.ApplicationInsights.pdb", + "lib/net46/Microsoft.ApplicationInsights.xml", + "lib/netstandard2.0/Microsoft.ApplicationInsights.dll", + "lib/netstandard2.0/Microsoft.ApplicationInsights.pdb", + "lib/netstandard2.0/Microsoft.ApplicationInsights.xml", + "microsoft.applicationinsights.2.22.0.nupkg.sha512", + "microsoft.applicationinsights.nuspec" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.4": { + "sha512": "e6IVsUq7zmAO/T4GGd00j1yxh6PBHF1PlQLaiFV/nM1jePH7Rbu+zVoXCRUDC2KOlHnPCym+eqFFlZkNNO2CvQ==", + "type": "package", + "path": "microsoft.aspnetcore.mvc.testing/8.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "build/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.xml", + "microsoft.aspnetcore.mvc.testing.8.0.4.nupkg.sha512", + "microsoft.aspnetcore.mvc.testing.nuspec", + "tasks/netstandard2.0/Microsoft.AspNetCore.Mvc.Testing.Tasks.dll" + ] + }, + "Microsoft.AspNetCore.TestHost/8.0.4": { + "sha512": "NQ5kHSo0aazGFbZ/3J2Fr/uKtOd43H3vJLoXoMY9GXUQppbfXco3zrYF9uBB7zkLsuFh9McBln1izgycYGscUA==", + "type": "package", + "path": "microsoft.aspnetcore.testhost/8.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll", + "lib/net8.0/Microsoft.AspNetCore.TestHost.xml", + "microsoft.aspnetcore.testhost.8.0.4.nupkg.sha512", + "microsoft.aspnetcore.testhost.nuspec" + ] + }, + "Microsoft.CodeCoverage/17.9.0": { + "sha512": "RGD37ZSrratfScYXm7M0HjvxMxZyWZL4jm+XgMZbkIY1UPgjUpbNA/t+WTGj/rC/0Hm9A3IrH3ywbKZkOCnoZA==", + "type": "package", + "path": "microsoft.codecoverage/17.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/VanguardInstrumentationProfiler_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/VanguardInstrumentationProfiler_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/InstrumentationEngine/macos/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/InstrumentationEngine/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.9.0.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net461-x86/GetDocument.Insider.exe", + "tools/net461-x86/GetDocument.Insider.exe.config", + "tools/net461-x86/Microsoft.Win32.Primitives.dll", + "tools/net461-x86/System.AppContext.dll", + "tools/net461-x86/System.Buffers.dll", + "tools/net461-x86/System.Collections.Concurrent.dll", + "tools/net461-x86/System.Collections.NonGeneric.dll", + "tools/net461-x86/System.Collections.Specialized.dll", + "tools/net461-x86/System.Collections.dll", + "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", + "tools/net461-x86/System.ComponentModel.Primitives.dll", + "tools/net461-x86/System.ComponentModel.TypeConverter.dll", + "tools/net461-x86/System.ComponentModel.dll", + "tools/net461-x86/System.Console.dll", + "tools/net461-x86/System.Data.Common.dll", + "tools/net461-x86/System.Diagnostics.Contracts.dll", + "tools/net461-x86/System.Diagnostics.Debug.dll", + "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", + "tools/net461-x86/System.Diagnostics.Process.dll", + "tools/net461-x86/System.Diagnostics.StackTrace.dll", + "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461-x86/System.Diagnostics.Tools.dll", + "tools/net461-x86/System.Diagnostics.TraceSource.dll", + "tools/net461-x86/System.Diagnostics.Tracing.dll", + "tools/net461-x86/System.Drawing.Primitives.dll", + "tools/net461-x86/System.Dynamic.Runtime.dll", + "tools/net461-x86/System.Globalization.Calendars.dll", + "tools/net461-x86/System.Globalization.Extensions.dll", + "tools/net461-x86/System.Globalization.dll", + "tools/net461-x86/System.IO.Compression.ZipFile.dll", + "tools/net461-x86/System.IO.Compression.dll", + "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", + "tools/net461-x86/System.IO.FileSystem.Primitives.dll", + "tools/net461-x86/System.IO.FileSystem.Watcher.dll", + "tools/net461-x86/System.IO.FileSystem.dll", + "tools/net461-x86/System.IO.IsolatedStorage.dll", + "tools/net461-x86/System.IO.MemoryMappedFiles.dll", + "tools/net461-x86/System.IO.Pipes.dll", + "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", + "tools/net461-x86/System.IO.dll", + "tools/net461-x86/System.Linq.Expressions.dll", + "tools/net461-x86/System.Linq.Parallel.dll", + "tools/net461-x86/System.Linq.Queryable.dll", + "tools/net461-x86/System.Linq.dll", + "tools/net461-x86/System.Memory.dll", + "tools/net461-x86/System.Net.Http.dll", + "tools/net461-x86/System.Net.NameResolution.dll", + "tools/net461-x86/System.Net.NetworkInformation.dll", + "tools/net461-x86/System.Net.Ping.dll", + "tools/net461-x86/System.Net.Primitives.dll", + "tools/net461-x86/System.Net.Requests.dll", + "tools/net461-x86/System.Net.Security.dll", + "tools/net461-x86/System.Net.Sockets.dll", + "tools/net461-x86/System.Net.WebHeaderCollection.dll", + "tools/net461-x86/System.Net.WebSockets.Client.dll", + "tools/net461-x86/System.Net.WebSockets.dll", + "tools/net461-x86/System.Numerics.Vectors.dll", + "tools/net461-x86/System.ObjectModel.dll", + "tools/net461-x86/System.Reflection.Extensions.dll", + "tools/net461-x86/System.Reflection.Primitives.dll", + "tools/net461-x86/System.Reflection.dll", + "tools/net461-x86/System.Resources.Reader.dll", + "tools/net461-x86/System.Resources.ResourceManager.dll", + "tools/net461-x86/System.Resources.Writer.dll", + "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461-x86/System.Runtime.Extensions.dll", + "tools/net461-x86/System.Runtime.Handles.dll", + "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461-x86/System.Runtime.InteropServices.dll", + "tools/net461-x86/System.Runtime.Numerics.dll", + "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", + "tools/net461-x86/System.Runtime.Serialization.Json.dll", + "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", + "tools/net461-x86/System.Runtime.Serialization.Xml.dll", + "tools/net461-x86/System.Runtime.dll", + "tools/net461-x86/System.Security.Claims.dll", + "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", + "tools/net461-x86/System.Security.Cryptography.Csp.dll", "tools/net461-x86/System.Security.Cryptography.Encoding.dll", "tools/net461-x86/System.Security.Cryptography.Primitives.dll", "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", @@ -395,10 +1911,870 @@ "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" ] }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { - "sha512": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "Microsoft.Extensions.Configuration/8.0.0": { + "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "type": "package", + "path": "microsoft.extensions.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", + "lib/net462/Microsoft.Extensions.Configuration.dll", + "lib/net462/Microsoft.Extensions.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "sha512": "mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll", + "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets", + "lib/net462/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net462/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "sha512": "NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "type": "package", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.CommandLine.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.CommandLine.targets", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.commandline.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "sha512": "plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "type": "package", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.environmentvariables.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "sha512": "McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==", + "type": "package", + "path": "microsoft.extensions.configuration.fileextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.FileExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.FileExtensions.targets", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.fileextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "sha512": "C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==", + "type": "package", + "path": "microsoft.extensions.configuration.json/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Json.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Json.targets", + "lib/net462/Microsoft.Extensions.Configuration.Json.dll", + "lib/net462/Microsoft.Extensions.Configuration.Json.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.xml", + "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "sha512": "ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==", + "type": "package", + "path": "microsoft.extensions.configuration.usersecrets/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.usersecrets.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "sha512": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "sha512": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyModel/8.0.0": { + "sha512": "NSmDw3K0ozNDgShSIpsZcbFIzBX4w28nDag+TfaQujkXGazBm+lid5onlWoCBy4VsLxqnnKjEBbGSJVWJMf43g==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", + "lib/net462/Microsoft.Extensions.DependencyModel.dll", + "lib/net462/Microsoft.Extensions.DependencyModel.xml", + "lib/net6.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net6.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net7.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net7.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "sha512": "3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==", + "type": "package", + "path": "microsoft.extensions.diagnostics/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml", + "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "sha512": "JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "sha512": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "type": "package", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Physical.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Physical.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", + "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.physical.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "sha512": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "type": "package", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileSystemGlobbing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileSystemGlobbing.targets", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "microsoft.extensions.filesystemglobbing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "sha512": "ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==", + "type": "package", + "path": "microsoft.extensions.hosting/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.targets", + "lib/net462/Microsoft.Extensions.Hosting.dll", + "lib/net462/Microsoft.Extensions.Hosting.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", + "microsoft.extensions.hosting.8.0.0.nupkg.sha512", + "microsoft.extensions.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "sha512": "AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging/8.0.0": { + "sha512": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "sha512": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "sha512": "ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==", + "type": "package", + "path": "microsoft.extensions.logging.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Configuration.targets", + "lib/net462/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net462/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", + "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "sha512": "e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==", + "type": "package", + "path": "microsoft.extensions.logging.console/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Console.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Console.targets", + "lib/net462/Microsoft.Extensions.Logging.Console.dll", + "lib/net462/Microsoft.Extensions.Logging.Console.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Console.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", + "microsoft.extensions.logging.console.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.console.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "sha512": "dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==", + "type": "package", + "path": "microsoft.extensions.logging.debug/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Debug.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Debug.targets", + "lib/net462/Microsoft.Extensions.Logging.Debug.dll", + "lib/net462/Microsoft.Extensions.Logging.Debug.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", + "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.debug.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "sha512": "3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==", + "type": "package", + "path": "microsoft.extensions.logging.eventlog/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventLog.targets", + "lib/net462/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net462/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", + "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "sha512": "oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==", + "type": "package", + "path": "microsoft.extensions.logging.eventsource/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventSource.targets", + "lib/net462/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net462/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", + "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.eventsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.0": { + "sha512": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "type": "package", + "path": "microsoft.extensions.options/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.0.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "sha512": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -406,97 +2782,78 @@ "LICENSE.TXT", "PACKAGE.md", "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets", "buildTransitive/net462/_._", "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.options.configurationextensions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging.Abstractions/7.0.1": { - "sha512": "pkeBFx0vqMW/A3aUVHh7MPu3WkBhaVlezhSZeb1c9XD0vUReYH1TLFSy5MxJgZfmz5LZzYoErMorlYZiwpOoNA==", + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", "type": "package", - "path": "microsoft.extensions.logging.abstractions/7.0.1", + "path": "microsoft.extensions.primitives/8.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", + "PACKAGE.md", "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.7.0.1.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", "useSharedDesignerContext.txt" ] }, + "Microsoft.NET.Test.Sdk/17.9.0": { + "sha512": "7GUNAUbJYn644jzwLm5BD3a2p9C1dmP8Hr6fDPDxgItQk9hBs1Svdxzz07KQ/UphMSmgza9AbijBJGmw5D658A==", + "type": "package", + "path": "microsoft.net.test.sdk/17.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.cs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.fs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.vb", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", + "lib/net462/_._", + "lib/netcoreapp3.1/_._", + "microsoft.net.test.sdk.17.9.0.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, "Microsoft.OpenApi/1.2.3": { "sha512": "Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", "type": "package", @@ -514,6 +2871,532 @@ "microsoft.openapi.nuspec" ] }, + "Microsoft.Testing.Extensions.Telemetry/1.1.0": { + "sha512": "K9xjzIlNxUHHvVCYoQYjk3ojnNgS9Jhb9nHSuEAMl5QGhziNdHztGM3fzRQ72KRIA9MyeU75fCex8YZlsRkF1g==", + "type": "package", + "path": "microsoft.testing.extensions.telemetry/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.txt", + "PACKAGE.md", + "build/net6.0/Microsoft.Testing.Extensions.Telemetry.props", + "build/net7.0/Microsoft.Testing.Extensions.Telemetry.props", + "build/net8.0/Microsoft.Testing.Extensions.Telemetry.props", + "build/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.props", + "buildMultiTargeting/Microsoft.Testing.Extensions.Telemetry.props", + "buildTransitive/net6.0/Microsoft.Testing.Extensions.Telemetry.props", + "buildTransitive/net7.0/Microsoft.Testing.Extensions.Telemetry.props", + "buildTransitive/net8.0/Microsoft.Testing.Extensions.Telemetry.props", + "buildTransitive/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.props", + "lib/net6.0/Microsoft.Testing.Extensions.Telemetry.dll", + "lib/net6.0/Microsoft.Testing.Extensions.Telemetry.xml", + "lib/net6.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/Microsoft.Testing.Extensions.Telemetry.dll", + "lib/net7.0/Microsoft.Testing.Extensions.Telemetry.xml", + "lib/net7.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll", + "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.xml", + "lib/net8.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.dll", + "lib/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.xml", + "lib/netstandard2.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "microsoft.testing.extensions.telemetry.1.1.0.nupkg.sha512", + "microsoft.testing.extensions.telemetry.nuspec" + ] + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions/1.1.0": { + "sha512": "mspVaUbMAmsMg6IQaGJkypeCCYmUYYQkxFSRbSGdsTlzu9dpsH6spavSL6DUtkR7qd07ulYDlPCJ/yBU6TYdug==", + "type": "package", + "path": "microsoft.testing.extensions.trxreport.abstractions/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.txt", + "PACKAGE.md", + "lib/net6.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll", + "lib/net6.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml", + "lib/net7.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll", + "lib/net7.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml", + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll", + "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml", + "microsoft.testing.extensions.trxreport.abstractions.1.1.0.nupkg.sha512", + "microsoft.testing.extensions.trxreport.abstractions.nuspec" + ] + }, + "Microsoft.Testing.Extensions.VSTestBridge/1.1.0": { + "sha512": "6IcxNS8lARWd/7K/dDC0IAXRnUpQ9kC0Cb+Eu8biZG40pVDZoDEyn4QIuicJvPSCT1C72AtSUqKzZASO7i4gPg==", + "type": "package", + "path": "microsoft.testing.extensions.vstestbridge/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.txt", + "PACKAGE.md", + "lib/net6.0/Microsoft.Testing.Extensions.VSTestBridge.dll", + "lib/net6.0/Microsoft.Testing.Extensions.VSTestBridge.xml", + "lib/net6.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/Microsoft.Testing.Extensions.VSTestBridge.dll", + "lib/net7.0/Microsoft.Testing.Extensions.VSTestBridge.xml", + "lib/net7.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.dll", + "lib/net8.0/Microsoft.Testing.Extensions.VSTestBridge.xml", + "lib/net8.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/Microsoft.Testing.Extensions.VSTestBridge.dll", + "lib/netstandard2.0/Microsoft.Testing.Extensions.VSTestBridge.xml", + "lib/netstandard2.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "microsoft.testing.extensions.vstestbridge.1.1.0.nupkg.sha512", + "microsoft.testing.extensions.vstestbridge.nuspec" + ] + }, + "Microsoft.Testing.Platform/1.1.0": { + "sha512": "on8S7PvvR9Ai5gL/DKN5KrE8e4ctsUIMEzCGY916D+8xj5W/ho0ru9OJiNk7vWFbQrGwpLs87xE7Q8RPLSO/og==", + "type": "package", + "path": "microsoft.testing.platform/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net6.0/Microsoft.Testing.Platform.props", + "build/net7.0/Microsoft.Testing.Platform.props", + "build/net8.0/Microsoft.Testing.Platform.props", + "build/netstandard2.0/Microsoft.Testing.Platform.props", + "buildMultiTargeting/Microsoft.Testing.Platform.props", + "buildTransitive/net6.0/Microsoft.Testing.Platform.props", + "buildTransitive/net7.0/Microsoft.Testing.Platform.props", + "buildTransitive/net8.0/Microsoft.Testing.Platform.props", + "buildTransitive/netstandard2.0/Microsoft.Testing.Platform.props", + "lib/net6.0/Microsoft.Testing.Platform.dll", + "lib/net6.0/Microsoft.Testing.Platform.xml", + "lib/net6.0/cs/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/de/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/es/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/fr/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/it/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/ja/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/ko/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/pl/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/pt-BR/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/ru/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/tr/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.Testing.Platform.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/Microsoft.Testing.Platform.dll", + "lib/net7.0/Microsoft.Testing.Platform.xml", + "lib/net7.0/cs/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/de/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/es/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/fr/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/it/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/ja/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/ko/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/pl/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/pt-BR/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/ru/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/tr/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.Testing.Platform.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/Microsoft.Testing.Platform.dll", + "lib/net8.0/Microsoft.Testing.Platform.xml", + "lib/net8.0/cs/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/de/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/es/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/fr/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/it/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/ja/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/ko/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/pl/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/ru/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/tr/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/Microsoft.Testing.Platform.dll", + "lib/netstandard2.0/Microsoft.Testing.Platform.xml", + "lib/netstandard2.0/cs/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/de/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/es/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/fr/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/it/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/ja/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/ko/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/pl/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/ru/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/tr/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Platform.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Platform.resources.dll", + "microsoft.testing.platform.1.1.0.nupkg.sha512", + "microsoft.testing.platform.nuspec" + ] + }, + "Microsoft.Testing.Platform.MSBuild/1.1.0": { + "sha512": "n2F3OP27qPCSBDfi25DfIeuq3UtzB/BUlXJBCqu1HQc8n7ak5gfzWlkJwlOIk2PAltocdJWQHMfeVYfcLkZ41g==", + "type": "package", + "path": "microsoft.testing.platform.msbuild/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.txt", + "PACKAGE.md", + "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.MSBuild.dll", + "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.dll", + "build/net6.0/Microsoft.Testing.Platform.MSBuild.props", + "build/net6.0/Microsoft.Testing.Platform.MSBuild.targets", + "build/net7.0/Microsoft.Testing.Platform.MSBuild.props", + "build/net7.0/Microsoft.Testing.Platform.MSBuild.targets", + "build/net8.0/Microsoft.Testing.Platform.MSBuild.props", + "build/net8.0/Microsoft.Testing.Platform.MSBuild.targets", + "build/netstandard2.0/Microsoft.Testing.Platform.MSBuild.props", + "build/netstandard2.0/Microsoft.Testing.Platform.MSBuild.targets", + "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.VSTest.targets", + "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.props", + "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.targets", + "buildTransitive/net6.0/Microsoft.Testing.Platform.MSBuild.props", + "buildTransitive/net6.0/Microsoft.Testing.Platform.MSBuild.targets", + "buildTransitive/net7.0/Microsoft.Testing.Platform.MSBuild.props", + "buildTransitive/net7.0/Microsoft.Testing.Platform.MSBuild.targets", + "buildTransitive/net8.0/Microsoft.Testing.Platform.MSBuild.props", + "buildTransitive/net8.0/Microsoft.Testing.Platform.MSBuild.targets", + "buildTransitive/netstandard2.0/Microsoft.Testing.Platform.MSBuild.props", + "buildTransitive/netstandard2.0/Microsoft.Testing.Platform.MSBuild.targets", + "lib/net6.0/Microsoft.Testing.Platform.MSBuild.dll", + "lib/net6.0/Microsoft.Testing.Platform.MSBuild.xml", + "lib/net6.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/Microsoft.Testing.Platform.MSBuild.dll", + "lib/net7.0/Microsoft.Testing.Platform.MSBuild.xml", + "lib/net7.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.dll", + "lib/net8.0/Microsoft.Testing.Platform.MSBuild.xml", + "lib/net8.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/Microsoft.Testing.Platform.MSBuild.dll", + "lib/netstandard2.0/Microsoft.Testing.Platform.MSBuild.xml", + "lib/netstandard2.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll", + "microsoft.testing.platform.msbuild.1.1.0.nupkg.sha512", + "microsoft.testing.platform.msbuild.nuspec" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.9.0": { + "sha512": "1ilw/8vgmjLyKU+2SKXKXaOqpYFJCQfGqGz+x0cosl981VzjrY74Sv6qAJv+neZMZ9ZMxF3ArN6kotaQ4uvEBw==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.9.0.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.9.0": { + "sha512": "Spmg7Wx49Ya3SxBjyeAR+nQpjMTKZwTwpZ7KyeOTIqI/WHNPnBU4HUvl5kuHPQAwGWqMy4FGZja1HvEwvoaDiA==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props", + "build/netcoreapp3.1/x64/testhost.dll", + "build/netcoreapp3.1/x64/testhost.exe", + "build/netcoreapp3.1/x86/testhost.x86.dll", + "build/netcoreapp3.1/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/testhost.deps.json", + "lib/netcoreapp3.1/testhost.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/x64/msdia140.dll", + "lib/netcoreapp3.1/x86/msdia140.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.9.0.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.19.6": { "sha512": "7GOQdMzQcH7o/bPFL/I2kQEgMnq2pYZ+exhGb9nNqs624K9w2jB2zieh4sOH9+a01i/G9iTWfeUI3IGMF7SKNg==", "type": "package", @@ -595,6 +3478,316 @@ "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll" ] }, + "MSTest.TestAdapter/3.3.1": { + "sha512": "ddSsUEQKibWamkosqbQmuhb1DpToI2LJb01yEPDA4MIhXJah4oBOARlLLI7bjWSkkRLDz/iPlx2Uac9qgmHlHg==", + "type": "package", + "path": "mstest.testadapter/3.3.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/_localization/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/cs/Microsoft.Testing.Platform.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/de/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/de/Microsoft.Testing.Platform.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/es/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/es/Microsoft.Testing.Platform.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/fr/Microsoft.Testing.Platform.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/it/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/it/Microsoft.Testing.Platform.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/ja/Microsoft.Testing.Platform.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/ko/Microsoft.Testing.Platform.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/pl/Microsoft.Testing.Platform.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/pt-BR/Microsoft.Testing.Platform.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/ru/Microsoft.Testing.Platform.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/tr/Microsoft.Testing.Platform.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/zh-Hans/Microsoft.Testing.Platform.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll", + "build/_localization/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll", + "build/_localization/zh-Hant/Microsoft.Testing.Platform.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/net462/MSTest.TestAdapter.props", + "build/net462/MSTest.TestAdapter.targets", + "build/net462/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/net6.0/MSTest.TestAdapter.props", + "build/net6.0/MSTest.TestAdapter.targets", + "build/net6.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net7.0/MSTest.TestAdapter.props", + "build/net7.0/MSTest.TestAdapter.targets", + "build/net7.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net7.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net7.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net7.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/net8.0/MSTest.TestAdapter.props", + "build/net8.0/MSTest.TestAdapter.targets", + "build/net8.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net8.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net8.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/netcoreapp3.1/MSTest.TestAdapter.props", + "build/netcoreapp3.1/MSTest.TestAdapter.targets", + "build/netcoreapp3.1/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/netstandard2.0/MSTest.TestAdapter.props", + "build/netstandard2.0/MSTest.TestAdapter.targets", + "build/netstandard2.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/uap10.0/MSTest.TestAdapter.props", + "build/uap10.0/MSTest.TestAdapter.targets", + "build/uap10.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "mstest.testadapter.3.3.1.nupkg.sha512", + "mstest.testadapter.nuspec" + ] + }, + "MSTest.TestFramework/3.3.1": { + "sha512": "020SuA2p8N7o+/AHC0SLgzGpyS1hNjR8m5tWxnuGqJ3HeJhArUbuPAU8RZr8Ll38ij8oiutGCkQ/G+ymyO51Ow==", + "type": "package", + "path": "mstest.testframework/3.3.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net6.0/MSTest.TestFramework.targets", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "build/net7.0/MSTest.TestFramework.targets", + "build/net7.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net7.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "build/net8.0/MSTest.TestFramework.targets", + "build/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net6.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net7.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net7.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "mstest.testframework.3.3.1.nupkg.sha512", + "mstest.testframework.nuspec" + ] + }, "MySqlConnector/2.3.5": { "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", "type": "package", @@ -641,6 +3834,33 @@ "mysqlconnector.dependencyinjection.nuspec" ] }, + "Newtonsoft.Json/13.0.1": { + "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", + "type": "package", + "path": "newtonsoft.json/13.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.1.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, "Swashbuckle.AspNetCore/6.5.0": { "sha512": "FK05XokgjgwlCI6wCT+D4/abtQkL1X1/B9Oas6uIwHFmYrIO9WUD5aLC9IzMs9GnHfUXOtXZ2S43gN1mhs5+aA==", "type": "package", @@ -730,30 +3950,299 @@ "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512", "swashbuckle.aspnetcore.swaggerui.nuspec" ] + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "sha512": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net6.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net6.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net7.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net7.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.0": { + "sha512": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.0.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IO.Pipelines/8.0.0": { + "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "type": "package", + "path": "system.io.pipelines/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net6.0/System.IO.Pipelines.dll", + "lib/net6.0/System.IO.Pipelines.xml", + "lib/net7.0/System.IO.Pipelines.dll", + "lib/net7.0/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.8.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Reflection.Metadata/1.6.0": { + "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", + "type": "package", + "path": "system.reflection.metadata/1.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml", + "system.reflection.metadata.1.6.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.0": { + "sha512": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==", + "type": "package", + "path": "system.text.json/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.0.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "xunit.abstractions/2.0.3": { + "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "type": "package", + "path": "xunit.abstractions/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/netstandard1.0/xunit.abstractions.dll", + "lib/netstandard1.0/xunit.abstractions.xml", + "lib/netstandard2.0/xunit.abstractions.dll", + "lib/netstandard2.0/xunit.abstractions.xml", + "xunit.abstractions.2.0.3.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.extensibility.core/2.7.1": { + "sha512": "yLX4XlBFkvNYCzf+DEzlNk45KsSlu9W93IJHBmtUP96qZ9XyRYDFlwMj6BCcOhDKVNrZxSM8bqu4F/Qud4ehxA==", + "type": "package", + "path": "xunit.extensibility.core/2.7.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.core.dll", + "lib/net452/xunit.core.dll.tdnet", + "lib/net452/xunit.core.xml", + "lib/net452/xunit.runner.tdnet.dll", + "lib/net452/xunit.runner.utility.net452.dll", + "lib/netstandard1.1/xunit.core.dll", + "lib/netstandard1.1/xunit.core.xml", + "xunit.extensibility.core.2.7.1.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] } }, "projectFileDependencyGroups": { "net8.0": [ + "MSTest.TestAdapter >= 3.3.1", + "MSTest.TestFramework >= 3.3.1", + "Microsoft.AspNetCore.Mvc.Testing >= 8.0.4", + "Microsoft.CodeCoverage >= 17.9.0", + "Microsoft.NET.Test.Sdk >= 17.9.0", "Microsoft.VisualStudio.Azure.Containers.Tools.Targets >= 1.19.6", "MySqlConnector >= 2.3.5", "MySqlConnector.DependencyInjection >= 2.3.5", - "Swashbuckle.AspNetCore >= 6.5.0" + "Swashbuckle.AspNetCore >= 6.5.0", + "xunit.extensibility.core >= 2.7.1" ] }, "packageFolders": { - "C:\\Users\\gigem\\.nuget\\packages\\": {} + "C:\\Users\\Evan\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "projectUniqueName": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", "projectName": "Chemistry Cafe API", - "projectPath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj", - "packagesPath": "C:\\Users\\gigem\\.nuget\\packages\\", - "outputPath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\obj\\", + "projectPath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "packagesPath": "C:\\Users\\Evan\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\gigem\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\Evan\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -784,6 +4273,26 @@ "net8.0": { "targetAlias": "net8.0", "dependencies": { + "MSTest.TestAdapter": { + "target": "Package", + "version": "[3.3.1, )" + }, + "MSTest.TestFramework": { + "target": "Package", + "version": "[3.3.1, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.4, )" + }, + "Microsoft.CodeCoverage": { + "target": "Package", + "version": "[17.9.0, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.9.0, )" + }, "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": { "target": "Package", "version": "[1.19.6, )" @@ -799,6 +4308,10 @@ "Swashbuckle.AspNetCore": { "target": "Package", "version": "[6.5.0, )" + }, + "xunit.extensibility.core": { + "target": "Package", + "version": "[2.7.1, )" } }, "imports": [ diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache index fd00643..1e873e8 100644 --- a/obj/project.nuget.cache +++ b/obj/project.nuget.cache @@ -1,20 +1,69 @@ { "version": 2, - "dgSpecHash": "/ndC/khMlBa9AQIaSdtrhO26tuvwrG7ai6jb+tgRUf0mo8HAXXbQ+pj951e6Rj/5xQMRQiuZlKlgQSw9cTGPrw==", + "dgSpecHash": "9erSHxnEZv9HkTVewtbCfXxCNCmbsMSWrUpPf7l20A8Z96GcwI96pOyjU1M8V322cwJgIN8xIwl5S0tlVgxuUQ==", "success": true, - "projectFilePath": "C:\\College_Stuff\\2024_Spring\\CSCE482\\Project\\chemistry-cafe-api\\Chemistry Cafe API.csproj", + "projectFilePath": "C:\\Users\\Evan\\Documents\\GitHub\\chemistry-cafe-api\\Chemistry Cafe API.csproj", "expectedPackageFiles": [ - "C:\\Users\\gigem\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.0\\microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\7.0.1\\microsoft.extensions.logging.abstractions.7.0.1.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\microsoft.openapi\\1.2.3\\microsoft.openapi.1.2.3.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.19.6\\microsoft.visualstudio.azure.containers.tools.targets.1.19.6.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\mysqlconnector.dependencyinjection\\2.3.5\\mysqlconnector.dependencyinjection.2.3.5.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\swashbuckle.aspnetcore\\6.5.0\\swashbuckle.aspnetcore.6.5.0.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.5.0\\swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.5.0\\swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512", - "C:\\Users\\gigem\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.5.0\\swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512" + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.applicationinsights\\2.22.0\\microsoft.applicationinsights.2.22.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.aspnetcore.mvc.testing\\8.0.4\\microsoft.aspnetcore.mvc.testing.8.0.4.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.aspnetcore.testhost\\8.0.4\\microsoft.aspnetcore.testhost.8.0.4.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.codecoverage\\17.9.0\\microsoft.codecoverage.17.9.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.0\\microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.0\\microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.0\\microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.0\\microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.0\\microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.0\\microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.0\\microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.0\\microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.0\\microsoft.extensions.hosting.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.0\\microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging\\8.0.0\\microsoft.extensions.logging.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.0\\microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.0\\microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.0\\microsoft.extensions.logging.console.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.0\\microsoft.extensions.logging.debug.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.0\\microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.0\\microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.net.test.sdk\\17.9.0\\microsoft.net.test.sdk.17.9.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.openapi\\1.2.3\\microsoft.openapi.1.2.3.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testing.extensions.telemetry\\1.1.0\\microsoft.testing.extensions.telemetry.1.1.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testing.extensions.trxreport.abstractions\\1.1.0\\microsoft.testing.extensions.trxreport.abstractions.1.1.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testing.extensions.vstestbridge\\1.1.0\\microsoft.testing.extensions.vstestbridge.1.1.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testing.platform\\1.1.0\\microsoft.testing.platform.1.1.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testing.platform.msbuild\\1.1.0\\microsoft.testing.platform.msbuild.1.1.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.9.0\\microsoft.testplatform.objectmodel.17.9.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.testplatform.testhost\\17.9.0\\microsoft.testplatform.testhost.17.9.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.19.6\\microsoft.visualstudio.azure.containers.tools.targets.1.19.6.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\mstest.testadapter\\3.3.1\\mstest.testadapter.3.3.1.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\mstest.testframework\\3.3.1\\mstest.testframework.3.3.1.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\mysqlconnector.dependencyinjection\\2.3.5\\mysqlconnector.dependencyinjection.2.3.5.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\swashbuckle.aspnetcore\\6.5.0\\swashbuckle.aspnetcore.6.5.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.5.0\\swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.5.0\\swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.5.0\\swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.0\\system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.0\\system.diagnostics.eventlog.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\Evan\\.nuget\\packages\\xunit.extensibility.core\\2.7.1\\xunit.extensibility.core.2.7.1.nupkg.sha512" ], "logs": [] } \ No newline at end of file From b17865514576bfb5c909a0f41370e7f31472f73c Mon Sep 17 00:00:00 2001 From: ecyr20 Date: Wed, 24 Apr 2024 16:16:06 -0500 Subject: [PATCH 2/4] Tests for Family Controller and TegMechanismController --- Tests/FamilyControllerTests.cs | 30 +++++++++++++++ Tests/TagMechanismControllerTests.cs | 55 ++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 Tests/TagMechanismControllerTests.cs diff --git a/Tests/FamilyControllerTests.cs b/Tests/FamilyControllerTests.cs index 961fa04..1ea7afb 100644 --- a/Tests/FamilyControllerTests.cs +++ b/Tests/FamilyControllerTests.cs @@ -19,5 +19,35 @@ public async Task Get_retrieves_family() Assert.IsNotNull(result); } + + [TestMethod] + public async Task Creates_family() + { + var controller = new FamilyController(db); + + var result = await controller.Create("Test") ; + + var getResult = await controller.Get(result.uuid); + + Assert.AreEqual(result.uuid, getResult.uuid); + } + + [TestMethod] + public async Task Updates_family() + { + var controller = new FamilyController(db); + + var result = await controller.Create("Test"); + + result.name = "Edited"; + + await controller.Put(result); + + var getResult = await controller.Get(result.uuid); + + await controller.Delete(result.uuid); + + Assert.AreEqual(result.name, "Edited"); + } } } diff --git a/Tests/TagMechanismControllerTests.cs b/Tests/TagMechanismControllerTests.cs new file mode 100644 index 0000000..fb2e791 --- /dev/null +++ b/Tests/TagMechanismControllerTests.cs @@ -0,0 +1,55 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class TagMechanismControllerTests + { + readonly MySqlDataSource db = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com;User ID=cafeadmin;Password=cafeadmin;Port=3306;Database=Testing"); + + [TestMethod] + public async Task Get_retrieves_tagmechanism() + { + var controller = new TagMechanismController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_tagmechanism() + { + var controller = new TagMechanismController(db); + + var result = await controller.Create("Test") ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_tagmechanism() + { + var controller = new TagMechanismController(db); + + var result = await controller.Create("Test"); + + var getResult = await controller.Get(result); + + getResult.tag = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getResult.tag, "Edited"); + } + } +} From 3e15d725074732ebc4e9676f4a474648616b943b Mon Sep 17 00:00:00 2001 From: ecyr20 Date: Wed, 24 Apr 2024 20:59:30 -0500 Subject: [PATCH 3/4] Many Additional Tests --- .../chemistry cafe api.metadata.v7.bin | Bin 279271 -> 308422 bytes .../chemistry cafe api.projects.v7.bin | Bin 1275748 -> 1436790 bytes Program.cs | 1 + Services/PropertyTypeService.cs | 2 +- Services/PropertyVersionService.cs | 4 +- Services/TagMechanismReactionListService.cs | 4 +- Services/TagMechanismSpeciesListService.cs | 4 +- Tests/DBConnection.cs | 9 + Tests/FamilyControllerTests.cs | 7 +- Tests/FamilyTagMechListControllerTests.cs | 66 +++++ ...FamilyTagMechListVersionControllerTests.cs | 72 +++++ Tests/OpenAtmosControllerTests.cs | 34 +++ Tests/PropertyListControllerTests.cs | 63 +++++ Tests/PropertyTypeControllerTests.cs | 65 +++++ Tests/PropertyVersionControllerTests.cs | 70 +++++ Tests/ReactionControllerTests.cs | 49 ++++ Tests/SpeciesControllerTests .cs | 55 ++++ Tests/TagMechanismControllerTests.cs | 16 +- ...TagMechanismReactionListControllerTests.cs | 71 +++++ ...anismReactionListVersionControllerTests.cs | 77 ++++++ .../TagMechanismSpeciesListControllerTests.cs | 71 +++++ ...hanismSpeciesListVersionControllerTests.cs | 77 ++++++ Tests/UserControllerTests.cs | 55 ++++ Tests/UserPreferencesControllerTests.cs | 62 +++++ .../chemistry_cafe_api.dll_DBConnection.html | 181 +++++++++++++ ....dll_FamilyTagMechListControllerTests.html | 244 +++++++++++++++++ ...milyTagMechListVersionControllerTests.html | 250 +++++++++++++++++ ...cafe_api.dll_OpenAtmosControllerTests.html | 210 +++++++++++++++ ...e_api.dll_PropertyListControllerTests.html | 241 +++++++++++++++++ ...e_api.dll_PropertyTypeControllerTests.html | 243 +++++++++++++++++ ...pi.dll_PropertyVersionControllerTests.html | 248 +++++++++++++++++ ..._cafe_api.dll_ReactionControllerTests.html | 227 ++++++++++++++++ ...y_cafe_api.dll_SpeciesControllerTests.html | 233 ++++++++++++++++ ...gMechanismReactionListControllerTests.html | 249 +++++++++++++++++ ...ismReactionListVersionControllerTests.html | 255 ++++++++++++++++++ ...agMechanismSpeciesListControllerTests.html | 249 +++++++++++++++++ ...nismSpeciesListVersionControllerTests.html | 255 ++++++++++++++++++ ...stry_cafe_api.dll_UserControllerTests.html | 233 ++++++++++++++++ ...pi.dll_UserPreferencesControllerTests.html | 240 +++++++++++++++++ 39 files changed, 4478 insertions(+), 14 deletions(-) create mode 100644 Tests/DBConnection.cs create mode 100644 Tests/FamilyTagMechListControllerTests.cs create mode 100644 Tests/FamilyTagMechListVersionControllerTests.cs create mode 100644 Tests/OpenAtmosControllerTests.cs create mode 100644 Tests/PropertyListControllerTests.cs create mode 100644 Tests/PropertyTypeControllerTests.cs create mode 100644 Tests/PropertyVersionControllerTests.cs create mode 100644 Tests/ReactionControllerTests.cs create mode 100644 Tests/SpeciesControllerTests .cs create mode 100644 Tests/TagMechanismReactionListControllerTests.cs create mode 100644 Tests/TagMechanismReactionListVersionControllerTests.cs create mode 100644 Tests/TagMechanismSpeciesListControllerTests.cs create mode 100644 Tests/TagMechanismSpeciesListVersionControllerTests.cs create mode 100644 Tests/UserControllerTests.cs create mode 100644 Tests/UserPreferencesControllerTests.cs create mode 100644 coveragereport/chemistry_cafe_api.dll_DBConnection.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_OpenAtmosControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyListControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyTypeControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_PropertyVersionControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_ReactionControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_SpeciesControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserControllerTests.html create mode 100644 coveragereport/chemistry_cafe_api.dll_UserPreferencesControllerTests.html diff --git a/.vs/ProjectEvaluation/chemistry cafe api.metadata.v7.bin b/.vs/ProjectEvaluation/chemistry cafe api.metadata.v7.bin index 96aed5f4c6951fa475dd81d6ebde1ce766579914..446dc86c786c363ffd0e50de6d614c5b3e4bd8b9 100644 GIT binary patch delta 25351 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 delta 47 zcmex%BmBub--Z^(7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~7QPn#7J(MQ7NIS|DdhmT Cco13u diff --git a/Program.cs b/Program.cs index 0edad5c..371c70f 100644 --- a/Program.cs +++ b/Program.cs @@ -10,6 +10,7 @@ builder.Services.AddSwaggerGen(); //Adds SQL data source from appsettings.json file + builder.Services.AddMySqlDataSource(builder.Configuration.GetConnectionString("Default")!); diff --git a/Services/PropertyTypeService.cs b/Services/PropertyTypeService.cs index f4333e5..32d43e2 100644 --- a/Services/PropertyTypeService.cs +++ b/Services/PropertyTypeService.cs @@ -65,7 +65,7 @@ public async Task UpdatePropertyTypeAsync(PropertyType propertyType) using var connection = await database.OpenConnectionAsync(); using var command = connection.CreateCommand(); - command.CommandText = @"UPDATE PropertyType SET name = @name, units = @units, validation = @validation, isDel = @isDel, WHERE uuid = @uuid;"; + command.CommandText = @"UPDATE PropertyType SET name = @name, units = @units, validation = @validation, isDel = @isDel WHERE uuid = @uuid;"; command.Parameters.AddWithValue("@uuid", propertyType.uuid); command.Parameters.AddWithValue("@name", propertyType.name); diff --git a/Services/PropertyVersionService.cs b/Services/PropertyVersionService.cs index 7c8b7b6..5417a3b 100644 --- a/Services/PropertyVersionService.cs +++ b/Services/PropertyVersionService.cs @@ -62,14 +62,14 @@ public async Task UpdatePropertyVersionAsync(PropertyVersion propertyVersion) using var connection = await database.OpenConnectionAsync(); using var command = connection.CreateCommand(); - command.CommandText = @"UPDATE Property_Version SET family_uuid = @family_uuid, frozen_version = @frozen_version, tag_mechanism_uuid = @tag_mechanism_uuid, + command.CommandText = @"UPDATE Property_Version SET parent_property_uuid = @parent_property_uuid, frozen_version = @frozen_version, tag_mechanism_uuid = @tag_mechanism_uuid, property_type = @property_type, float_value = @float_value, double_value = @double_value, int_value = @int_value, string_value = @string_value, action = @action, user_uuid = @user_uuid, datetime = @datetime, isDel = @isDel WHERE uuid = @uuid;"; command.Parameters.AddWithValue("@uuid", propertyVersion.uuid); command.Parameters.AddWithValue("@parent_property_uuid", propertyVersion.parent_property_uuid); command.Parameters.AddWithValue("@frozen_version", propertyVersion.frozen_version); - command.Parameters.AddWithValue("@mechanism_uuid", propertyVersion.tag_mechanism_uuid); + command.Parameters.AddWithValue("@tag_mechanism_uuid", propertyVersion.tag_mechanism_uuid); command.Parameters.AddWithValue("@property_type", propertyVersion.property_type); command.Parameters.AddWithValue("@float_value", propertyVersion.float_value); command.Parameters.AddWithValue("@double_value", propertyVersion.double_value); diff --git a/Services/TagMechanismReactionListService.cs b/Services/TagMechanismReactionListService.cs index 1745fcd..a871ab8 100644 --- a/Services/TagMechanismReactionListService.cs +++ b/Services/TagMechanismReactionListService.cs @@ -84,8 +84,8 @@ private async Task> ReadAllAsync(DbDataR var mechTag = new TagMechanismReactionList { uuid = reader.GetGuid(0), - reaction_uuid = reader.GetGuid(1), - tag_mechanism_uuid = reader.GetGuid(2), + tag_mechanism_uuid = reader.GetGuid(1), + reaction_uuid = reader.GetGuid(2), version = reader.GetString(3), isDel = reader.GetBoolean(4), }; diff --git a/Services/TagMechanismSpeciesListService.cs b/Services/TagMechanismSpeciesListService.cs index 065b748..14e111a 100644 --- a/Services/TagMechanismSpeciesListService.cs +++ b/Services/TagMechanismSpeciesListService.cs @@ -84,8 +84,8 @@ private async Task> ReadAllAsync(DbDataRe var mechTag = new TagMechanismSpeciesList { uuid = reader.GetGuid(0), - species_uuid = reader.GetGuid(1), - tag_mechanism_uuid = reader.GetGuid(2), + tag_mechanism_uuid = reader.GetGuid(1), + species_uuid = reader.GetGuid(2), version = reader.GetString(3), isDel = reader.GetBoolean(4), }; diff --git a/Tests/DBConnection.cs b/Tests/DBConnection.cs new file mode 100644 index 0000000..266b680 --- /dev/null +++ b/Tests/DBConnection.cs @@ -0,0 +1,9 @@ +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + public class DBConnection + { + public static MySqlDataSource DataSource = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com;User ID=cafeadmin;Password=cafeadmin;Port=3306;Database=Testing"); + } +} diff --git a/Tests/FamilyControllerTests.cs b/Tests/FamilyControllerTests.cs index 1ea7afb..79540e7 100644 --- a/Tests/FamilyControllerTests.cs +++ b/Tests/FamilyControllerTests.cs @@ -8,12 +8,11 @@ namespace Chemistry_Cafe_API.Tests [TestClass] public class FamilyControllerTests { - readonly MySqlDataSource db = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com;User ID=cafeadmin;Password=cafeadmin;Port=3306;Database=Testing"); - + FamilyController controller = new FamilyController(DBConnection.DataSource); + [TestMethod] public async Task Get_retrieves_family() { - var controller = new FamilyController(db); var result = await controller.Get() as List; @@ -23,7 +22,6 @@ public async Task Get_retrieves_family() [TestMethod] public async Task Creates_family() { - var controller = new FamilyController(db); var result = await controller.Create("Test") ; @@ -35,7 +33,6 @@ public async Task Creates_family() [TestMethod] public async Task Updates_family() { - var controller = new FamilyController(db); var result = await controller.Create("Test"); diff --git a/Tests/FamilyTagMechListControllerTests.cs b/Tests/FamilyTagMechListControllerTests.cs new file mode 100644 index 0000000..ed470f4 --- /dev/null +++ b/Tests/FamilyTagMechListControllerTests.cs @@ -0,0 +1,66 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class FamilyTagMechListControllerTests + { + FamilyTagMechListController controller = new FamilyTagMechListController(DBConnection.DataSource); + + + [TestMethod] + public async Task Get_retrieves_familytagmechlist() + { + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_familytagmechlist() + { + var familyTagMecList = new FamilyTagMechList + { + family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"), + tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"), + version = "1.0" + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_familytagmechlist() + { + var familyTagMecList = new FamilyTagMechList + { + family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"), + tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + getResult.version = "Edited"; + + await controller.Put(getResult); + + var getEdited = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEdited.version, "Edited"); + } + } +} diff --git a/Tests/FamilyTagMechListVersionControllerTests.cs b/Tests/FamilyTagMechListVersionControllerTests.cs new file mode 100644 index 0000000..9104730 --- /dev/null +++ b/Tests/FamilyTagMechListVersionControllerTests.cs @@ -0,0 +1,72 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class FamilyTagMechListVersionControllerTests + { + FamilyTagMechListVersionController controller = new FamilyTagMechListVersionController(DBConnection.DataSource); + + + [TestMethod] + public async Task Get_retrieves_FamilyTagMechListVersion() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_FamilyTagMechListVersion() + { + var familyTagMecList = new FamilyTagMechListVersion + { + family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"), + tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"), + frozen_version = "1.0", + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_FamilyTagMechListVersion() + { + var familyTagMecList = new FamilyTagMechListVersion + { + family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"), + tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"), + frozen_version = "1.0", + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + getResult.action = "Edited"; + + await controller.Put(getResult); + + var getEdited = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEdited.action, "Edited"); + } + } +} diff --git a/Tests/OpenAtmosControllerTests.cs b/Tests/OpenAtmosControllerTests.cs new file mode 100644 index 0000000..e2c71dd --- /dev/null +++ b/Tests/OpenAtmosControllerTests.cs @@ -0,0 +1,34 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class OpenAtmosControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_JSON() + { + var controller = new OpenAtmosController(db); + + var result = await controller.GetJSON(new Guid("dc6d0d7f-94f1-40d7-a0ae-8c5c7144cc5c")); + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Get_retrieves_YAML() + { + var controller = new OpenAtmosController(db); + + var result = await controller.GetYAML(new Guid("dc6d0d7f-94f1-40d7-a0ae-8c5c7144cc5c")); + + Assert.IsNotNull(result); + } + + } +} diff --git a/Tests/PropertyListControllerTests.cs b/Tests/PropertyListControllerTests.cs new file mode 100644 index 0000000..7e87e9c --- /dev/null +++ b/Tests/PropertyListControllerTests.cs @@ -0,0 +1,63 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class PropertyListControllerTests + { + PropertyListController controller = new PropertyListController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_propertylist() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_propertylist() + { + var propertyList = new PropertyList + { + parent_uuid = new Guid("729ced40-8b18-47d6-8d1c-d17f42890871"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(propertyList); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_propertylist() + { + var propertyList = new PropertyList + { + parent_uuid = new Guid("68722c5e-4f0f-44aa-a614-64133df0f9b7"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(propertyList); + + var getResult = await controller.Get(result); + + getResult.version = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.version, "Edited"); + } + } +} diff --git a/Tests/PropertyTypeControllerTests.cs b/Tests/PropertyTypeControllerTests.cs new file mode 100644 index 0000000..bb600ef --- /dev/null +++ b/Tests/PropertyTypeControllerTests.cs @@ -0,0 +1,65 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class PropertyTypeControllerTests + { + PropertyTypeController controller = new PropertyTypeController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_propertytype() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_propertytype() + { + var propertyType = new PropertyType + { + name = "Test", + units = "mols", + validation = "yes?", + isDel = false + }; + + var result = await controller.Create(propertyType); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_propertytype() + { + var propertyType = new PropertyType + { + name = "Test", + units = "mols", + validation = "yes?", + isDel = false + }; + + var result = await controller.Create(propertyType); + + var getResult = await controller.Get(result); + + getResult.name = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.name, "Edited"); + } + } +} diff --git a/Tests/PropertyVersionControllerTests.cs b/Tests/PropertyVersionControllerTests.cs new file mode 100644 index 0000000..912f37a --- /dev/null +++ b/Tests/PropertyVersionControllerTests.cs @@ -0,0 +1,70 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class PropertyVersionControllerTests + { + PropertyVersionController controller = new PropertyVersionController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_propertyversion() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_propertyversion() + { + var propertyVersion = new PropertyVersion + { + parent_property_uuid = new Guid("343115be-8937-431d-bf65-ede6c2d815a7"), + frozen_version = "1.0", + tag_mechanism_uuid = new Guid("228c026a-c29e-4e7e-b5b8-772c82a22a40"), + property_type = new Guid("b1f0efbc-1757-4d15-a199-66cf5f73d279"), + user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"), + string_value = "Test Property" + }; + + var result = await controller.Create(propertyVersion); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_propertyversion() + { + var propertyVersion = new PropertyVersion + { + parent_property_uuid = new Guid("343115be-8937-431d-bf65-ede6c2d815a7"), + frozen_version = "1.0", + tag_mechanism_uuid = new Guid("228c026a-c29e-4e7e-b5b8-772c82a22a40"), + property_type = new Guid("b1f0efbc-1757-4d15-a199-66cf5f73d279"), + user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"), + string_value = "Test Property", + isDel = false + }; + + var result = await controller.Create(propertyVersion); + + var getResult = await controller.Get(result); + + getResult.string_value = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.string_value, "Edited"); + } + } +} diff --git a/Tests/ReactionControllerTests.cs b/Tests/ReactionControllerTests.cs new file mode 100644 index 0000000..3f8f2d1 --- /dev/null +++ b/Tests/ReactionControllerTests.cs @@ -0,0 +1,49 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class ReactionControllerTests + { + ReactionController controller = new ReactionController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_reaction() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_reaction() + { + var result = await controller.Create("Test") ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_reaction() + { + var result = await controller.Create("Test"); + + var getResult = await controller.Get(result); + + getResult.type = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.type, "Edited"); + } + } +} diff --git a/Tests/SpeciesControllerTests .cs b/Tests/SpeciesControllerTests .cs new file mode 100644 index 0000000..cdbc6b3 --- /dev/null +++ b/Tests/SpeciesControllerTests .cs @@ -0,0 +1,55 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class SpeciesControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_species() + { + var controller = new SpeciesController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_species() + { + var controller = new SpeciesController(db); + + var result = await controller.Create("Test") ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_species() + { + var controller = new SpeciesController(db); + + var result = await controller.Create("Test"); + + var getResult = await controller.Get(result); + + getResult.type = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.type, "Edited"); + } + } +} diff --git a/Tests/TagMechanismControllerTests.cs b/Tests/TagMechanismControllerTests.cs index fb2e791..92ad998 100644 --- a/Tests/TagMechanismControllerTests.cs +++ b/Tests/TagMechanismControllerTests.cs @@ -8,7 +8,7 @@ namespace Chemistry_Cafe_API.Tests [TestClass] public class TagMechanismControllerTests { - readonly MySqlDataSource db = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.amazonaws.com;User ID=cafeadmin;Password=cafeadmin;Port=3306;Database=Testing"); + readonly MySqlDataSource db = DBConnection.DataSource; [TestMethod] public async Task Get_retrieves_tagmechanism() @@ -20,6 +20,18 @@ public async Task Get_retrieves_tagmechanism() Assert.IsNotNull(result); } + [TestMethod] + public async Task Get_retrieves_tagmechanism_family() + { + var controller = new TagMechanismController(db); + + var guid = new Guid("06b7c16f-eb1a-49ef-8798-16fe03fc67ae"); + + var result = await controller.GetTags(guid) as List; + + Assert.IsNotNull(result); + } + [TestMethod] public async Task Creates_tagmechanism() { @@ -49,7 +61,7 @@ public async Task Updates_tagmechanism() await controller.Delete(result); - Assert.AreEqual(getResult.tag, "Edited"); + Assert.AreEqual(getEditedResult.tag, "Edited"); } } } diff --git a/Tests/TagMechanismReactionListControllerTests.cs b/Tests/TagMechanismReactionListControllerTests.cs new file mode 100644 index 0000000..7a94aaa --- /dev/null +++ b/Tests/TagMechanismReactionListControllerTests.cs @@ -0,0 +1,71 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class TagMechanismReactionListControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_tagmechanismreactionlist() + { + var controller = new TagMechanismReactionListController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_tagmechanismreactionlist() + { + var controller = new TagMechanismReactionListController(db); + + var tagMechanismReactionList = new TagMechanismReactionList + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(tagMechanismReactionList) ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_tagmechanismreactionlist() + { + var controller = new TagMechanismReactionListController(db); + + var tagMechanismReactionList = new TagMechanismReactionList + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(tagMechanismReactionList); + + var getResult = await controller.Get(result); + + getResult.version = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.version, "Edited"); + } + } +} diff --git a/Tests/TagMechanismReactionListVersionControllerTests.cs b/Tests/TagMechanismReactionListVersionControllerTests.cs new file mode 100644 index 0000000..8955293 --- /dev/null +++ b/Tests/TagMechanismReactionListVersionControllerTests.cs @@ -0,0 +1,77 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class TagMechanismReactionListVersionControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_TagMechanismReactionListVersion() + { + var controller = new TagMechanismReactionListVersionController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_TagMechanismReactionListVersion() + { + var controller = new TagMechanismReactionListVersionController(db); + + var familyTagMecList = new TagMechanismReactionListVersion + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"), + frozen_version = "1.0", + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_TagMechanismReactionListVersion() + { + var controller = new TagMechanismReactionListVersionController(db); + + var familyTagMecList = new TagMechanismReactionListVersion + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"), + frozen_version = "1.0", + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + getResult.action = "Edited"; + + await controller.Put(getResult); + + var getEdited = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEdited.action, "Edited"); + } + } +} diff --git a/Tests/TagMechanismSpeciesListControllerTests.cs b/Tests/TagMechanismSpeciesListControllerTests.cs new file mode 100644 index 0000000..49324b3 --- /dev/null +++ b/Tests/TagMechanismSpeciesListControllerTests.cs @@ -0,0 +1,71 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class TagMechanismSpeciesListControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_tagmechanismspecieslist() + { + var controller = new TagMechanismSpeciesListController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_tagmechanismspecieslist() + { + var controller = new TagMechanismSpeciesListController(db); + + var tagMechanismSpeciesList = new TagMechanismSpeciesList + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(tagMechanismSpeciesList) ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_tagmechanismspecieslist() + { + var controller = new TagMechanismSpeciesListController(db); + + var tagMechanismSpeciesList = new TagMechanismSpeciesList + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"), + version = "1.0", + isDel = false + }; + + var result = await controller.Create(tagMechanismSpeciesList); + + var getResult = await controller.Get(result); + + getResult.version = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.version, "Edited"); + } + } +} diff --git a/Tests/TagMechanismSpeciesListVersionControllerTests.cs b/Tests/TagMechanismSpeciesListVersionControllerTests.cs new file mode 100644 index 0000000..714f624 --- /dev/null +++ b/Tests/TagMechanismSpeciesListVersionControllerTests.cs @@ -0,0 +1,77 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class TagMechanismSpeciesListVersionControllerTests + { + TagMechanismSpeciesListVersionController controller = new TagMechanismSpeciesListVersionController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_TagMechanismSpeciesListVersion() + { + + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_TagMechanismSpeciesListVersion() + { + + + var familyTagMecList = new TagMechanismSpeciesListVersion + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"), + frozen_uuid = Guid.NewGuid(), + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_TagMechanismSpeciesListVersion() + { + + + var familyTagMecList = new TagMechanismSpeciesListVersion + { + tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"), + species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"), + frozen_uuid = Guid.NewGuid(), + user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"), + action = "test", + datetime = DateTime.Now, + isDel = false + }; + + var result = await controller.Create(familyTagMecList); + + var getResult = await controller.Get(result); + + getResult.action = "Edited"; + + await controller.Put(getResult); + + var getEdited = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEdited.action, "Edited"); + } + } +} diff --git a/Tests/UserControllerTests.cs b/Tests/UserControllerTests.cs new file mode 100644 index 0000000..9ef34d6 --- /dev/null +++ b/Tests/UserControllerTests.cs @@ -0,0 +1,55 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class UserControllerTests + { + readonly MySqlDataSource db = DBConnection.DataSource; + + [TestMethod] + public async Task Get_retrieves_user() + { + var controller = new UserController(db); + + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_user() + { + var controller = new UserController(db); + + var result = await controller.Create("Test") ; + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_user() + { + var controller = new UserController(db); + + var result = await controller.Create("Test"); + + var getResult = await controller.Get(result); + + getResult.log_in_info = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.log_in_info, "Edited"); + } + } +} diff --git a/Tests/UserPreferencesControllerTests.cs b/Tests/UserPreferencesControllerTests.cs new file mode 100644 index 0000000..d44128d --- /dev/null +++ b/Tests/UserPreferencesControllerTests.cs @@ -0,0 +1,62 @@ +using Chemistry_Cafe_API.Controllers; +using Chemistry_Cafe_API.Models; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +namespace Chemistry_Cafe_API.Tests +{ + [TestClass] + public class UserPreferencesControllerTests + { + UserPreferencesController controller = new UserPreferencesController(DBConnection.DataSource); + + [TestMethod] + public async Task Get_retrieves_userpreferences() + { + var result = await controller.Get() as List; + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task Creates_userpreferences() + { + var userPreferences = new UserPreferences + { + user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"), + preferences = "New Preference", + isDel = false + }; + + var result = await controller.Create(userPreferences); + + var getResult = await controller.Get(result); + + Assert.AreEqual(result, getResult.uuid); + } + + [TestMethod] + public async Task Updates_userpreferences() + { + var userPreferences = new UserPreferences + { + user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"), + preferences = "New Preference" + }; + + var result = await controller.Create(userPreferences); + + var getResult = await controller.Get(result); + + getResult.preferences = "Edited"; + + await controller.Put(getResult); + + var getEditedResult = await controller.Get(result); + + await controller.Delete(result); + + Assert.AreEqual(getEditedResult.preferences, "Edited"); + } + } +} diff --git a/coveragereport/chemistry_cafe_api.dll_DBConnection.html b/coveragereport/chemistry_cafe_api.dll_DBConnection.html new file mode 100644 index 0000000..2368615 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_DBConnection.html @@ -0,0 +1,181 @@ + + + + + + + +Chemistry_Cafe_API.Tests.DBConnection - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.DBConnection
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\DBConnection.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:1
Uncovered lines:0
Coverable lines:1
Total lines:9
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + +
MethodBlocks covered Blocks not covered
DBConnection()20
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\DBConnection.cs

+
+ + + + + + + + + + + + + +
#LineLine coverage
 1using MySqlConnector;
 2
 3namespace Chemistry_Cafe_API.Tests
 4{
 5    public class DBConnection
 6    {
 17        public static MySqlDataSource DataSource = new MySqlDataSource("Server=chemisty-cafe.cl8uuceq2rud.us-east-1.rds.
 8    }
 9}
+
+
+
+
+

Methods/Properties

+DBConnection()
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListControllerTests.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListControllerTests.html new file mode 100644 index 0000000..89f3c35 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListControllerTests.html @@ -0,0 +1,244 @@ + + + + + + + +Chemistry_Cafe_API.Tests.FamilyTagMechListControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.FamilyTagMechListControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyTagMechListControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:32
Uncovered lines:0
Coverable lines:32
Total lines:66
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyTagMechListControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class FamilyTagMechListControllerTests
 10    {
 111        FamilyTagMechListController controller = new FamilyTagMechListController(DBConnection.DataSource);
 12
 13
 14        [TestMethod]
 15        public async Task Get_retrieves_familytagmechlist()
 116        {
 17
 118            var result = await controller.Get() as List<FamilyTagMechList>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_familytagmechlist()
 125        {
 126            var familyTagMecList = new FamilyTagMechList
 127            {
 128                family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"),
 129                tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"),
 130                version = "1.0"
 131            };
 32
 133            var result = await controller.Create(familyTagMecList);
 34
 135            var getResult = await controller.Get(result);
 36
 137            Assert.AreEqual(result, getResult.uuid);
 138        }
 39
 40        [TestMethod]
 41        public async Task Updates_familytagmechlist()
 142        {
 143            var familyTagMecList = new FamilyTagMechList
 144            {
 145                family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"),
 146                tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"),
 147                version = "1.0",
 148                isDel = false
 149            };
 50
 151            var result = await controller.Create(familyTagMecList);
 52
 153            var getResult = await controller.Get(result);
 54
 155            getResult.version = "Edited";
 56
 157            await controller.Put(getResult);
 58
 159            var getEdited = await controller.Get(result);
 60
 161            await controller.Delete(result);
 62
 163            Assert.AreEqual(getEdited.version, "Edited");
 164        }
 65    }
 66}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionControllerTests.html b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionControllerTests.html new file mode 100644 index 0000000..d51fd95 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_FamilyTagMechListVersionControllerTests.html @@ -0,0 +1,250 @@ + + + + + + + +Chemistry_Cafe_API.Tests.FamilyTagMechListVersionControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.FamilyTagMechListVersionControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyTagMechListVersionControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:39
Uncovered lines:0
Coverable lines:39
Total lines:72
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\FamilyTagMechListVersionControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class FamilyTagMechListVersionControllerTests
 10    {
 111        FamilyTagMechListVersionController controller = new FamilyTagMechListVersionController(DBConnection.DataSource);
 12
 13
 14        [TestMethod]
 15        public async Task Get_retrieves_FamilyTagMechListVersion()
 116        {
 117            var result = await controller.Get() as List<FamilyTagMechListVersion>;
 18
 119            Assert.IsNotNull(result);
 120        }
 21
 22        [TestMethod]
 23        public async Task Creates_FamilyTagMechListVersion()
 124        {
 125            var familyTagMecList = new FamilyTagMechListVersion
 126            {
 127                family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"),
 128                tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"),
 129                frozen_version = "1.0",
 130                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 131                action = "test",
 132                datetime = DateTime.Now,
 133                isDel = false
 134            };
 35
 136            var result = await controller.Create(familyTagMecList);
 37
 138            var getResult = await controller.Get(result);
 39
 140            Assert.AreEqual(result, getResult.uuid);
 141        }
 42
 43        [TestMethod]
 44        public async Task Updates_FamilyTagMechListVersion()
 145        {
 146            var familyTagMecList = new FamilyTagMechListVersion
 147            {
 148                family_uuid = new Guid("085fd412-376d-4a89-ad43-18047058b635"),
 149                tag_mechanism_uuid = new Guid("1da51091-b9e8-42c7-911b-8e9f0d274f56"),
 150                frozen_version = "1.0",
 151                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 152                action = "test",
 153                datetime = DateTime.Now,
 154                isDel = false
 155            };
 56
 157            var result = await controller.Create(familyTagMecList);
 58
 159            var getResult = await controller.Get(result);
 60
 161            getResult.action = "Edited";
 62
 163            await controller.Put(getResult);
 64
 165            var getEdited = await controller.Get(result);
 66
 167            await controller.Delete(result);
 68
 169            Assert.AreEqual(getEdited.action, "Edited");
 170        }
 71    }
 72}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_OpenAtmosControllerTests.html b/coveragereport/chemistry_cafe_api.dll_OpenAtmosControllerTests.html new file mode 100644 index 0000000..0bcf396 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_OpenAtmosControllerTests.html @@ -0,0 +1,210 @@ + + + + + + + +Chemistry_Cafe_API.Tests.OpenAtmosControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.OpenAtmosControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\OpenAtmosControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:11
Uncovered lines:0
Coverable lines:11
Total lines:34
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + +
MethodBlocks covered Blocks not covered
OpenAtmosControllerTests()20
Get_retrieves_JSON()192
Get_retrieves_YAML()192
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\OpenAtmosControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class OpenAtmosControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_JSON()
 115        {
 116            var controller = new OpenAtmosController(db);
 17
 118            var result = await controller.GetJSON(new Guid("dc6d0d7f-94f1-40d7-a0ae-8c5c7144cc5c"));
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Get_retrieves_YAML()
 125        {
 126            var controller = new OpenAtmosController(db);
 27
 128            var result = await controller.GetYAML(new Guid("dc6d0d7f-94f1-40d7-a0ae-8c5c7144cc5c"));
 29
 130            Assert.IsNotNull(result);
 131        }
 32
 33    }
 34}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyListControllerTests.html b/coveragereport/chemistry_cafe_api.dll_PropertyListControllerTests.html new file mode 100644 index 0000000..2889b0a --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyListControllerTests.html @@ -0,0 +1,241 @@ + + + + + + + +Chemistry_Cafe_API.Tests.PropertyListControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.PropertyListControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyListControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:31
Uncovered lines:0
Coverable lines:31
Total lines:63
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyListControllerTests()30
Get_retrieves_propertylist()172
Creates_propertylist()342
Updates_propertylist()602
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyListControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class PropertyListControllerTests
 10    {
 111        PropertyListController controller = new PropertyListController(DBConnection.DataSource);
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_propertylist()
 115        {
 116            var result = await controller.Get() as List<PropertyList>;
 17
 118            Assert.IsNotNull(result);
 119        }
 20
 21        [TestMethod]
 22        public async Task Creates_propertylist()
 123        {
 124            var propertyList = new PropertyList
 125            {
 126                parent_uuid = new Guid("729ced40-8b18-47d6-8d1c-d17f42890871"),
 127                version = "1.0",
 128                isDel = false
 129            };
 30
 131            var result = await controller.Create(propertyList);
 32
 133            var getResult = await controller.Get(result);
 34
 135            Assert.AreEqual(result, getResult.uuid);
 136        }
 37
 38        [TestMethod]
 39        public async Task Updates_propertylist()
 140        {
 141            var propertyList = new PropertyList
 142            {
 143                parent_uuid = new Guid("68722c5e-4f0f-44aa-a614-64133df0f9b7"),
 144                version = "1.0",
 145                isDel = false
 146            };
 47
 148            var result = await controller.Create(propertyList);
 49
 150            var getResult = await controller.Get(result);
 51
 152            getResult.version = "Edited";
 53
 154            await controller.Put(getResult);
 55
 156            var getEditedResult = await controller.Get(result);
 57
 158            await controller.Delete(result);
 59
 160            Assert.AreEqual(getEditedResult.version, "Edited");
 161        }
 62    }
 63}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyTypeControllerTests.html b/coveragereport/chemistry_cafe_api.dll_PropertyTypeControllerTests.html new file mode 100644 index 0000000..6cb69d0 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyTypeControllerTests.html @@ -0,0 +1,243 @@ + + + + + + + +Chemistry_Cafe_API.Tests.PropertyTypeControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.PropertyTypeControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyTypeControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:33
Uncovered lines:0
Coverable lines:33
Total lines:65
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyTypeControllerTests()30
Get_retrieves_propertytype()172
Creates_propertytype()342
Updates_propertytype()602
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyTypeControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class PropertyTypeControllerTests
 10    {
 111        PropertyTypeController controller = new PropertyTypeController(DBConnection.DataSource);
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_propertytype()
 115        {
 116            var result = await controller.Get() as List<PropertyType>;
 17
 118            Assert.IsNotNull(result);
 119        }
 20
 21        [TestMethod]
 22        public async Task Creates_propertytype()
 123        {
 124            var propertyType = new PropertyType
 125            {
 126                name = "Test",
 127                units = "mols",
 128                validation = "yes?",
 129                isDel = false
 130            };
 31
 132            var result = await controller.Create(propertyType);
 33
 134            var getResult = await controller.Get(result);
 35
 136            Assert.AreEqual(result, getResult.uuid);
 137        }
 38
 39        [TestMethod]
 40        public async Task Updates_propertytype()
 141        {
 142            var propertyType = new PropertyType
 143            {
 144                name = "Test",
 145                units = "mols",
 146                validation = "yes?",
 147                isDel = false
 148            };
 49
 150            var result = await controller.Create(propertyType);
 51
 152            var getResult = await controller.Get(result);
 53
 154            getResult.name = "Edited";
 55
 156            await controller.Put(getResult);
 57
 158            var getEditedResult = await controller.Get(result);
 59
 160            await controller.Delete(result);
 61
 162            Assert.AreEqual(getEditedResult.name, "Edited");
 163        }
 64    }
 65}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_PropertyVersionControllerTests.html b/coveragereport/chemistry_cafe_api.dll_PropertyVersionControllerTests.html new file mode 100644 index 0000000..4233633 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_PropertyVersionControllerTests.html @@ -0,0 +1,248 @@ + + + + + + + +Chemistry_Cafe_API.Tests.PropertyVersionControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.PropertyVersionControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyVersionControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:38
Uncovered lines:0
Coverable lines:38
Total lines:70
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
PropertyVersionControllerTests()30
Get_retrieves_propertyversion()172
Creates_propertyversion()402
Updates_propertyversion()672
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\PropertyVersionControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class PropertyVersionControllerTests
 10    {
 111        PropertyVersionController controller = new PropertyVersionController(DBConnection.DataSource);
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_propertyversion()
 115        {
 116            var result = await controller.Get() as List<PropertyVersion>;
 17
 118            Assert.IsNotNull(result);
 119        }
 20
 21        [TestMethod]
 22        public async Task Creates_propertyversion()
 123        {
 124            var propertyVersion = new PropertyVersion
 125            {
 126                parent_property_uuid = new Guid("343115be-8937-431d-bf65-ede6c2d815a7"),
 127                frozen_version = "1.0",
 128                tag_mechanism_uuid = new Guid("228c026a-c29e-4e7e-b5b8-772c82a22a40"),
 129                property_type = new Guid("b1f0efbc-1757-4d15-a199-66cf5f73d279"),
 130                user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"),
 131                string_value = "Test Property"
 132            };
 33
 134            var result = await controller.Create(propertyVersion);
 35
 136            var getResult = await controller.Get(result);
 37
 138            Assert.AreEqual(result, getResult.uuid);
 139        }
 40
 41        [TestMethod]
 42        public async Task Updates_propertyversion()
 143        {
 144            var propertyVersion = new PropertyVersion
 145            {
 146                parent_property_uuid = new Guid("343115be-8937-431d-bf65-ede6c2d815a7"),
 147                frozen_version = "1.0",
 148                tag_mechanism_uuid = new Guid("228c026a-c29e-4e7e-b5b8-772c82a22a40"),
 149                property_type = new Guid("b1f0efbc-1757-4d15-a199-66cf5f73d279"),
 150                user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"),
 151                string_value = "Test Property",
 152                isDel = false
 153            };
 54
 155            var result = await controller.Create(propertyVersion);
 56
 157            var getResult = await controller.Get(result);
 58
 159            getResult.string_value = "Edited";
 60
 161            await controller.Put(getResult);
 62
 163            var getEditedResult = await controller.Get(result);
 64
 165            await controller.Delete(result);
 66
 167            Assert.AreEqual(getEditedResult.string_value, "Edited");
 168        }
 69    }
 70}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_ReactionControllerTests.html b/coveragereport/chemistry_cafe_api.dll_ReactionControllerTests.html new file mode 100644 index 0000000..af73c6b --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_ReactionControllerTests.html @@ -0,0 +1,227 @@ + + + + + + + +Chemistry_Cafe_API.Tests.ReactionControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.ReactionControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\ReactionControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:19
Uncovered lines:0
Coverable lines:19
Total lines:49
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
ReactionControllerTests()30
Get_retrieves_reaction()172
Creates_reaction()292
Updates_reaction()552
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\ReactionControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class ReactionControllerTests
 10    {
 111        ReactionController controller = new ReactionController(DBConnection.DataSource);
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_reaction()
 115        {
 116            var result = await controller.Get() as List<Reaction>;
 17
 118            Assert.IsNotNull(result);
 119        }
 20
 21        [TestMethod]
 22        public async Task Creates_reaction()
 123        {
 124            var result = await controller.Create("Test") ;
 25
 126            var getResult = await controller.Get(result);
 27
 128            Assert.AreEqual(result, getResult.uuid);
 129        }
 30
 31        [TestMethod]
 32        public async Task Updates_reaction()
 133        {
 134            var result = await controller.Create("Test");
 35
 136            var getResult = await controller.Get(result);
 37
 138            getResult.type = "Edited";
 39
 140            await controller.Put(getResult);
 41
 142            var getEditedResult = await controller.Get(result);
 43
 144            await controller.Delete(result);
 45
 146            Assert.AreEqual(getEditedResult.type, "Edited");
 147        }
 48    }
 49}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_SpeciesControllerTests.html b/coveragereport/chemistry_cafe_api.dll_SpeciesControllerTests.html new file mode 100644 index 0000000..ac91b37 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_SpeciesControllerTests.html @@ -0,0 +1,233 @@ + + + + + + + +Chemistry_Cafe_API.Tests.SpeciesControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.SpeciesControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\SpeciesControllerTests .cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:22
Uncovered lines:0
Coverable lines:22
Total lines:55
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
SpeciesControllerTests()20
Get_retrieves_species()182
Creates_species()302
Updates_species()562
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\SpeciesControllerTests .cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class SpeciesControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_species()
 115        {
 116            var controller = new SpeciesController(db);
 17
 118            var result = await controller.Get() as List<Species>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_species()
 125        {
 126            var controller = new SpeciesController(db);
 27
 128            var result = await controller.Create("Test") ;
 29
 130            var getResult = await controller.Get(result);
 31
 132            Assert.AreEqual(result, getResult.uuid);
 133        }
 34
 35        [TestMethod]
 36        public async Task Updates_species()
 137        {
 138            var controller = new SpeciesController(db);
 39
 140            var result = await controller.Create("Test");
 41
 142            var getResult = await controller.Get(result);
 43
 144            getResult.type = "Edited";
 45
 146            await controller.Put(getResult);
 47
 148            var getEditedResult = await controller.Get(result);
 49
 150            await controller.Delete(result);
 51
 152            Assert.AreEqual(getEditedResult.type, "Edited");
 153        }
 54    }
 55}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListControllerTests.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListControllerTests.html new file mode 100644 index 0000000..ec77621 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListControllerTests.html @@ -0,0 +1,249 @@ + + + + + + + +Chemistry_Cafe_API.Tests.TagMechanismReactionListControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.TagMechanismReactionListControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismReactionListControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:36
Uncovered lines:0
Coverable lines:36
Total lines:71
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismReactionListControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class TagMechanismReactionListControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_tagmechanismreactionlist()
 115        {
 116            var controller = new TagMechanismReactionListController(db);
 17
 118            var result = await controller.Get() as List<TagMechanismReactionList>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_tagmechanismreactionlist()
 125        {
 126            var controller = new TagMechanismReactionListController(db);
 27
 128            var tagMechanismReactionList = new TagMechanismReactionList
 129            {
 130                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 131                reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"),
 132                version = "1.0",
 133                isDel = false
 134            };
 35
 136            var result = await controller.Create(tagMechanismReactionList) ;
 37
 138            var getResult = await controller.Get(result);
 39
 140            Assert.AreEqual(result, getResult.uuid);
 141        }
 42
 43        [TestMethod]
 44        public async Task Updates_tagmechanismreactionlist()
 145        {
 146            var controller = new TagMechanismReactionListController(db);
 47
 148            var tagMechanismReactionList = new TagMechanismReactionList
 149            {
 150                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 151                reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"),
 152                version = "1.0",
 153                isDel = false
 154            };
 55
 156            var result = await controller.Create(tagMechanismReactionList);
 57
 158            var getResult = await controller.Get(result);
 59
 160            getResult.version = "Edited";
 61
 162            await controller.Put(getResult);
 63
 164            var getEditedResult = await controller.Get(result);
 65
 166            await controller.Delete(result);
 67
 168            Assert.AreEqual(getEditedResult.version, "Edited");
 169        }
 70    }
 71}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionControllerTests.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionControllerTests.html new file mode 100644 index 0000000..f75b1db --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionListVersionControllerTests.html @@ -0,0 +1,255 @@ + + + + + + + +Chemistry_Cafe_API.Tests.TagMechanismReactionListVersionControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.TagMechanismReactionListVersionControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismReactionListVersionControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:42
Uncovered lines:0
Coverable lines:42
Total lines:77
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismReactionListVersionControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class TagMechanismReactionListVersionControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_TagMechanismReactionListVersion()
 115        {
 116            var controller = new TagMechanismReactionListVersionController(db);
 17
 118            var result = await controller.Get() as List<TagMechanismReactionListVersion>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_TagMechanismReactionListVersion()
 125        {
 126            var controller = new TagMechanismReactionListVersionController(db);
 27
 128            var familyTagMecList = new TagMechanismReactionListVersion
 129            {
 130                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 131                reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"),
 132                frozen_version = "1.0",
 133                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 134                action = "test",
 135                datetime = DateTime.Now,
 136                isDel = false
 137            };
 38
 139            var result = await controller.Create(familyTagMecList);
 40
 141            var getResult = await controller.Get(result);
 42
 143            Assert.AreEqual(result, getResult.uuid);
 144        }
 45
 46        [TestMethod]
 47        public async Task Updates_TagMechanismReactionListVersion()
 148        {
 149            var controller = new TagMechanismReactionListVersionController(db);
 50
 151            var familyTagMecList = new TagMechanismReactionListVersion
 152            {
 153                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 154                reaction_uuid = new Guid("367f4b94-14f5-404e-86ee-1d5f799edcd7"),
 155                frozen_version = "1.0",
 156                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 157                action = "test",
 158                datetime = DateTime.Now,
 159                isDel = false
 160            };
 61
 162            var result = await controller.Create(familyTagMecList);
 63
 164            var getResult = await controller.Get(result);
 65
 166            getResult.action = "Edited";
 67
 168            await controller.Put(getResult);
 69
 170            var getEdited = await controller.Get(result);
 71
 172            await controller.Delete(result);
 73
 174            Assert.AreEqual(getEdited.action, "Edited");
 175        }
 76    }
 77}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListControllerTests.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListControllerTests.html new file mode 100644 index 0000000..f48090e --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListControllerTests.html @@ -0,0 +1,249 @@ + + + + + + + +Chemistry_Cafe_API.Tests.TagMechanismSpeciesListControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.TagMechanismSpeciesListControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismSpeciesListControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:36
Uncovered lines:0
Coverable lines:36
Total lines:71
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismSpeciesListControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class TagMechanismSpeciesListControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_tagmechanismspecieslist()
 115        {
 116            var controller = new TagMechanismSpeciesListController(db);
 17
 118            var result = await controller.Get() as List<TagMechanismSpeciesList>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_tagmechanismspecieslist()
 125        {
 126            var controller = new TagMechanismSpeciesListController(db);
 27
 128            var tagMechanismSpeciesList = new TagMechanismSpeciesList
 129            {
 130                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 131                species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"),
 132                version = "1.0",
 133                isDel = false
 134            };
 35
 136            var result = await controller.Create(tagMechanismSpeciesList) ;
 37
 138            var getResult = await controller.Get(result);
 39
 140            Assert.AreEqual(result, getResult.uuid);
 141        }
 42
 43        [TestMethod]
 44        public async Task Updates_tagmechanismspecieslist()
 145        {
 146            var controller = new TagMechanismSpeciesListController(db);
 47
 148            var tagMechanismSpeciesList = new TagMechanismSpeciesList
 149            {
 150                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 151                species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"),
 152                version = "1.0",
 153                isDel = false
 154            };
 55
 156            var result = await controller.Create(tagMechanismSpeciesList);
 57
 158            var getResult = await controller.Get(result);
 59
 160            getResult.version = "Edited";
 61
 162            await controller.Put(getResult);
 63
 164            var getEditedResult = await controller.Get(result);
 65
 166            await controller.Delete(result);
 67
 168            Assert.AreEqual(getEditedResult.version, "Edited");
 169        }
 70    }
 71}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionControllerTests.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionControllerTests.html new file mode 100644 index 0000000..52c45b2 --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismSpeciesListVersionControllerTests.html @@ -0,0 +1,255 @@ + + + + + + + +Chemistry_Cafe_API.Tests.TagMechanismSpeciesListVersionControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.TagMechanismSpeciesListVersionControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismSpeciesListVersionControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:39
Uncovered lines:0
Coverable lines:39
Total lines:77
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+ +

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\TagMechanismSpeciesListVersionControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class TagMechanismSpeciesListVersionControllerTests
 10    {
 111        TagMechanismSpeciesListVersionController controller = new TagMechanismSpeciesListVersionController(DBConnection.
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_TagMechanismSpeciesListVersion()
 115        {
 16
 17
 118            var result = await controller.Get() as List<TagMechanismSpeciesListVersion>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_TagMechanismSpeciesListVersion()
 125        {
 26
 27
 128            var familyTagMecList = new TagMechanismSpeciesListVersion
 129            {
 130                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 131                species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"),
 132                frozen_uuid = Guid.NewGuid(),
 133                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 134                action = "test",
 135                datetime = DateTime.Now,
 136                isDel = false
 137            };
 38
 139            var result = await controller.Create(familyTagMecList);
 40
 141            var getResult = await controller.Get(result);
 42
 143            Assert.AreEqual(result, getResult.uuid);
 144        }
 45
 46        [TestMethod]
 47        public async Task Updates_TagMechanismSpeciesListVersion()
 148        {
 49
 50
 151            var familyTagMecList = new TagMechanismSpeciesListVersion
 152            {
 153                tag_mechanism_uuid = new Guid("02114e61-a4a6-48c0-9f99-3de4d20ab750"),
 154                species_uuid = new Guid("739289cd-1396-41f8-a3e5-415f6b1ccd07"),
 155                frozen_uuid = Guid.NewGuid(),
 156                user_uuid = new Guid("04c5db32-65e1-44ba-8b29-1cbfd5383789"),
 157                action = "test",
 158                datetime = DateTime.Now,
 159                isDel = false
 160            };
 61
 162            var result = await controller.Create(familyTagMecList);
 63
 164            var getResult = await controller.Get(result);
 65
 166            getResult.action = "Edited";
 67
 168            await controller.Put(getResult);
 69
 170            var getEdited = await controller.Get(result);
 71
 172            await controller.Delete(result);
 73
 174            Assert.AreEqual(getEdited.action, "Edited");
 175        }
 76    }
 77}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserControllerTests.html b/coveragereport/chemistry_cafe_api.dll_UserControllerTests.html new file mode 100644 index 0000000..933479b --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserControllerTests.html @@ -0,0 +1,233 @@ + + + + + + + +Chemistry_Cafe_API.Tests.UserControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.UserControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\UserControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:22
Uncovered lines:0
Coverable lines:22
Total lines:55
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
UserControllerTests()20
Get_retrieves_user()182
Creates_user()302
Updates_user()562
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\UserControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class UserControllerTests
 10    {
 111        readonly MySqlDataSource db = DBConnection.DataSource;
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_user()
 115        {
 116            var controller = new UserController(db);
 17
 118            var result = await controller.Get() as List<User>;
 19
 120            Assert.IsNotNull(result);
 121        }
 22
 23        [TestMethod]
 24        public async Task Creates_user()
 125        {
 126            var controller = new UserController(db);
 27
 128            var result = await controller.Create("Test") ;
 29
 130            var getResult = await controller.Get(result);
 31
 132            Assert.AreEqual(result, getResult.uuid);
 133        }
 34
 35        [TestMethod]
 36        public async Task Updates_user()
 137        {
 138            var controller = new UserController(db);
 39
 140            var result = await controller.Create("Test");
 41
 142            var getResult = await controller.Get(result);
 43
 144            getResult.log_in_info = "Edited";
 45
 146            await controller.Put(getResult);
 47
 148            var getEditedResult = await controller.Get(result);
 49
 150            await controller.Delete(result);
 51
 152            Assert.AreEqual(getEditedResult.log_in_info, "Edited");
 153        }
 54    }
 55}
+
+
+
+ + \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_UserPreferencesControllerTests.html b/coveragereport/chemistry_cafe_api.dll_UserPreferencesControllerTests.html new file mode 100644 index 0000000..2d54e2a --- /dev/null +++ b/coveragereport/chemistry_cafe_api.dll_UserPreferencesControllerTests.html @@ -0,0 +1,240 @@ + + + + + + + +Chemistry_Cafe_API.Tests.UserPreferencesControllerTests - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:Chemistry_Cafe_API.Tests.UserPreferencesControllerTests
Assembly:chemistry cafe api.dll
File(s):C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\UserPreferencesControllerTests.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:30
Uncovered lines:0
Coverable lines:30
Total lines:62
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++ + + + + + + + +
MethodBlocks covered Blocks not covered
UserPreferencesControllerTests()30
Get_retrieves_userpreferences()172
Creates_userpreferences()342
Updates_userpreferences()592
+
+

File(s)

+

C:\Users\Evan\Documents\GitHub\chemistry-cafe-api\Tests\UserPreferencesControllerTests.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Chemistry_Cafe_API.Controllers;
 2using Chemistry_Cafe_API.Models;
 3using Microsoft.VisualStudio.TestTools.UnitTesting;
 4using MySqlConnector;
 5
 6namespace Chemistry_Cafe_API.Tests
 7{
 8    [TestClass]
 9    public class UserPreferencesControllerTests
 10    {
 111        UserPreferencesController controller = new UserPreferencesController(DBConnection.DataSource);
 12
 13        [TestMethod]
 14        public async Task Get_retrieves_userpreferences()
 115        {
 116            var result = await controller.Get() as List<UserPreferences>;
 17
 118            Assert.IsNotNull(result);
 119        }
 20
 21        [TestMethod]
 22        public async Task Creates_userpreferences()
 123        {
 124            var userPreferences = new UserPreferences
 125            {
 126                user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"),
 127                preferences = "New Preference",
 128                isDel = false
 129            };
 30
 131            var result = await controller.Create(userPreferences);
 32
 133            var getResult = await controller.Get(result);
 34
 135            Assert.AreEqual(result, getResult.uuid);
 136        }
 37
 38        [TestMethod]
 39        public async Task Updates_userpreferences()
 140        {
 141            var userPreferences = new UserPreferences
 142            {
 143                user_uuid = new Guid("070465a1-5f3e-42eb-9373-fed864a75cf5"),
 144                preferences = "New Preference"
 145            };
 46
 147            var result = await controller.Create(userPreferences);
 48
 149            var getResult = await controller.Get(result);
 50
 151            getResult.preferences = "Edited";
 52
 153            await controller.Put(getResult);
 54
 155            var getEditedResult = await controller.Get(result);
 56
 157            await controller.Delete(result);
 58
 159            Assert.AreEqual(getEditedResult.preferences, "Edited");
 160        }
 61    }
 62}
+
+
+
+ + \ No newline at end of file From fc5cccfcea1908f8592acbdcf1f8f3465fcf1a7b Mon Sep 17 00:00:00 2001 From: ecyr20 Date: Thu, 25 Apr 2024 08:28:29 -0500 Subject: [PATCH 4/4] Final coverage report --- ...afe_api.dll_DeleteReactantProductList.html | 2 +- .../chemistry_cafe_api.dll_Family.html | 34 +- ...emistry_cafe_api.dll_FamilyController.html | 50 +-- ...ry_cafe_api.dll_FamilyControllerTests.html | 61 ++- .../chemistry_cafe_api.dll_FamilyService.html | 140 +++--- ...mistry_cafe_api.dll_FamilyTagMechList.html | 40 +- ...e_api.dll_FamilyTagMechListController.html | 72 +-- ...cafe_api.dll_FamilyTagMechListService.html | 166 +++---- ...cafe_api.dll_FamilyTagMechListVersion.html | 58 +-- ...ll_FamilyTagMechListVersionController.html | 72 +-- ...i.dll_FamilyTagMechListVersionService.html | 184 ++++---- ...stry_cafe_api.dll_OpenAtmosController.html | 42 +- ...emistry_cafe_api.dll_OpenAtmosService.html | 410 +++++++++--------- .../chemistry_cafe_api.dll_Program.html | 57 +-- .../chemistry_cafe_api.dll_Property.html | 136 +++--- .../chemistry_cafe_api.dll_PropertyList.html | 34 +- ...y_cafe_api.dll_PropertyListController.html | 72 +-- ...stry_cafe_api.dll_PropertyListService.html | 288 ++++++------ .../chemistry_cafe_api.dll_PropertyType.html | 40 +- ...y_cafe_api.dll_PropertyTypeController.html | 72 +-- ...stry_cafe_api.dll_PropertyTypeService.html | 180 ++++---- ...hemistry_cafe_api.dll_PropertyVersion.html | 88 ++-- ...afe_api.dll_PropertyVersionController.html | 72 +-- ...y_cafe_api.dll_PropertyVersionService.html | 234 +++++----- ...stry_cafe_api.dll_ReactantProductList.html | 2 +- ...api.dll_ReactantProductListController.html | 2 +- ...fe_api.dll_ReactantProductListService.html | 98 ++--- ...mistry_cafe_api.dll_ReactantsProducts.html | 40 +- .../chemistry_cafe_api.dll_Reaction.html | 46 +- ...istry_cafe_api.dll_ReactionController.html | 72 +-- ...hemistry_cafe_api.dll_ReactionService.html | 330 +++++++------- .../chemistry_cafe_api.dll_Species.html | 28 +- ...mistry_cafe_api.dll_SpeciesController.html | 72 +-- ...chemistry_cafe_api.dll_SpeciesService.html | 172 ++++---- .../chemistry_cafe_api.dll_TagMechanism.html | 28 +- ...y_cafe_api.dll_TagMechanismController.html | 82 ++-- ...e_api.dll_TagMechanismControllerTests.html | 247 +++++++++++ ...cafe_api.dll_TagMechanismReactionList.html | 40 +- ...ll_TagMechanismReactionListController.html | 72 +-- ...i.dll_TagMechanismReactionListService.html | 166 +++---- ...i.dll_TagMechanismReactionListVersion.html | 58 +-- ...echanismReactionListVersionController.html | 72 +-- ...agMechanismReactionListVersionService.html | 184 ++++---- ...stry_cafe_api.dll_TagMechanismService.html | 172 ++++---- ..._cafe_api.dll_TagMechanismSpeciesList.html | 40 +- ...dll_TagMechanismSpeciesListController.html | 72 +-- ...pi.dll_TagMechanismSpeciesListService.html | 166 +++---- ...pi.dll_TagMechanismSpeciesListVersion.html | 58 +-- ...MechanismSpeciesListVersionController.html | 72 +-- ...TagMechanismSpeciesListVersionService.html | 184 ++++---- .../chemistry_cafe_api.dll_User.html | 28 +- ...chemistry_cafe_api.dll_UserController.html | 72 +-- ...hemistry_cafe_api.dll_UserPreferences.html | 34 +- ...afe_api.dll_UserPreferencesController.html | 72 +-- ...y_cafe_api.dll_UserPreferencesService.html | 160 +++---- .../chemistry_cafe_api.dll_UserService.html | 154 +++---- coveragereport/index.htm | 208 +++++---- coveragereport/index.html | 208 +++++---- coveragereport/main.js | 184 ++++---- ...sqlconnector.dll_ActivitySourceHelper.html | 14 +- ...qlconnector.dll_ArraySegmentHolder_T_.html | 2 +- .../mysqlconnector.dll_AuthGSSAPI.html | 2 +- ...henticationMethodSwitchRequestPayload.html | 2 +- ...tor.dll_AuthenticationMoreDataPayload.html | 2 +- ...qlconnector.dll_AuthenticationPlugins.html | 2 +- ...qlconnector.dll_AuthenticationUtility.html | 2 +- ...nnector.dll_BinaryBooleanColumnReader.html | 2 +- ...nector.dll_BinaryDateTimeColumnReader.html | 2 +- ...onnector.dll_BinaryDoubleColumnReader.html | 2 +- ...connector.dll_BinaryFloatColumnReader.html | 2 +- ...tor.dll_BinarySignedInt16ColumnReader.html | 2 +- ...tor.dll_BinarySignedInt32ColumnReader.html | 2 +- ...tor.dll_BinarySignedInt64ColumnReader.html | 2 +- ...ctor.dll_BinarySignedInt8ColumnReader.html | 2 +- ...lconnector.dll_BinaryTimeColumnReader.html | 2 +- ...r.dll_BinaryUnsignedInt16ColumnReader.html | 2 +- ...r.dll_BinaryUnsignedInt32ColumnReader.html | 2 +- ...r.dll_BinaryUnsignedInt64ColumnReader.html | 2 +- ...or.dll_BinaryUnsignedInt8ColumnReader.html | 2 +- ...lconnector.dll_BinaryYearColumnReader.html | 2 +- .../mysqlconnector.dll_BitColumnReader.html | 2 +- ...mysqlconnector.dll_BufferedByteReader.html | 2 +- .../mysqlconnector.dll_ByteArrayReader.html | 14 +- .../mysqlconnector.dll_ByteBufferWriter.html | 22 +- ...nector.dll_ByteBufferWriterExtensions.html | 2 +- .../mysqlconnector.dll_BytesColumnReader.html | 2 +- .../mysqlconnector.dll_CachedParameter.html | 2 +- .../mysqlconnector.dll_CachedProcedure.html | 2 +- ....dll_CachingSha2ServerResponsePayload.html | 2 +- .../mysqlconnector.dll_ChangeUserPayload.html | 2 +- ...mysqlconnector.dll_ColumnCountPayload.html | 2 +- ...connector.dll_ColumnDefinitionPayload.html | 2 +- .../mysqlconnector.dll_ColumnReader.html | 14 +- ...mysqlconnector.dll_ColumnTypeMetadata.html | 40 +- .../mysqlconnector.dll_CommandExecutor.html | 2 +- ...ysqlconnector.dll_CommandListPosition.html | 2 +- ...onnector.dll_CompressedPayloadHandler.html | 2 +- ...dll_ConcatenatedCommandPayloadCreator.html | 2 +- .../mysqlconnector.dll_ConnectionPool.html | 14 +- ...mysqlconnector.dll_ConnectionSettings.html | 18 +- ...qlconnector.dll_ConsoleLoggerProvider.html | 2 +- ...nector.dll_DataReaderValuesEnumerator.html | 2 +- ...onnector.dll_DataRowsValuesEnumerator.html | 2 +- ...ctor.dll_DbDataReaderValuesEnumerator.html | 2 +- .../mysqlconnector.dll_DbTypeMapping.html | 18 +- ...ysqlconnector.dll_DecimalColumnReader.html | 2 +- .../mysqlconnector.dll_EmptyPayload.html | 2 +- ...connector.dll_EnlistedTransactionBase.html | 2 +- .../mysqlconnector.dll_EofPayload.html | 2 +- .../mysqlconnector.dll_ErrorPayload.html | 2 +- ...sqlconnector.dll_FailOverLoadBalancer.html | 2 +- ...onnector.dll_GuidBinary16ColumnReader.html | 2 +- ...lconnector.dll_GuidChar32ColumnReader.html | 2 +- ...lconnector.dll_GuidChar36ColumnReader.html | 2 +- ..._GuidLittleEndianBinary16ColumnReader.html | 2 +- ....dll_GuidTimeSwapBinary16ColumnReader.html | 2 +- ...nector.dll_HandshakeResponse41Payload.html | 2 +- ...tor.dll_ICancellableCommandExtensions.html | 2 +- ...connector.dll_IMySqlCommandExtensions.html | 2 +- ...ysqlconnector.dll_InitDatabasePayload.html | 2 +- ...connector.dll_InitialHandshakePayload.html | 2 +- ...mysqlconnector.dll_LocalInfilePayload.html | 2 +- coveragereport/mysqlconnector.dll_Log.html | 24 +- .../mysqlconnector.dll_MetricsReporter.html | 18 +- .../mysqlconnector.dll_MySqlAttribute.html | 2 +- ...onnector.dll_MySqlAttributeCollection.html | 2 +- .../mysqlconnector.dll_MySqlBatch.html | 2 +- .../mysqlconnector.dll_MySqlBatchCommand.html | 2 +- ...ector.dll_MySqlBatchCommandCollection.html | 2 +- .../mysqlconnector.dll_MySqlBulkCopy.html | 2 +- ...nector.dll_MySqlBulkCopyColumnMapping.html | 2 +- ...ysqlconnector.dll_MySqlBulkCopyResult.html | 2 +- .../mysqlconnector.dll_MySqlBulkLoader.html | 2 +- .../mysqlconnector.dll_MySqlCommand.html | 20 +- ...ysqlconnector.dll_MySqlCommandBuilder.html | 2 +- .../mysqlconnector.dll_MySqlConnection.html | 16 +- ...ctor.dll_MySqlConnectionStringBuilder.html | 2 +- ...ector.dll_MySqlConnectionStringOption.html | 2 +- ...SqlConnectionStringReferenceOption_T_.html | 2 +- ...l_MySqlConnectionStringValueOption_T_.html | 2 +- ...qlconnector.dll_MySqlConnectorFactory.html | 2 +- ...onnector.dll_MySqlConnectorLogManager.html | 2 +- ...ll_MySqlConnectorLoggingConfiguration.html | 2 +- ...onnector.dll_MySqlConversionException.html | 2 +- .../mysqlconnector.dll_MySqlDataAdapter.html | 2 +- .../mysqlconnector.dll_MySqlDataReader.html | 54 +-- .../mysqlconnector.dll_MySqlDataSource.html | 2 +- ...lconnector.dll_MySqlDataSourceBuilder.html | 2 +- .../mysqlconnector.dll_MySqlDateTime.html | 2 +- .../mysqlconnector.dll_MySqlDbColumn.html | 2 +- .../mysqlconnector.dll_MySqlDecimal.html | 2 +- ...nnector.dll_MySqlEndOfStreamException.html | 2 +- .../mysqlconnector.dll_MySqlError.html | 2 +- .../mysqlconnector.dll_MySqlException.html | 2 +- .../mysqlconnector.dll_MySqlGeometry.html | 2 +- .../mysqlconnector.dll_MySqlHelper.html | 2 +- ...nnector.dll_MySqlInfoMessageEventArgs.html | 2 +- .../mysqlconnector.dll_MySqlParameter.html | 54 +-- ...onnector.dll_MySqlParameterCollection.html | 34 +- ...lconnector.dll_MySqlProtocolException.html | 2 +- ...ector.dll_MySqlProvidePasswordContext.html | 2 +- ...onnector.dll_MySqlRowUpdatedEventArgs.html | 2 +- ...nnector.dll_MySqlRowUpdatingEventArgs.html | 2 +- ...onnector.dll_MySqlRowsCopiedEventArgs.html | 2 +- .../mysqlconnector.dll_MySqlTransaction.html | 2 +- ...r.dll_NegotiateToMySqlConverterStream.html | 2 +- .../mysqlconnector.dll_NoOpLogger.html | 2 +- ...mysqlconnector.dll_NoOpLoggerProvider.html | 2 +- .../mysqlconnector.dll_NormalizedSchema.html | 2 +- .../mysqlconnector.dll_NullColumnReader.html | 2 +- .../mysqlconnector.dll_OkPayload.html | 26 +- coveragereport/mysqlconnector.dll_Packet.html | 2 +- .../mysqlconnector.dll_ParsedStatement.html | 2 +- .../mysqlconnector.dll_ParsedStatements.html | 2 +- .../mysqlconnector.dll_PayloadData.html | 2 +- .../mysqlconnector.dll_PingPayload.html | 2 +- .../mysqlconnector.dll_PreparedStatement.html | 2 +- ...mysqlconnector.dll_PreparedStatements.html | 2 +- .../mysqlconnector.dll_ProtocolUtility.html | 14 +- .../mysqlconnector.dll_QueryPayload.html | 2 +- .../mysqlconnector.dll_QuitPayload.html | 2 +- ...mysqlconnector.dll_RandomLoadBalancer.html | 2 +- ...lconnector.dll_ResetConnectionPayload.html | 2 +- ...onnector.dll_ResizableArraySegment_T_.html | 2 +- .../mysqlconnector.dll_ResizableArray_T_.html | 4 +- .../mysqlconnector.dll_ResultSet.html | 28 +- ...lconnector.dll_RoundRobinLoadBalancer.html | 2 +- coveragereport/mysqlconnector.dll_Row.html | 68 +-- .../mysqlconnector.dll_SchemaProvider.html | 2 +- ...sqlconnector.dll_SerializationUtility.html | 2 +- .../mysqlconnector.dll_ServerSession.html | 26 +- .../mysqlconnector.dll_ServerVersion.html | 12 +- .../mysqlconnector.dll_ServerVersions.html | 2 +- ...ector.dll_SingleCommandPayloadCreator.html | 2 +- .../mysqlconnector.dll_SocketByteHandler.html | 2 +- .../mysqlconnector.dll_SocketExtensions.html | 2 +- .../mysqlconnector.dll_SqlParser.html | 18 +- ...ector.dll_StandardEnlistedTransaction.html | 2 +- ...lconnector.dll_StandardPayloadHandler.html | 14 +- ...r.dll_StatementPrepareResponsePayload.html | 2 +- .../mysqlconnector.dll_StatementPreparer.html | 30 +- .../mysqlconnector.dll_StreamByteHandler.html | 2 +- ...mysqlconnector.dll_StringColumnReader.html | 20 +- ...connector.dll_TextBooleanColumnReader.html | 2 +- ...onnector.dll_TextDateTimeColumnReader.html | 22 +- ...lconnector.dll_TextDoubleColumnReader.html | 16 +- ...qlconnector.dll_TextFloatColumnReader.html | 20 +- ...ector.dll_TextSignedInt16ColumnReader.html | 2 +- ...ector.dll_TextSignedInt32ColumnReader.html | 24 +- ...ector.dll_TextSignedInt64ColumnReader.html | 2 +- ...nector.dll_TextSignedInt8ColumnReader.html | 24 +- ...sqlconnector.dll_TextTimeColumnReader.html | 2 +- ...tor.dll_TextUnsignedInt16ColumnReader.html | 2 +- ...tor.dll_TextUnsignedInt32ColumnReader.html | 2 +- ...tor.dll_TextUnsignedInt64ColumnReader.html | 2 +- ...ctor.dll_TextUnsignedInt8ColumnReader.html | 2 +- .../mysqlconnector.dll_TimerQueue.html | 18 +- .../mysqlconnector.dll_TypeMapper.html | 36 +- .../mysqlconnector.dll_Utility.html | 2 +- ...ysqlconnector.dll_ValueTaskExtensions.html | 2 +- ...qlconnector.dll_XaEnlistedTransaction.html | 2 +- ...81E8FE504B5B6446748E035A__NameRegex_0.html | 2 +- ...EA81E8FE504B5B6446748E035A__Utilities.html | 2 +- ...04B5B6446748E035A__TlsVersionsRegex_1.html | 2 +- 224 files changed, 3842 insertions(+), 3515 deletions(-) create mode 100644 coveragereport/chemistry_cafe_api.dll_TagMechanismControllerTests.html diff --git a/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html b/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html index f47b3e3..93ee052 100644 --- a/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html +++ b/coveragereport/chemistry_cafe_api.dll_DeleteReactantProductList.html @@ -112,7 +112,7 @@

Generated by: ReportGenerator 5.2.5.0
4/23/2024 - 3:32:49 PM
GitHub | reportgenerator.io +

Methods/Properties

diff --git a/coveragereport/chemistry_cafe_api.dll_Family.html b/coveragereport/chemistry_cafe_api.dll_Family.html index a446f46..4852a4a 100644 --- a/coveragereport/chemistry_cafe_api.dll_Family.html +++ b/coveragereport/chemistry_cafe_api.dll_Family.html @@ -36,16 +36,16 @@

< Summary

Line coverage
-
0%
+
100%
- + - + @@ -57,7 +57,7 @@

< Summary

- +
Covered lines:04
Uncovered lines:40
Coverable lines:
Line coverage:0%100%
@@ -105,27 +105,27 @@

C:\Users\Evan\D  2{  3    public class Family  4    { - 05        public Guid uuid { get; set; } - 06        public string? name { get; set; } - 07        public Guid super_tag_mechanism_uuid { get; set; } - 08        public bool isDel {  get; set; } + 15        public Guid uuid { get; set; } + 16        public string? name { get; set; } + 17        public Guid super_tag_mechanism_uuid { get; set; } + 18        public bool isDel {  get; set; }  9    }  10}

-
+
+ \ No newline at end of file diff --git a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html index 28c1263..614274d 100644 --- a/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html +++ b/coveragereport/chemistry_cafe_api.dll_TagMechanismReactionList.html @@ -36,16 +36,16 @@

< Summary

Line coverage
-
0%
+
100%
- + - + @@ -57,7 +57,7 @@

< Summary

- +
Covered lines:05
Uncovered lines:50
Coverable lines:
Line coverage:0%100%
@@ -105,30 +105,30 @@

 2{  3    public class TagMechanismReactionList  4    { - 05        public Guid uuid { get; set; } - 06        public Guid reaction_uuid { get; set; } - 07        public Guid tag_mechanism_uuid { get; set; } - 08        public string? version { get; set; } - 09        public bool isDel { get; set; } + 15        public Guid uuid { get; set; } + 16        public Guid reaction_uuid { get; set; } + 17        public Guid tag_mechanism_uuid { get; set; } + 18        public string? version { get; set; } + 19        public bool isDel { get; set; }  10    }  11}

-
+