diff --git a/Server/DiscImageChef.Server.Task/App.config b/Server/DiscImageChef.Server.Task/App.config deleted file mode 100644 index 4980456b1..000000000 --- a/Server/DiscImageChef.Server.Task/App.config +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj b/Server/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj deleted file mode 100644 index 8821ad186..000000000 --- a/Server/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Debug - AnyCPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2} - Exe - Properties - DiscImageChef.Server.Task - DiscImageChef.Server.Task - v4.7.1 - true - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\..\tmp\claunia-temp-aspnet-0\e277a754\assembly\shadow\34ef13c2\840cc539_b0e3d6fb_00000001\DiscImageChef.CommonTypes.dll - - - ..\..\..\..\..\tmp\claunia-temp-aspnet-0\e277a754\assembly\shadow\3a88f867\8a6b2e9c_b0e3d6fb_00000001\DiscImageChef.Decoders.dll - - - ..\..\..\.nuget\packages\entityframework\6.2.0\lib\net45\EntityFramework.dll - - - - - - - - - - - - - {f8bdf57b-1571-4cd0-84b3-b422088d359a} - DiscImageChef.Helpers - - - {911addf5-e5fa-445d-88cd-c7f8ffdbe645} - DiscImageChef.Server - - - - - - - - - - - - LICENSE.LGPL - - - - - - - - - /Library/Frameworks/Mono.framework/Versions/Current/lib/mono - /usr/lib/mono - /usr/local/lib/mono - - $(BaseFrameworkPathOverrideForMono)/4.0-api - $(BaseFrameworkPathOverrideForMono)/4.5-api - $(BaseFrameworkPathOverrideForMono)/4.5.1-api - $(BaseFrameworkPathOverrideForMono)/4.5.2-api - $(BaseFrameworkPathOverrideForMono)/4.6-api - $(BaseFrameworkPathOverrideForMono)/4.6.1-api - $(BaseFrameworkPathOverrideForMono)/4.6.2-api - $(BaseFrameworkPathOverrideForMono)/4.7-api - $(BaseFrameworkPathOverrideForMono)/4.7.1-api - true - - $(FrameworkPathOverride)/Facades;$(AssemblySearchPaths) - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server.Task/Program.cs b/Server/DiscImageChef.Server.Task/Program.cs deleted file mode 100644 index 5041ec53b..000000000 --- a/Server/DiscImageChef.Server.Task/Program.cs +++ /dev/null @@ -1,435 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Program.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server Task. -// -// --[ Description ] ---------------------------------------------------------- -// -// Runs time consuming server tasks. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Data.Entity.Migrations; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Net; -using DiscImageChef.Server.Migrations; -using DiscImageChef.Server.Models; -using HtmlAgilityPack; - -namespace DiscImageChef.Server.Task -{ - class Program - { - public static void Main(string[] args) - { - DateTime start, end; - Console.WriteLine("{0}: Migrating database to latest version...", DateTime.UtcNow); - start = DateTime.UtcNow; - Configuration migratorConfig = new Configuration(); - DbMigrator dbMigrator = new DbMigrator(migratorConfig); - dbMigrator.Update(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", DateTime.UtcNow, (end - start).TotalSeconds); - - start = DateTime.UtcNow; - Console.WriteLine("{0}: Connecting to database...", DateTime.UtcNow); - DicServerContext ctx = new DicServerContext(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - WebClient client; - - try - { - Console.WriteLine("{0}: Retrieving USB IDs from Linux USB...", DateTime.UtcNow); - start = DateTime.UtcNow; - client = new WebClient(); - StringReader sr = new StringReader(client.DownloadString("http://www.linux-usb.org/usb.ids")); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - UsbVendor vendor = null; - int newVendors = 0; - int newProducts = 0; - int modifiedVendors = 0; - int modifiedProducts = 0; - int counter = 0; - - start = DateTime.UtcNow; - Console.WriteLine("{0}: Adding and updating database entries...", DateTime.UtcNow); - do - { - if(counter == 1000) - { - DateTime start2 = DateTime.UtcNow; - Console.WriteLine("{0}: Saving changes", start2); - ctx.SaveChanges(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start2).TotalSeconds); - counter = 0; - } - - string line = sr.ReadLine(); - - if(line is null) break; - - if(line.Length == 0 || line[0] == '#') continue; - - ushort number; - string name; - if(line[0] == '\t') - { - try { number = Convert.ToUInt16(line.Substring(1, 4), 16); } - catch(FormatException) { continue; } - - if(number == 0) continue; - - name = line.Substring(7); - - UsbProduct product = - ctx.UsbProducts.FirstOrDefault(p => p.ProductId == number && p.Vendor != null && - p.Vendor.VendorId == vendor.VendorId); - - if(product is null) - { - product = new UsbProduct(vendor, number, name); - ctx.UsbProducts.Add(product); - Console.WriteLine("{0}: Will add product {1} with ID {2:X4} and vendor {3} ({4:X4})", - DateTime.UtcNow, product.Product, product.ProductId, - product.Vendor?.Vendor ?? "null", product.Vendor?.VendorId ?? 0); - newProducts++; - counter++; - } - else if(name != product.Product) - { - Console - .WriteLine("{0}: Will modify product with ID {1:X4} and vendor {2} ({3:X4}) from \"{4}\" to \"{5}\"", - DateTime.UtcNow, product.ProductId, product.Vendor?.Vendor ?? "null", - product.Vendor?.VendorId ?? 0, - product.Product, name); - product.Product = name; - product.ModifiedWhen = DateTime.UtcNow; - modifiedProducts++; - counter++; - } - - continue; - } - - try { number = Convert.ToUInt16(line.Substring(0, 4), 16); } - catch(FormatException) { continue; } - - if(number == 0) continue; - - name = line.Substring(6); - - vendor = ctx.UsbVendors.FirstOrDefault(v => v.VendorId == number); - - if(vendor is null) - { - vendor = new UsbVendor(number, name); - ctx.UsbVendors.Add(vendor); - Console.WriteLine("{0}: Will add vendor {1} with ID {2:X4}", DateTime.UtcNow, vendor.Vendor, - vendor.VendorId); - newVendors++; - counter++; - } - else if(name != vendor.Vendor) - { - Console.WriteLine("{0}: Will modify vendor with ID {1:X4} from \"{2}\" to \"{3}\"", - DateTime.UtcNow, vendor.VendorId, vendor.Vendor, name); - vendor.Vendor = name; - vendor.ModifiedWhen = DateTime.UtcNow; - modifiedVendors++; - counter++; - } - } - while(true); - - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: Saving database changes...", DateTime.UtcNow); - start = DateTime.UtcNow; - ctx.SaveChanges(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: {1} vendors added.", DateTime.UtcNow, newVendors); - Console.WriteLine("{0}: {1} products added.", DateTime.UtcNow, newProducts); - Console.WriteLine("{0}: {1} vendors modified.", DateTime.UtcNow, modifiedVendors); - Console.WriteLine("{0}: {1} products modified.", DateTime.UtcNow, modifiedProducts); - - Console.WriteLine("{0}: Looking up a vendor", DateTime.UtcNow); - start = DateTime.UtcNow; - vendor = ctx.UsbVendors.FirstOrDefault(v => v.VendorId == 0x8086); - if(vendor is null) Console.WriteLine("{0}: Error, could not find vendor.", DateTime.UtcNow); - else - Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, - vendor.Vendor); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: Looking up a product", DateTime.UtcNow); - start = DateTime.UtcNow; - UsbProduct prd = - ctx.UsbProducts.FirstOrDefault(p => p.ProductId == 0x0001 && p.Vendor.VendorId == 0x8086); - if(prd is null) Console.WriteLine("{0}: Error, could not find product.", DateTime.UtcNow); - else Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, prd.Product); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - } - catch(Exception ex) - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - Console.WriteLine("{0}: Exception {1} filling USB IDs...", DateTime.UtcNow, ex); - } - - Console.WriteLine("{0}: Fixing all devices without modification time...", DateTime.UtcNow); - start = DateTime.UtcNow; - foreach(Device device in ctx.Devices.Where(d => d.ModifiedWhen == null)) - device.ModifiedWhen = device.AddedWhen; - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); - start = DateTime.UtcNow; - ctx.SaveChanges(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - try - { - Console.WriteLine("{0}: Retrieving CompactDisc read offsets from AccurateRip...", DateTime.UtcNow); - start = DateTime.UtcNow; - - client = new WebClient(); - string html = client.DownloadString("http://www.accuraterip.com/driveoffsets.htm"); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - // The HTML is too malformed to process easily, so find start of table - html = "" + - html.Substring(html.IndexOf("
", StringComparison.Ordinal)); - - HtmlDocument doc = new HtmlDocument(); - doc.LoadHtml(html); - HtmlNode firstTable = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/table[1]"); - - bool firstRow = true; - - int addedOffsets = 0; - int modifiedOffsets = 0; - - Console.WriteLine("{0}: Processing offsets...", DateTime.UtcNow); - start = DateTime.UtcNow; - foreach(HtmlNode row in firstTable.Descendants("tr")) - { - HtmlNode[] columns = row.Descendants("td").ToArray(); - - if(columns.Length != 4) - { - Console.WriteLine("{0}: Row does not have correct number of columns...", DateTime.UtcNow); - continue; - } - - string column0 = columns[0].InnerText; - string column1 = columns[1].InnerText; - string column2 = columns[2].InnerText; - string column3 = columns[3].InnerText; - - if(firstRow) - { - if(column0.ToLowerInvariant() != "cd drive") - { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, - columns[0].InnerText); - break; - } - - if(column1.ToLowerInvariant() != "correction offset") - { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, - columns[1].InnerText); - break; - } - - if(column2.ToLowerInvariant() != "submitted by") - { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, - columns[2].InnerText); - break; - } - - if(column3.ToLowerInvariant() != "percentage agree") - { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, - columns[3].InnerText); - break; - } - - firstRow = false; - continue; - } - - string manufacturer; - string model; - - if(column0[0] == '-' && column0[1] == ' ') - { - manufacturer = null; - model = column0.Substring(2).Trim(); - } - else - { - int cutOffset = column0.IndexOf(" - ", StringComparison.Ordinal); - - if(cutOffset == -1) - { - manufacturer = null; - model = column0; - } - else - { - manufacturer = column0.Substring(0, cutOffset).Trim(); - model = column0.Substring(cutOffset + 3).Trim(); - } - } - - switch(manufacturer) - { - case "Lite-ON": - manufacturer = "JLMS"; - break; - case "LG Electronics": - manufacturer = "HL-DT-ST"; - break; - case "Panasonic": - manufacturer = "MATSHITA"; - break; - } - - CompactDiscOffset cdOffset = - ctx.CdOffsets.FirstOrDefault(o => o.Manufacturer == manufacturer && o.Model == model); - - if(column1.ToLowerInvariant() == "[purged]") - { - if(cdOffset != null) ctx.CdOffsets.Remove(cdOffset); - continue; - } - - if(!short.TryParse(column1, out short offset)) continue; - if(!int.TryParse(column2, out int submissions)) continue; - - if(column3[column3.Length - 1] != '%') continue; - - column3 = column3.Substring(0, column3.Length - 1); - - if(!float.TryParse(column3, out float percentage)) continue; - - percentage /= 100; - - if(cdOffset is null) - { - cdOffset = new CompactDiscOffset - { - AddedWhen = DateTime.UtcNow, - ModifiedWhen = DateTime.UtcNow, - Agreement = percentage, - Manufacturer = manufacturer, - Model = model, - Offset = offset, - Submissions = submissions - }; - - ctx.CdOffsets.Add(cdOffset); - addedOffsets++; - } - else - { - if(Math.Abs(cdOffset.Agreement - percentage) > 0) - { - cdOffset.Agreement = percentage; - cdOffset.ModifiedWhen = DateTime.UtcNow; - } - - if(cdOffset.Offset != offset) - { - cdOffset.Offset = offset; - cdOffset.ModifiedWhen = DateTime.UtcNow; - } - - if(cdOffset.Submissions != submissions) - { - cdOffset.Submissions = submissions; - cdOffset.ModifiedWhen = DateTime.UtcNow; - } - - if(Math.Abs(cdOffset.Agreement - percentage) > 0 || cdOffset.Offset != offset || - cdOffset.Submissions != submissions) modifiedOffsets++; - } - - foreach(Device device in ctx - .Devices - .Where(d => d.Manufacturer == null && d.Model != null && - d.Model.Trim() == model) - .Union(ctx.Devices.Where(d => d.Manufacturer != null && - d.Manufacturer.Trim() == manufacturer && - d.Model != null && - d.Model == model))) - { - if(device.CdOffset == cdOffset && device.ModifiedWhen == cdOffset.ModifiedWhen) continue; - - device.CdOffset = cdOffset; - device.ModifiedWhen = cdOffset.ModifiedWhen; - } - } - - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); - start = DateTime.UtcNow; - ctx.SaveChanges(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - - Console.WriteLine("{0}: Added {1} offsets", end, addedOffsets); - Console.WriteLine("{0}: Modified {1} offsets", end, modifiedOffsets); - } - catch(Exception ex) - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - Console.WriteLine("{0}: Exception {1} filling CompactDisc read offsets...", DateTime.UtcNow, ex); - } - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs b/Server/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs deleted file mode 100644 index 0952c4caf..000000000 --- a/Server/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DiscImageChef.Server.Task")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DiscImageChef.Server.Task")] -[assembly: AssemblyCopyright("Copyright © 2011-2019 Natalia Portillo")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.5.99.1693")] -[assembly: AssemblyFileVersion("4.5.99.1693")] \ No newline at end of file diff --git a/Server/DiscImageChef.Server.sln b/Server/DiscImageChef.Server.sln deleted file mode 100644 index e532070e5..000000000 --- a/Server/DiscImageChef.Server.sln +++ /dev/null @@ -1,61 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28922.388 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Server", "DiscImageChef.Server\DiscImageChef.Server.csproj", "{911ADDF5-E5FA-445D-88CD-C7F8FFDBE645}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscImageChef.CommonTypes", "DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj", "{F2B84194-26EB-4227-B1C5-6602517E85AE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscImageChef.Decoders", "DiscImageChef.Decoders\DiscImageChef.Decoders.csproj", "{0BEB3088-B634-4289-AE17-CDF2D25D00D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscImageChef.Dto", "DiscImageChef.Dto\DiscImageChef.Dto.csproj", "{F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscImageChef.Helpers", "DiscImageChef.Helpers\DiscImageChef.Helpers.csproj", "{F8BDF57B-1571-4CD0-84B3-B422088D359A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscImageChef.Console", "DiscImageChef.Console\DiscImageChef.Console.csproj", "{CCAA7AFE-C094-4D82-A66D-630DE8A3F545}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Server.Task", "DiscImageChef.Server.Task\DiscImageChef.Server.Task.csproj", "{79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645}.Debug|Any CPU.Build.0 = Debug|Any CPU - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645}.Release|Any CPU.ActiveCfg = Release|Any CPU - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645}.Release|Any CPU.Build.0 = Release|Any CPU - {F2B84194-26EB-4227-B1C5-6602517E85AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F2B84194-26EB-4227-B1C5-6602517E85AE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|Any CPU.Build.0 = Release|Any CPU - {0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BEB3088-B634-4289-AE17-CDF2D25D00D5}.Release|Any CPU.Build.0 = Release|Any CPU - {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|Any CPU.Build.0 = Release|Any CPU - {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Release|Any CPU.Build.0 = Release|Any CPU - {CCAA7AFE-C094-4D82-A66D-630DE8A3F545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CCAA7AFE-C094-4D82-A66D-630DE8A3F545}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CCAA7AFE-C094-4D82-A66D-630DE8A3F545}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CCAA7AFE-C094-4D82-A66D-630DE8A3F545}.Release|Any CPU.Build.0 = Release|Any CPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8A988A8F-0588-4935-AAB6-64E34A68CE30} - EndGlobalSection -EndGlobal diff --git a/Server/DiscImageChef.Server/App_Start/Ata.cs b/Server/DiscImageChef.Server/App_Start/Ata.cs deleted file mode 100644 index fb793c885..000000000 --- a/Server/DiscImageChef.Server/App_Start/Ata.cs +++ /dev/null @@ -1,1498 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Ata.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes ATA information from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Decoders.ATA; -using DiscImageChef.Decoders.SCSI; - -namespace DiscImageChef.Server -{ - public static class Ata - { - /// - /// Takes the ATA part of a device report and prints it as a list of values and another list of key=value pairs to be - /// sequenced by ASP.NET in the rendering - /// - /// ATA part of a device report - /// true if compact flash device - /// true if atapi device - /// true if removable device - /// List to put values on - /// List to put key=value pairs on - /// List of tested media - public static void Report(CommonTypes.Metadata.Ata ataReport, bool cfa, bool atapi, - ref bool removable, - ref List ataOneValue, ref Dictionary ataTwoValue, - ref List testedMedia) - { - uint logicalsectorsize = 0; - - Identify.IdentifyDevice? ataIdentifyNullable = Identify.Decode(ataReport.Identify); - if(!ataIdentifyNullable.HasValue) return; - - Identify.IdentifyDevice ataIdentify = ataIdentifyNullable.Value; - - if(!string.IsNullOrEmpty(ataIdentify.Model)) ataTwoValue.Add("Model", ataIdentify.Model); - if(!string.IsNullOrEmpty(ataIdentify.FirmwareRevision)) - ataTwoValue.Add("Firmware revision", ataIdentify.FirmwareRevision); - if(!string.IsNullOrEmpty(ataIdentify.AdditionalPID)) - ataTwoValue.Add("Additional product ID", ataIdentify.AdditionalPID); - - bool ata1 = false, - ata2 = false, - ata3 = false, - ata4 = false, - ata5 = false, - ata6 = false, - ata7 = false, - acs = false, - acs2 = false, - acs3 = false, - acs4 = false; - - if((ushort)ataIdentify.MajorVersion == 0x0000 || (ushort)ataIdentify.MajorVersion == 0xFFFF) - { - // Obsolete in ATA-2, if present, device supports ATA-1 - ata1 |= ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FastIDE) || - ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SlowIDE) || - ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.UltraFastIDE); - - ata2 |= ataIdentify.ExtendedIdentify.HasFlag(Identify.ExtendedIdentifyBit.Words54to58Valid) || - ataIdentify.ExtendedIdentify.HasFlag(Identify.ExtendedIdentifyBit.Words64to70Valid) || - ataIdentify.ExtendedIdentify.HasFlag(Identify.ExtendedIdentifyBit.Word88Valid); - - if(!ata1 && !ata2 && !atapi && !cfa) ata2 = true; - - ata4 |= atapi; - ata3 |= cfa; - - if(cfa && ata1) ata1 = false; - if(cfa && ata2) ata2 = false; - } - else - { - ata1 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata1); - ata2 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata2); - ata3 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata3); - ata4 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi4); - ata5 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi5); - ata6 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi6); - ata7 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.AtaAtapi7); - acs |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.Ata8ACS); - acs2 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS2); - acs3 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS3); - acs4 |= ataIdentify.MajorVersion.HasFlag(Identify.MajorVersionBit.ACS4); - } - - int maxatalevel = 0; - int minatalevel = 255; - string tmpString = ""; - if(ata1) - { - tmpString += "ATA-1 "; - maxatalevel = 1; - if(minatalevel > 1) minatalevel = 1; - } - - if(ata2) - { - tmpString += "ATA-2 "; - maxatalevel = 2; - if(minatalevel > 2) minatalevel = 2; - } - - if(ata3) - { - tmpString += "ATA-3 "; - maxatalevel = 3; - if(minatalevel > 3) minatalevel = 3; - } - - if(ata4) - { - tmpString += "ATA/ATAPI-4 "; - maxatalevel = 4; - if(minatalevel > 4) minatalevel = 4; - } - - if(ata5) - { - tmpString += "ATA/ATAPI-5 "; - maxatalevel = 5; - if(minatalevel > 5) minatalevel = 5; - } - - if(ata6) - { - tmpString += "ATA/ATAPI-6 "; - maxatalevel = 6; - if(minatalevel > 6) minatalevel = 6; - } - - if(ata7) - { - tmpString += "ATA/ATAPI-7 "; - maxatalevel = 7; - if(minatalevel > 7) minatalevel = 7; - } - - if(acs) - { - tmpString += "ATA8-ACS "; - maxatalevel = 8; - if(minatalevel > 8) minatalevel = 8; - } - - if(acs2) - { - tmpString += "ATA8-ACS2 "; - maxatalevel = 9; - if(minatalevel > 9) minatalevel = 9; - } - - if(acs3) - { - tmpString += "ATA8-ACS3 "; - maxatalevel = 10; - if(minatalevel > 10) minatalevel = 10; - } - - if(acs4) - { - tmpString += "ATA8-ACS4 "; - maxatalevel = 11; - if(minatalevel > 11) minatalevel = 11; - } - - if(tmpString != "") ataTwoValue.Add("Supported ATA versions", tmpString); - - if(maxatalevel >= 3) - { - switch(ataIdentify.MinorVersion) - { - case 0x0000: - case 0xFFFF: - tmpString = "Minor ATA version not specified"; - break; - case 0x0001: - tmpString = "ATA (ATA-1) X3T9.2 781D prior to revision 4"; - break; - case 0x0002: - tmpString = "ATA-1 published, ANSI X3.221-1994"; - break; - case 0x0003: - tmpString = "ATA (ATA-1) X3T9.2 781D revision 4"; - break; - case 0x0004: - tmpString = "ATA-2 published, ANSI X3.279-1996"; - break; - case 0x0005: - tmpString = "ATA-2 X3T10 948D prior to revision 2k"; - break; - case 0x0006: - tmpString = "ATA-3 X3T10 2008D revision 1"; - break; - case 0x0007: - tmpString = "ATA-2 X3T10 948D revision 2k"; - break; - case 0x0008: - tmpString = "ATA-3 X3T10 2008D revision 0"; - break; - case 0x0009: - tmpString = "ATA-2 X3T10 948D revision 3"; - break; - case 0x000A: - tmpString = "ATA-3 published, ANSI X3.298-1997"; - break; - case 0x000B: - tmpString = "ATA-3 X3T10 2008D revision 6"; - break; - case 0x000C: - tmpString = "ATA-3 X3T13 2008D revision 7"; - break; - case 0x000D: - tmpString = "ATA/ATAPI-4 X3T13 1153D revision 6"; - break; - case 0x000E: - tmpString = "ATA/ATAPI-4 T13 1153D revision 13"; - break; - case 0x000F: - tmpString = "ATA/ATAPI-4 X3T13 1153D revision 7"; - break; - case 0x0010: - tmpString = "ATA/ATAPI-4 T13 1153D revision 18"; - break; - case 0x0011: - tmpString = "ATA/ATAPI-4 T13 1153D revision 15"; - break; - case 0x0012: - tmpString = "ATA/ATAPI-4 published, ANSI INCITS 317-1998"; - break; - case 0x0013: - tmpString = "ATA/ATAPI-5 T13 1321D revision 3"; - break; - case 0x0014: - tmpString = "ATA/ATAPI-4 T13 1153D revision 14"; - break; - case 0x0015: - tmpString = "ATA/ATAPI-5 T13 1321D revision 1"; - break; - case 0x0016: - tmpString = "ATA/ATAPI-5 published, ANSI INCITS 340-2000"; - break; - case 0x0017: - tmpString = "ATA/ATAPI-4 T13 1153D revision 17"; - break; - case 0x0018: - tmpString = "ATA/ATAPI-6 T13 1410D revision 0"; - break; - case 0x0019: - tmpString = "ATA/ATAPI-6 T13 1410D revision 3a"; - break; - case 0x001A: - tmpString = "ATA/ATAPI-7 T13 1532D revision 1"; - break; - case 0x001B: - tmpString = "ATA/ATAPI-6 T13 1410D revision 2"; - break; - case 0x001C: - tmpString = "ATA/ATAPI-6 T13 1410D revision 1"; - break; - case 0x001D: - tmpString = "ATA/ATAPI-7 published ANSI INCITS 397-2005"; - break; - case 0x001E: - tmpString = "ATA/ATAPI-7 T13 1532D revision 0"; - break; - case 0x001F: - tmpString = "ACS-3 Revision 3b"; - break; - case 0x0021: - tmpString = "ATA/ATAPI-7 T13 1532D revision 4a"; - break; - case 0x0022: - tmpString = "ATA/ATAPI-6 published, ANSI INCITS 361-2002"; - break; - case 0x0027: - tmpString = "ATA8-ACS revision 3c"; - break; - case 0x0028: - tmpString = "ATA8-ACS revision 6"; - break; - case 0x0029: - tmpString = "ATA8-ACS revision 4"; - break; - case 0x0031: - tmpString = "ACS-2 Revision 2"; - break; - case 0x0033: - tmpString = "ATA8-ACS Revision 3e"; - break; - case 0x0039: - tmpString = "ATA8-ACS Revision 4c"; - break; - case 0x0042: - tmpString = "ATA8-ACS Revision 3f"; - break; - case 0x0052: - tmpString = "ATA8-ACS revision 3b"; - break; - case 0x006D: - tmpString = "ACS-3 Revision 5"; - break; - case 0x0082: - tmpString = "ACS-2 published, ANSI INCITS 482-2012"; - break; - case 0x0107: - tmpString = "ATA8-ACS revision 2d"; - break; - case 0x0110: - tmpString = "ACS-2 Revision 3"; - break; - case 0x011B: - tmpString = "ACS-3 Revision 4"; - break; - default: - tmpString = $"Unknown ATA revision 0x{ataIdentify.MinorVersion:X4}"; - break; - } - - ataTwoValue.Add("Maximum ATA revision supported", tmpString); - } - - tmpString = ""; - switch((ataIdentify.TransportMajorVersion & 0xF000) >> 12) - { - case 0x0: - if((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "ATA/ATAPI-7 "; - if((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-APT "; - ataTwoValue.Add("Parallel ATA device", tmpString); - break; - case 0x1: - if((ataIdentify.TransportMajorVersion & 0x0001) == 0x0001) tmpString += "ATA8-AST "; - if((ataIdentify.TransportMajorVersion & 0x0002) == 0x0002) tmpString += "SATA 1.0a "; - if((ataIdentify.TransportMajorVersion & 0x0004) == 0x0004) tmpString += "SATA II Extensions "; - if((ataIdentify.TransportMajorVersion & 0x0008) == 0x0008) tmpString += "SATA 2.5 "; - if((ataIdentify.TransportMajorVersion & 0x0010) == 0x0010) tmpString += "SATA 2.6 "; - if((ataIdentify.TransportMajorVersion & 0x0020) == 0x0020) tmpString += "SATA 3.0 "; - if((ataIdentify.TransportMajorVersion & 0x0040) == 0x0040) tmpString += "SATA 3.1 "; - ataTwoValue.Add("Serial ATA device: ", tmpString); - break; - case 0xE: - ataTwoValue.Add("SATA Express device", "No version"); - break; - default: - ataTwoValue.Add("Unknown transport type", - $"0x{(ataIdentify.TransportMajorVersion & 0xF000) >> 12:X1}"); - break; - } - - if(atapi) - { - // Bits 12 to 8, SCSI Peripheral Device Type - switch((PeripheralDeviceTypes)(((ushort)ataIdentify.GeneralConfiguration & 0x1F00) >> 8)) - { - case PeripheralDeviceTypes.DirectAccess: //0x00, - ataOneValue.Add("ATAPI Direct-access device"); - break; - case PeripheralDeviceTypes.SequentialAccess: //0x01, - ataOneValue.Add("ATAPI Sequential-access device"); - break; - case PeripheralDeviceTypes.PrinterDevice: //0x02, - ataOneValue.Add("ATAPI Printer device"); - break; - case PeripheralDeviceTypes.ProcessorDevice: //0x03, - ataOneValue.Add("ATAPI Processor device"); - break; - case PeripheralDeviceTypes.WriteOnceDevice: //0x04, - ataOneValue.Add("ATAPI Write-once device"); - break; - case PeripheralDeviceTypes.MultiMediaDevice: //0x05, - ataOneValue.Add("ATAPI CD-ROM/DVD/etc device"); - break; - case PeripheralDeviceTypes.ScannerDevice: //0x06, - ataOneValue.Add("ATAPI Scanner device"); - break; - case PeripheralDeviceTypes.OpticalDevice: //0x07, - ataOneValue.Add("ATAPI Optical memory device"); - break; - case PeripheralDeviceTypes.MediumChangerDevice: //0x08, - ataOneValue.Add("ATAPI Medium change device"); - break; - case PeripheralDeviceTypes.CommsDevice: //0x09, - ataOneValue.Add("ATAPI Communications device"); - break; - case PeripheralDeviceTypes.PrePressDevice1: //0x0A, - ataOneValue.Add("ATAPI Graphics arts pre-press device (defined in ASC IT8)"); - break; - case PeripheralDeviceTypes.PrePressDevice2: //0x0B, - ataOneValue.Add("ATAPI Graphics arts pre-press device (defined in ASC IT8)"); - break; - case PeripheralDeviceTypes.ArrayControllerDevice: //0x0C, - ataOneValue.Add("ATAPI Array controller device"); - break; - case PeripheralDeviceTypes.EnclosureServiceDevice: //0x0D, - ataOneValue.Add("ATAPI Enclosure services device"); - break; - case PeripheralDeviceTypes.SimplifiedDevice: //0x0E, - ataOneValue.Add("ATAPI Simplified direct-access device"); - break; - case PeripheralDeviceTypes.OCRWDevice: //0x0F, - ataOneValue.Add("ATAPI Optical card reader/writer device"); - break; - case PeripheralDeviceTypes.BridgingExpander: //0x10, - ataOneValue.Add("ATAPI Bridging Expanders"); - break; - case PeripheralDeviceTypes.ObjectDevice: //0x11, - ataOneValue.Add("ATAPI Object-based Storage Device"); - break; - case PeripheralDeviceTypes.ADCDevice: //0x12, - ataOneValue.Add("ATAPI Automation/Drive Interface"); - break; - case PeripheralDeviceTypes.WellKnownDevice: //0x1E, - ataOneValue.Add("ATAPI Well known logical unit"); - break; - case PeripheralDeviceTypes.UnknownDevice: //0x1F - ataOneValue.Add("ATAPI Unknown or no device type"); - break; - default: - ataOneValue - .Add($"ATAPI Unknown device type field value 0x{((ushort)ataIdentify.GeneralConfiguration & 0x1F00) >> 8:X2}"); - break; - } - - // ATAPI DRQ behaviour - switch(((ushort)ataIdentify.GeneralConfiguration & 0x60) >> 5) - { - case 0: - ataOneValue.Add("Device shall set DRQ within 3 ms of receiving PACKET"); - break; - case 1: - ataOneValue.Add("Device shall assert INTRQ when DRQ is set to one"); - break; - case 2: - ataOneValue.Add("Device shall set DRQ within 50 µs of receiving PACKET"); - break; - default: - ataOneValue - .Add($"Unknown ATAPI DRQ behaviour code {((ushort)ataIdentify.GeneralConfiguration & 0x60) >> 5}"); - break; - } - - // ATAPI PACKET size - switch((ushort)ataIdentify.GeneralConfiguration & 0x03) - { - case 0: - ataOneValue.Add("ATAPI device uses 12 byte command packet"); - break; - case 1: - ataOneValue.Add("ATAPI device uses 16 byte command packet"); - break; - default: - ataOneValue - .Add($"Unknown ATAPI packet size code {(ushort)ataIdentify.GeneralConfiguration & 0x03}"); - break; - } - } - else if(!cfa) - { - if(minatalevel >= 5) - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.IncompleteResponse)) - ataOneValue.Add("Incomplete identify response"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NonMagnetic)) - ataOneValue.Add("Device uses non-magnetic media"); - - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Removable)) - ataOneValue.Add("Device is removable"); - - if(minatalevel <= 5) - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.Fixed)) - ataOneValue.Add("Device is fixed"); - - if(ata1) - { - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SlowIDE)) - ataOneValue.Add("Device transfer rate is <= 5 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FastIDE)) - ataOneValue.Add("Device transfer rate is > 5 Mb/s but <= 10 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.UltraFastIDE)) - ataOneValue.Add("Device transfer rate is > 10 Mb/s"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SoftSector)) - ataOneValue.Add("Device is soft sectored"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HardSector)) - ataOneValue.Add("Device is hard sectored"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.NotMFM)) - ataOneValue.Add("Device is not MFM encoded"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.FormatGapReq)) - ataOneValue.Add("Format speed tolerance gap is required"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.TrackOffset)) - ataOneValue.Add("Track offset option is available"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.DataStrobeOffset)) - ataOneValue.Add("Data strobe offset option is available"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit - .RotationalSpeedTolerance)) - ataOneValue.Add("Rotational speed tolerance is higher than 0,5%"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.SpindleControl)) - ataOneValue.Add("Spindle motor control is implemented"); - if(ataIdentify.GeneralConfiguration.HasFlag(Identify.GeneralConfigurationBit.HighHeadSwitch)) - ataOneValue.Add("Head switch time is bigger than 15 µs."); - } - } - - if((ushort)ataIdentify.SpecificConfiguration != 0x0000 && - (ushort)ataIdentify.SpecificConfiguration != 0xFFFF) - switch(ataIdentify.SpecificConfiguration) - { - case Identify.SpecificConfigurationEnum.RequiresSetIncompleteResponse: - ataOneValue - .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); - break; - case Identify.SpecificConfigurationEnum.RequiresSetCompleteResponse: - ataOneValue - .Add("Device requires SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); - break; - case Identify.SpecificConfigurationEnum.NotRequiresSetIncompleteResponse: - ataOneValue - .Add("Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is incomplete."); - break; - case Identify.SpecificConfigurationEnum.NotRequiresSetCompleteResponse: - ataOneValue - .Add("Device does not require SET FEATURES to spin up and IDENTIFY DEVICE response is complete."); - break; - default: - ataOneValue - .Add($"Unknown device specific configuration 0x{(ushort)ataIdentify.SpecificConfiguration:X4}"); - break; - } - - // Obsolete since ATA-2, however, it is yet used in ATA-8 devices - if(ataIdentify.BufferSize != 0x0000 && ataIdentify.BufferSize != 0xFFFF && - ataIdentify.BufferType != 0x0000 && ataIdentify.BufferType != 0xFFFF) - switch(ataIdentify.BufferType) - { - case 1: - ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of single ported single sector buffer"); - break; - case 2: - ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer"); - break; - case 3: - ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of dual ported multi sector buffer with read caching"); - break; - default: - ataOneValue - .Add($"{ataIdentify.BufferSize * logicalsectorsize / 1024} KiB of unknown type {ataIdentify.BufferType} buffer"); - break; - } - - ataOneValue.Add("Device capabilities:"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.StandardStanbyTimer)) - ataOneValue.Add("Standby time values are standard"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.IORDY)) - ataOneValue.Add(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.CanDisableIORDY) - ? "IORDY is supported and can be disabled" - : "IORDY is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.DMASupport)) - ataOneValue.Add("DMA is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment1) || - ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.PhysicalAlignment0)) - ataOneValue.Add($"Long Physical Alignment setting is {(ushort)ataIdentify.Capabilities & 0x03}"); - if(atapi) - { - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.InterleavedDMA)) - ataOneValue.Add("ATAPI device supports interleaved DMA"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.CommandQueue)) - ataOneValue.Add("ATAPI device supports command queueing"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.OverlapOperation)) - ataOneValue.Add("ATAPI device supports overlapped operations"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.RequiresATASoftReset)) - ataOneValue.Add("ATAPI device requires ATA software reset"); - } - - if(ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeSet) && - !ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.MustBeClear)) - if(ataIdentify.Capabilities2.HasFlag(Identify.CapabilitiesBit2.SpecificStandbyTimer)) - ataOneValue.Add("Device indicates a specific minimum standby timer value"); - - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.MultipleValid)) - { - ataOneValue.Add($"A maximum of {ataIdentify.MultipleSectorNumber} sectors can be transferred per interrupt on READ/WRITE MULTIPLE"); - ataOneValue.Add($"Device supports setting a maximum of {ataIdentify.MultipleMaxSectors} sectors"); - } - - if(ata1) - if(ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) - ataOneValue.Add("Device supports doubleword I/O"); - - if(minatalevel <= 3) - { - if(ataIdentify.PIOTransferTimingMode > 0) - ataTwoValue.Add("PIO timing mode", $"{ataIdentify.PIOTransferTimingMode}"); - if(ataIdentify.DMATransferTimingMode > 0) - ataTwoValue.Add("DMA timing mode", $"{ataIdentify.DMATransferTimingMode}"); - } - - tmpString = ""; - - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode0)) tmpString += "PIO0 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode1)) tmpString += "PIO1 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode2)) tmpString += "PIO2 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode3)) tmpString += "PIO3 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode4)) tmpString += "PIO4 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode5)) tmpString += "PIO5 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode6)) tmpString += "PIO6 "; - if(ataIdentify.APIOSupported.HasFlag(Identify.TransferMode.Mode7)) tmpString += "PIO7 "; - - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Advanced PIO", tmpString); - - if(minatalevel <= 3 && !atapi) - { - tmpString = ""; - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode0)) - { - tmpString += "DMA0 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode1)) - { - tmpString += "DMA1 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode2)) - { - tmpString += "DMA2 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode3)) - { - tmpString += "DMA3 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode4)) - { - tmpString += "DMA4 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode5)) - { - tmpString += "DMA5 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode6)) - { - tmpString += "DMA6 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; - } - - if(ataIdentify.DMASupported.HasFlag(Identify.TransferMode.Mode7)) - { - tmpString += "DMA7 "; - if(ataIdentify.DMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; - } - - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Single-word DMA", tmpString); - } - - tmpString = ""; - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode0)) - { - tmpString += "MDMA0 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode1)) - { - tmpString += "MDMA1 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode2)) - { - tmpString += "MDMA2 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode3)) - { - tmpString += "MDMA3 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode4)) - { - tmpString += "MDMA4 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode5)) - { - tmpString += "MDMA5 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode6)) - { - tmpString += "MDMA6 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; - } - - if(ataIdentify.MDMASupported.HasFlag(Identify.TransferMode.Mode7)) - { - tmpString += "MDMA7 "; - if(ataIdentify.MDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; - } - - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Multi-word DMA", tmpString); - - tmpString = ""; - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode0)) - { - tmpString += "UDMA0 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode0)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode1)) - { - tmpString += "UDMA1 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode1)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode2)) - { - tmpString += "UDMA2 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode2)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode3)) - { - tmpString += "UDMA3 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode3)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode4)) - { - tmpString += "UDMA4 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode4)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode5)) - { - tmpString += "UDMA5 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode5)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode6)) - { - tmpString += "UDMA6 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode6)) tmpString += "(active) "; - } - - if(ataIdentify.UDMASupported.HasFlag(Identify.TransferMode.Mode7)) - { - tmpString += "UDMA7 "; - if(ataIdentify.UDMAActive.HasFlag(Identify.TransferMode.Mode7)) tmpString += "(active) "; - } - - if(!string.IsNullOrEmpty(tmpString)) ataTwoValue.Add("Ultra DMA", tmpString); - - if(ataIdentify.MinMDMACycleTime != 0 && ataIdentify.RecMDMACycleTime != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinMDMACycleTime} ns. transfer cycle time per word in MDMA, " + - $"{ataIdentify.RecMDMACycleTime} ns. recommended"); - if(ataIdentify.MinPIOCycleTimeNoFlow != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinPIOCycleTimeNoFlow} ns. transfer cycle time per word in PIO, " + - "without flow control"); - if(ataIdentify.MinPIOCycleTimeFlow != 0) - ataOneValue.Add($"At minimum {ataIdentify.MinPIOCycleTimeFlow} ns. transfer cycle time per word in PIO, " + - "with IORDY flow control"); - - if(ataIdentify.MaxQueueDepth != 0) - ataOneValue.Add($"{ataIdentify.MaxQueueDepth + 1} depth of queue maximum"); - - if(atapi) - { - if(ataIdentify.PacketBusRelease != 0) - ataOneValue - .Add($"{ataIdentify.PacketBusRelease} ns. typical to release bus from receipt of PACKET"); - if(ataIdentify.ServiceBusyClear != 0) - ataOneValue - .Add($"{ataIdentify.ServiceBusyClear} ns. typical to clear BSY bit from receipt of SERVICE"); - } - - if((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || - (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) - { - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) - { - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen1Speed)) - ataOneValue.Add("SATA 1.5Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen2Speed)) - ataOneValue.Add("SATA 3.0Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Gen3Speed)) - ataOneValue.Add("SATA 6.0Gb/s is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PowerReceipt)) - ataOneValue.Add("Receipt of host initiated power management requests is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.PHYEventCounter)) - ataOneValue.Add("PHY Event counters are supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.HostSlumbTrans)) - ataOneValue.Add("Supports host automatic partial to slumber transitions is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.DevSlumbTrans)) - ataOneValue.Add("Supports device automatic partial to slumber transitions is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) - { - ataOneValue.Add("NCQ is supported"); - - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQPriority)) - ataOneValue.Add("NCQ priority is supported"); - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.UnloadNCQ)) - ataOneValue.Add("Unload is supported with outstanding NCQ commands"); - } - } - - if(!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) - { - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear) && - ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.NCQ)) - { - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQMgmt)) - ataOneValue.Add("NCQ queue management is supported"); - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.NCQStream)) - ataOneValue.Add("NCQ streaming is supported"); - } - - if(atapi) - { - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.HostEnvDetect)) - ataOneValue.Add("ATAPI device supports host environment detection"); - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.DevAttSlimline)) - ataOneValue.Add("ATAPI device supports attention on slimline connected devices"); - } - } - } - - if(ataIdentify.InterseekDelay != 0x0000 && ataIdentify.InterseekDelay != 0xFFFF) - ataOneValue.Add($"{ataIdentify.InterseekDelay} microseconds of interseek delay for ISO-7779 accoustic testing"); - - if((ushort)ataIdentify.DeviceFormFactor != 0x0000 && (ushort)ataIdentify.DeviceFormFactor != 0xFFFF) - switch(ataIdentify.DeviceFormFactor) - { - case Identify.DeviceFormFactorEnum.FiveAndQuarter: - ataOneValue.Add("Device nominal size is 5.25\""); - break; - case Identify.DeviceFormFactorEnum.ThreeAndHalf: - ataOneValue.Add("Device nominal size is 3.5\""); - break; - case Identify.DeviceFormFactorEnum.TwoAndHalf: - ataOneValue.Add("Device nominal size is 2.5\""); - break; - case Identify.DeviceFormFactorEnum.OnePointEight: - ataOneValue.Add("Device nominal size is 1.8\""); - break; - case Identify.DeviceFormFactorEnum.LessThanOnePointEight: - ataOneValue.Add("Device nominal size is smaller than 1.8\""); - break; - default: - ataOneValue.Add($"Device nominal size field value {ataIdentify.DeviceFormFactor} is unknown"); - break; - } - - if(atapi) - if(ataIdentify.ATAPIByteCount > 0) - ataOneValue.Add($"{ataIdentify.ATAPIByteCount} bytes count limit for ATAPI"); - - if(cfa) - if((ataIdentify.CFAPowerMode & 0x8000) == 0x8000) - { - ataOneValue.Add("CompactFlash device supports power mode 1"); - if((ataIdentify.CFAPowerMode & 0x2000) == 0x2000) - ataOneValue.Add("CompactFlash power mode 1 required for one or more commands"); - if((ataIdentify.CFAPowerMode & 0x1000) == 0x1000) - ataOneValue.Add("CompactFlash power mode 1 is disabled"); - - ataOneValue.Add($"CompactFlash device uses a maximum of {ataIdentify.CFAPowerMode & 0x0FFF} mA"); - } - - ataOneValue.Add("Command set and features:"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Nop)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Nop) - ? "NOP is supported and enabled" - : "NOP is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.ReadBuffer)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.ReadBuffer) - ? "READ BUFFER is supported and enabled" - : "READ BUFFER is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteBuffer)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.WriteBuffer) - ? "WRITE BUFFER is supported and enabled" - : "WRITE BUFFER is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.HPA)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.HPA) - ? "Host Protected Area is supported and enabled" - : "Host Protected Area is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.DeviceReset)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.DeviceReset) - ? "DEVICE RESET is supported and enabled" - : "DEVICE RESET is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Service)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Service) - ? "SERVICE interrupt is supported and enabled" - : "SERVICE interrupt is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Release)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Release) - ? "Release is supported and enabled" - : "Release is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.LookAhead)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.LookAhead) - ? "Look-ahead read is supported and enabled" - : "Look-ahead read is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.WriteCache)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.WriteCache) - ? "Write cache is supported and enabled" - : "Write cache is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.Packet)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.Packet) - ? "PACKET is supported and enabled" - : "PACKET is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.PowerManagement)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.PowerManagement) - ? "Power management is supported and enabled" - : "Power management is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.RemovableMedia)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.RemovableMedia) - ? "Removable media feature set is supported and enabled" - : "Removable media feature set is supported"); - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SecurityMode)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.SecurityMode) - ? "Security mode is supported and enabled" - : "Security mode is supported"); - if(ataIdentify.Capabilities.HasFlag(Identify.CapabilitiesBit.LBASupport)) - ataOneValue.Add("28-bit LBA is supported"); - - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeSet) && - !ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.MustBeClear)) - { - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.LBA48)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.LBA48) - ? "48-bit LBA is supported and enabled" - : "48-bit LBA is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCache)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.FlushCache) - ? "FLUSH CACHE is supported and enabled" - : "FLUSH CACHE is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.FlushCacheExt)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.FlushCacheExt) - ? "FLUSH CACHE EXT is supported and enabled" - : "FLUSH CACHE EXT is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DCO)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.DCO) - ? "Device Configuration Overlay feature set is supported and enabled" - : "Device Configuration Overlay feature set is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AAM)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.AAM) - ? $"Automatic Acoustic Management is supported and enabled with value {ataIdentify.CurrentAAM} (vendor recommends {ataIdentify.RecommendedAAM}" - : "Automatic Acoustic Management is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetMax)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.SetMax) - ? "SET MAX security extension is supported and enabled" - : "SET MAX security extension is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.AddressOffsetReservedAreaBoot)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2 - .AddressOffsetReservedAreaBoot) - ? "Address Offset Reserved Area Boot is supported and enabled" - : "Address Offset Reserved Area Boot is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.SetFeaturesRequired)) - ataOneValue.Add("SET FEATURES is required before spin-up"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.PowerUpInStandby)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.PowerUpInStandby) - ? "Power-up in standby is supported and enabled" - : "Power-up in standby is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RemovableNotification)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2 - .RemovableNotification) - ? "Removable Media Status Notification is supported and enabled" - : "Removable Media Status Notification is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.APM)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.APM) - ? $"Advanced Power Management is supported and enabled with value {ataIdentify.CurrentAPM}" - : "Advanced Power Management is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.CompactFlash)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.CompactFlash) - ? "CompactFlash feature set is supported and enabled" - : "CompactFlash feature set is supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.RWQueuedDMA)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.RWQueuedDMA) - ? "READ DMA QUEUED and WRITE DMA QUEUED are supported and enabled" - : "READ DMA QUEUED and WRITE DMA QUEUED are supported"); - if(ataIdentify.CommandSet2.HasFlag(Identify.CommandSetBit2.DownloadMicrocode)) - ataOneValue.Add(ataIdentify.EnabledCommandSet2.HasFlag(Identify.CommandSetBit2.DownloadMicrocode) - ? "DOWNLOAD MICROCODE is supported and enabled" - : "DOWNLOAD MICROCODE is supported"); - } - - if(ataIdentify.CommandSet.HasFlag(Identify.CommandSetBit.SMART)) - ataOneValue.Add(ataIdentify.EnabledCommandSet.HasFlag(Identify.CommandSetBit.SMART) - ? "S.M.A.R.T. is supported and enabled" - : "S.M.A.R.T. is supported"); - - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) - ataOneValue.Add("S.M.A.R.T. Command Transport is supported"); - - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && - !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear)) - { - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTSelfTest)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.SMARTSelfTest) - ? "S.M.A.R.T. self-testing is supported and enabled" - : "S.M.A.R.T. self-testing is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.SMARTLog)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.SMARTLog) - ? "S.M.A.R.T. error logging is supported and enabled" - : "S.M.A.R.T. error logging is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.IdleImmediate)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.IdleImmediate) - ? "IDLE IMMEDIATE with UNLOAD FEATURE is supported and enabled" - : "IDLE IMMEDIATE with UNLOAD FEATURE is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WriteURG)) - ataOneValue.Add("URG bit is supported in WRITE STREAM DMA EXT and WRITE STREAM EXT"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.ReadURG)) - ataOneValue.Add("URG bit is supported in READ STREAM DMA EXT and READ STREAM EXT"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.WWN)) - ataOneValue.Add("Device has a World Wide Name"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWriteQ)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.FUAWriteQ) - ? "WRITE DMA QUEUED FUA EXT is supported and enabled" - : "WRITE DMA QUEUED FUA EXT is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.FUAWrite)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.FUAWrite) - ? "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported and enabled" - : "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT are supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.GPL)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.GPL) - ? "General Purpose Logging is supported and enabled" - : "General Purpose Logging is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.Streaming) - ? "Streaming feature set is supported and enabled" - : "Streaming feature set is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MCPT)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.MCPT) - ? "Media Card Pass Through command set is supported and enabled" - : "Media Card Pass Through command set is supported"); - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MediaSerial)) - ataOneValue.Add(ataIdentify.EnabledCommandSet3.HasFlag(Identify.CommandSetBit3.MediaSerial) - ? "Media Serial is supported and valid" - : "Media Serial is supported"); - } - - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeSet) && - !ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.MustBeClear)) - { - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DSN)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.DSN) - ? "DSN feature set is supported and enabled" - : "DSN feature set is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.AMAC)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.AMAC) - ? "Accessible Max Address Configuration is supported and enabled" - : "Accessible Max Address Configuration is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtPowerCond)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.ExtPowerCond) - ? "Extended Power Conditions are supported and enabled" - : "Extended Power Conditions are supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.ExtStatusReport)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.ExtStatusReport) - ? "Extended Status Reporting is supported and enabled" - : "Extended Status Reporting is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.FreeFallControl)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.FreeFallControl) - ? "Free-fall control feature set is supported and enabled" - : "Free-fall control feature set is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.SegmentedDownloadMicrocode)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4 - .SegmentedDownloadMicrocode) - ? "Segmented feature in DOWNLOAD MICROCODE is supported and enabled" - : "Segmented feature in DOWNLOAD MICROCODE is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.RWDMAExtGpl)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.RWDMAExtGpl) - ? "READ/WRITE DMA EXT GPL are supported and enabled" - : "READ/WRITE DMA EXT GPL are supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WriteUnc)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WriteUnc) - ? "WRITE UNCORRECTABLE is supported and enabled" - : "WRITE UNCORRECTABLE is supported"); - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) - { - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WRV) - ? "Write/Read/Verify is supported and enabled" - : "Write/Read/Verify is supported"); - ataOneValue.Add($"{ataIdentify.WRVSectorCountMode2} sectors for Write/Read/Verify mode 2"); - ataOneValue.Add($"{ataIdentify.WRVSectorCountMode3} sectors for Write/Read/Verify mode 3"); - if(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.WRV)) - ataOneValue.Add($"Current Write/Read/Verify mode: {ataIdentify.WRVMode}"); - } - - if(ataIdentify.CommandSet4.HasFlag(Identify.CommandSetBit4.DT1825)) - ataOneValue.Add(ataIdentify.EnabledCommandSet4.HasFlag(Identify.CommandSetBit4.DT1825) - ? "DT1825 is supported and enabled" - : "DT1825 is supported"); - } - - if(true) - { - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.BlockErase)) - ataOneValue.Add("BLOCK ERASE EXT is supported"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Overwrite)) - ataOneValue.Add("OVERWRITE EXT is supported"); - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.CryptoScramble)) - ataOneValue.Add("CRYPTO SCRAMBLE EXT is supported"); - } - - if(true) - { - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeviceConfDMA)) - ataOneValue.Add("DEVICE CONFIGURATION IDENTIFY DMA and DEVICE CONFIGURATION SET DMA are supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadBufferDMA)) - ataOneValue.Add("READ BUFFER DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.WriteBufferDMA)) - ataOneValue.Add("WRITE BUFFER DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DownloadMicroCodeDMA)) - ataOneValue.Add("DOWNLOAD MICROCODE DMA is supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.SetMaxDMA)) - ataOneValue.Add("SET PASSWORD DMA and SET UNLOCK DMA are supported"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Ata28)) - ataOneValue.Add("Not all 28-bit commands are supported"); - - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.CFast)) - ataOneValue.Add("Device follows CFast specification"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.IEEE1667)) - ataOneValue.Add("Device follows IEEE-1667"); - - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.DeterministicTrim)) - { - ataOneValue.Add("Read after TRIM is deterministic"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ReadZeroTrim)) - ataOneValue.Add("Read after TRIM returns empty data"); - } - - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.LongPhysSectorAligError)) - ataOneValue.Add("Device supports Long Physical Sector Alignment Error Reporting Control"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.Encrypted)) - ataOneValue.Add("Device encrypts all user data"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.AllCacheNV)) - ataOneValue.Add("Device's write cache is non-volatile"); - if(ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit0) || - ataIdentify.CommandSet5.HasFlag(Identify.CommandSetBit5.ZonedBit1)) - ataOneValue.Add("Device is zoned"); - } - - if(true) - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.Sanitize)) - { - ataOneValue.Add("Sanitize feature set is supported"); - ataOneValue.Add(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.SanitizeCommands) - ? "Sanitize commands are specified by ACS-3 or higher" - : "Sanitize commands are specified by ACS-2"); - - if(ataIdentify.Capabilities3.HasFlag(Identify.CapabilitiesBit3.SanitizeAntifreeze)) - ataOneValue.Add("SANITIZE ANTIFREEZE LOCK EXT is supported"); - } - - if(!ata1 && maxatalevel >= 8) - if(ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Set) && - !ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.Clear) && - ataIdentify.TrustedComputing.HasFlag(Identify.TrustedComputingBit.TrustedComputing)) - ataOneValue.Add("Trusted Computing feature set is supported"); - - if((ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0x1 || - (ataIdentify.TransportMajorVersion & 0xF000) >> 12 == 0xE) - { - if(true) - if(!ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.Clear)) - if(ataIdentify.SATACapabilities.HasFlag(Identify.SATACapabilitiesBit.ReadLogDMAExt)) - ataOneValue.Add("READ LOG DMA EXT is supported"); - - if(true) - if(!ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.Clear)) - if(ataIdentify.SATACapabilities2.HasFlag(Identify.SATACapabilitiesBit2.FPDMAQ)) - ataOneValue.Add("RECEIVE FPDMA QUEUED and SEND FPDMA QUEUED are supported"); - - if(true) - if(!ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.Clear)) - { - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NonZeroBufferOffset)) - ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .NonZeroBufferOffset) - ? "Non-zero buffer offsets are supported and enabled" - : "Non-zero buffer offsets are supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.DMASetup)) - ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.DMASetup) - ? "DMA Setup auto-activation is supported and enabled" - : "DMA Setup auto-activation is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InitPowerMgmt)) - ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .InitPowerMgmt) - ? "Device-initiated power management is supported and enabled" - : "Device-initiated power management is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.InOrderData)) - ataOneValue.Add(ataIdentify.EnabledSATAFeatures - .HasFlag(Identify.SATAFeaturesBit.InOrderData) - ? "In-order data delivery is supported and enabled" - : "In-order data delivery is supported"); - if(!atapi) - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.HardwareFeatureControl)) - ataOneValue.Add(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit - .HardwareFeatureControl) - ? "Hardware Feature Control is supported and enabled" - : "Hardware Feature Control is supported"); - if(atapi) - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.AsyncNotification)) - ataOneValue.Add("Asynchronous notification is supported"); - else - ataOneValue.Add("Asynchronous notification is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.SettingsPreserve)) - ataOneValue.Add("Software Settings Preservation is supported"); - else - ataOneValue.Add("Software Settings Preservation is supported"); - if(ataIdentify.SATAFeatures.HasFlag(Identify.SATAFeaturesBit.NCQAutoSense)) - ataOneValue.Add("NCQ Autosense is supported"); - if(ataIdentify.EnabledSATAFeatures.HasFlag(Identify.SATAFeaturesBit.EnabledSlumber)) - ataOneValue.Add("Automatic Partial to Slumber transitions are enabled"); - } - } - - if((ataIdentify.RemovableStatusSet & 0x03) > 0) - ataOneValue.Add("Removable Media Status Notification feature set is supported"); - - if(ataIdentify.FreeFallSensitivity != 0x00 && ataIdentify.FreeFallSensitivity != 0xFF) - ataOneValue.Add($"Free-fall sensitivity set to {ataIdentify.FreeFallSensitivity}"); - - if(ataIdentify.DataSetMgmt.HasFlag(Identify.DataSetMgmtBit.Trim)) ataOneValue.Add("TRIM is supported"); - if(ataIdentify.DataSetMgmtSize > 0) - ataOneValue.Add($"DATA SET MANAGEMENT can receive a maximum of {ataIdentify.DataSetMgmtSize} blocks of 512 bytes"); - - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Supported)) - { - ataOneValue.Add("Security:"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enabled)) - { - ataOneValue.Add("Security is enabled"); - ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Locked) - ? "Security is locked" - : "Security is not locked"); - - ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Frozen) - ? "Security is frozen" - : "Security is not frozen"); - - ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Expired) - ? "Security count has expired" - : "Security count has notexpired"); - - ataOneValue.Add(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Maximum) - ? "Security level is maximum" - : "Security level is high"); - } - else ataOneValue.Add("Security is not enabled"); - - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) - ataOneValue.Add("Supports enhanced security erase"); - - ataOneValue.Add($"{ataIdentify.SecurityEraseTime * 2} minutes to complete secure erase"); - if(ataIdentify.SecurityStatus.HasFlag(Identify.SecurityStatusBit.Enhanced)) - ataOneValue - .Add($"{ataIdentify.EnhancedSecurityEraseTime * 2} minutes to complete enhanced secure erase"); - - ataOneValue.Add($"Master password revision code: {ataIdentify.MasterPasswordRevisionCode}"); - } - - if(ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeSet) && - !ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.MustBeClear) && - ataIdentify.CommandSet3.HasFlag(Identify.CommandSetBit3.Streaming)) - { - ataOneValue.Add("Streaming:"); - ataOneValue.Add($"Minimum request size is {ataIdentify.StreamMinReqSize}"); - ataOneValue.Add($"Streaming transfer time in PIO is {ataIdentify.StreamTransferTimePIO}"); - ataOneValue.Add($"Streaming transfer time in DMA is {ataIdentify.StreamTransferTimeDMA}"); - ataOneValue.Add($"Streaming access latency is {ataIdentify.StreamAccessLatency}"); - ataOneValue.Add($"Streaming performance granularity is {ataIdentify.StreamPerformanceGranularity}"); - } - - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.Supported)) - { - ataOneValue.Add("S.M.A.R.T. Command Transport (SCT):"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.LongSectorAccess)) - ataOneValue.Add("SCT Long Sector Address is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.WriteSame)) - ataOneValue.Add("SCT Write Same is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.ErrorRecoveryControl)) - ataOneValue.Add("SCT Error Recovery Control is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.FeaturesControl)) - ataOneValue.Add("SCT Features Control is supported"); - if(ataIdentify.SCTCommandTransport.HasFlag(Identify.SCTCommandTransportBit.DataTables)) - ataOneValue.Add("SCT Data Tables are supported"); - } - - if((ataIdentify.NVCacheCaps & 0x0010) == 0x0010) - { - ataOneValue.Add("Non-Volatile Cache:"); - ataOneValue.Add($"Version {(ataIdentify.NVCacheCaps & 0xF000) >> 12}"); - if((ataIdentify.NVCacheCaps & 0x0001) == 0x0001) - { - ataOneValue.Add((ataIdentify.NVCacheCaps & 0x0002) == 0x0002 - ? "Power mode feature set is supported and enabled" - : "Power mode feature set is supported"); - - ataOneValue.Add($"Version {(ataIdentify.NVCacheCaps & 0x0F00) >> 8}"); - } - - ataOneValue.Add($"Non-Volatile Cache is {ataIdentify.NVCacheSize * logicalsectorsize} bytes"); - } - - if(ataReport.ReadCapabilities != null) - { - removable = false; - ataOneValue.Add(""); - - if(ataReport.ReadCapabilities.NominalRotationRate != null && - ataReport.ReadCapabilities.NominalRotationRate != 0x0000 && - ataReport.ReadCapabilities.NominalRotationRate != 0xFFFF) - ataOneValue.Add(ataReport.ReadCapabilities.NominalRotationRate == 0x0001 - ? "Device does not rotate." - : $"Device rotates at {ataReport.ReadCapabilities.NominalRotationRate} rpm"); - - if(!atapi) - { - if(ataReport.ReadCapabilities.BlockSize != null) - { - ataTwoValue.Add("Logical sector size", $"{ataReport.ReadCapabilities.BlockSize} bytes"); - logicalsectorsize = ataReport.ReadCapabilities.BlockSize.Value; - } - - if(ataReport.ReadCapabilities.PhysicalBlockSize != null) - ataTwoValue.Add("Physical sector size", - $"{ataReport.ReadCapabilities.PhysicalBlockSize} bytes"); - if(ataReport.ReadCapabilities.LongBlockSize != null) - ataTwoValue.Add("READ LONG sector size", $"{ataReport.ReadCapabilities.LongBlockSize} bytes"); - - if(ataReport.ReadCapabilities.BlockSize != null && - ataReport.ReadCapabilities.PhysicalBlockSize != null && - ataReport.ReadCapabilities.BlockSize.Value != - ataReport.ReadCapabilities.PhysicalBlockSize.Value && - (ataReport.ReadCapabilities.LogicalAlignment & 0x8000) == 0x0000 && - (ataReport.ReadCapabilities.LogicalAlignment & 0x4000) == 0x4000) - ataOneValue - .Add($"Logical sector starts at offset {ataReport.ReadCapabilities.LogicalAlignment & 0x3FFF} from physical sector"); - - if(ataReport.ReadCapabilities.CHS != null && ataReport.ReadCapabilities.CurrentCHS != null) - { - int currentSectors = ataReport.ReadCapabilities.CurrentCHS.Cylinders * - ataReport.ReadCapabilities.CurrentCHS.Heads * - ataReport.ReadCapabilities.CurrentCHS.Sectors; - ataTwoValue.Add("Cylinders", - $"{ataReport.ReadCapabilities.CHS.Cylinders} max., {ataReport.ReadCapabilities.CurrentCHS.Cylinders} current"); - ataTwoValue.Add("Heads", - $"{ataReport.ReadCapabilities.CHS.Heads} max., {ataReport.ReadCapabilities.CurrentCHS.Heads} current"); - ataTwoValue.Add("Sectors per track", - $"{ataReport.ReadCapabilities.CHS.Sectors} max., {ataReport.ReadCapabilities.CurrentCHS.Sectors} current"); - ataTwoValue.Add("Sectors addressable in CHS mode", - $"{ataReport.ReadCapabilities.CHS.Cylinders * ataReport.ReadCapabilities.CHS.Heads * ataReport.ReadCapabilities.CHS.Sectors} max., {currentSectors} current"); - ataTwoValue.Add("Device size in CHS mode", - $"{(ulong)currentSectors * logicalsectorsize} bytes, {(ulong)currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); - } - else if(ataReport.ReadCapabilities.CHS != null) - { - int currentSectors = ataReport.ReadCapabilities.CHS.Cylinders * - ataReport.ReadCapabilities.CHS.Heads * - ataReport.ReadCapabilities.CHS.Sectors; - ataTwoValue.Add("Cylinders", - $"{ataReport.ReadCapabilities.CHS.Cylinders}"); - ataTwoValue.Add("Heads", $"{ataReport.ReadCapabilities.CHS.Heads}"); - ataTwoValue.Add("Sectors per track", $"{ataReport.ReadCapabilities.CHS.Sectors}"); - ataTwoValue.Add("Sectors addressable in CHS mode", $"{currentSectors}"); - ataTwoValue.Add("Device size in CHS mode", - $"{(ulong)currentSectors * logicalsectorsize} bytes, {(ulong)currentSectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); - } - - if(ataReport.ReadCapabilities.LBASectors != null) - { - ataTwoValue.Add("Sectors addressable in sectors in 28-bit LBA mode", - $"{ataReport.ReadCapabilities.LBASectors}"); - - if((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000000) - ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1024 / 1024 > 1000) - ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); - else - ataTwoValue.Add("Device size in 28-bit LBA mode", - $"{(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize} bytes, {(ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize / 1000 / 1000} Mb, {(double)((ulong)ataReport.ReadCapabilities.LBASectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); - } - - if(ataReport.ReadCapabilities.LBA48Sectors != null) - { - ataTwoValue.Add("Sectors addressable in sectors in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors}"); - - if(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000000) - ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1024 / 1024 > 1000) - ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000 / 1000} Gb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024 / 1024:F2} GiB"); - else - ataTwoValue.Add("Device size in 48-bit LBA mode", - $"{ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize} bytes, {ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize / 1000 / 1000} Mb, {(double)(ataReport.ReadCapabilities.LBA48Sectors * logicalsectorsize) / 1024 / 1024:F2} MiB"); - } - - if(ata1 || cfa) - { - if(ataReport.ReadCapabilities.UnformattedBPT > 0) - ataTwoValue.Add("Bytes per unformatted track", - $"{ataReport.ReadCapabilities.UnformattedBPT}"); - if(ataReport.ReadCapabilities.UnformattedBPS > 0) - ataTwoValue.Add("Bytes per unformatted sector", - $"{ataReport.ReadCapabilities.UnformattedBPS}"); - } - } - - if(ataReport.ReadCapabilities.SupportsReadSectors == true) - ataOneValue.Add("Device supports READ SECTOR(S) command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadRetry == true) - ataOneValue.Add("Device supports READ SECTOR(S) RETRY command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadDma == true) - ataOneValue.Add("Device supports READ DMA command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaRetry == true) - ataOneValue.Add("Device supports READ DMA RETRY command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadLong == true) - ataOneValue.Add("Device supports READ LONG command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsReadLongRetry == true) - ataOneValue.Add("Device supports READ LONG RETRY command in CHS mode"); - - if(ataReport.ReadCapabilities.SupportsReadLba == true) - ataOneValue.Add("Device supports READ SECTOR(S) command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadRetryLba == true) - ataOneValue.Add("Device supports READ SECTOR(S) RETRY command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaLba == true) - ataOneValue.Add("Device supports READ DMA command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaRetryLba == true) - ataOneValue.Add("Device supports READ DMA RETRY command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadLongLba == true) - ataOneValue.Add("Device supports READ LONG command in 28-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadLongRetryLba == true) - ataOneValue.Add("Device supports READ LONG RETRY command in 28-bit LBA mode"); - - if(ataReport.ReadCapabilities.SupportsReadLba48 == true) - ataOneValue.Add("Device supports READ SECTOR(S) command in 48-bit LBA mode"); - if(ataReport.ReadCapabilities.SupportsReadDmaLba48 == true) - ataOneValue.Add("Device supports READ DMA command in 48-bit LBA mode"); - - if(ataReport.ReadCapabilities.SupportsSeek == true) - ataOneValue.Add("Device supports SEEK command in CHS mode"); - if(ataReport.ReadCapabilities.SupportsSeekLba == true) - ataOneValue.Add("Device supports SEEK command in 28-bit LBA mode"); - } - else testedMedia = ataReport.RemovableMedias; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/RouteConfig.cs b/Server/DiscImageChef.Server/App_Start/RouteConfig.cs deleted file mode 100644 index 1c7e54136..000000000 --- a/Server/DiscImageChef.Server/App_Start/RouteConfig.cs +++ /dev/null @@ -1,50 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : RouteConfig.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets ASP.NET routing information. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Web.Mvc; -using System.Web.Routing; - -namespace DiscImageChef.Server -{ - public class RouteConfig - { - public static void RegisterRoutes(RouteCollection routes) - { - routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - - routes.MapMvcAttributeRoutes(); - - routes.MapRoute("Default", "{controller}/{action}/{id}", - new {controller = "Home", action = "Index", id = UrlParameter.Optional}); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/ScsiEvpd.cs b/Server/DiscImageChef.Server/App_Start/ScsiEvpd.cs deleted file mode 100644 index 9a290e8e7..000000000 --- a/Server/DiscImageChef.Server/App_Start/ScsiEvpd.cs +++ /dev/null @@ -1,93 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ScsiEvpd.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI EVPDs from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Decoders.SCSI; - -namespace DiscImageChef.Server -{ - public static class ScsiEvpd - { - /// - /// Takes the SCSI EVPD part of a device report and prints it as a list key=value pairs to be sequenced by ASP.NET in - /// the rendering - /// - /// EVPD pages - /// SCSI vendor string - /// List to put the key=value pairs on - public static void Report(IEnumerable pages, string vendor, ref Dictionary evpdPages) - { - foreach(ScsiPage evpd in pages) - { - string decoded; - if(evpd.page >= 0x01 && evpd.page <= 0x7F) decoded = EVPD.DecodeASCIIPage(evpd.value); - else if(evpd.page == 0x81) decoded = EVPD.PrettifyPage_81(evpd.value); - else if(evpd.page == 0x82) decoded = EVPD.DecodePage82(evpd.value); - else if(evpd.page == 0x83) decoded = EVPD.PrettifyPage_83(evpd.value); - else if(evpd.page == 0x84) decoded = EVPD.PrettifyPage_84(evpd.value); - else if(evpd.page == 0x85) decoded = EVPD.PrettifyPage_85(evpd.value); - else if(evpd.page == 0x86) decoded = EVPD.PrettifyPage_86(evpd.value); - else if(evpd.page == 0x89) decoded = EVPD.PrettifyPage_89(evpd.value); - else if(evpd.page == 0xB0) decoded = EVPD.PrettifyPage_B0(evpd.value); - else if(evpd.page == 0xB2) - decoded = - $"TapeAlert Supported Flags Bitmap: 0x{EVPD.DecodePageB2(evpd.value):X16}
"; - else if(evpd.page == 0xB4) decoded = EVPD.DecodePageB4(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "quantum") - decoded = EVPD.PrettifyPage_C0_Quantum(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "seagate") - decoded = - EVPD.PrettifyPage_C0_Seagate(evpd.value); - else if(evpd.page == 0xC0 && vendor.Trim() == "ibm") - decoded = EVPD.PrettifyPage_C0_IBM(evpd.value); - else if(evpd.page == 0xC1 && vendor.Trim() == "ibm") - decoded = EVPD.PrettifyPage_C1_IBM(evpd.value); - else if((evpd.page == 0xC0 || evpd.page == 0xC1) && vendor.Trim() == "certance") - decoded = EVPD.PrettifyPage_C0_C1_Certance(evpd.value); - else if((evpd.page == 0xC2 || evpd.page == 0xC3 || evpd.page == 0xC4 || evpd.page == 0xC5 || - evpd.page == 0xC6) && - vendor.Trim() == "certance") decoded = EVPD.PrettifyPage_C2_C3_C4_C5_C6_Certance(evpd.value); - else if((evpd.page == 0xC0 || evpd.page == 0xC1 || evpd.page == 0xC2 || evpd.page == 0xC3 || - evpd.page == 0xC4 || evpd.page == 0xC5) && - vendor.Trim() == "hp") decoded = EVPD.PrettifyPage_C0_to_C5_HP(evpd.value); - else if(evpd.page == 0xDF && vendor.Trim() == "certance") - decoded = EVPD.PrettifyPage_DF_Certance(evpd.value); - else decoded = "Undecoded"; - - if(!string.IsNullOrEmpty(decoded)) decoded = decoded.Replace("\n", "
"); - - evpdPages.Add($"EVPD page {evpd.page:X2}h", decoded); - } - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/ScsiInquiry.cs b/Server/DiscImageChef.Server/App_Start/ScsiInquiry.cs deleted file mode 100644 index 5701e276b..000000000 --- a/Server/DiscImageChef.Server/App_Start/ScsiInquiry.cs +++ /dev/null @@ -1,1703 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ScsiInquiry.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI INQUIRY from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.Decoders.SCSI; - -namespace DiscImageChef.Server -{ - static class ScsiInquiry - { - /// - /// Takes the SCSI INQUIRY part of a device report and prints it as a list of values to be sequenced by ASP.NET in the - /// rendering - /// - /// INQUIRY part of the report - /// List of values - internal static IEnumerable Report(Inquiry.SCSIInquiry? inquiryNullable) - { - List scsiOneValue = new List(); - - if(!inquiryNullable.HasValue) return scsiOneValue; - - Inquiry.SCSIInquiry inquiry = inquiryNullable.Value; - - switch((PeripheralQualifiers)inquiry.PeripheralQualifier) - { - case PeripheralQualifiers.Supported: - scsiOneValue.Add("Device is connected and supported."); - break; - case PeripheralQualifiers.Unconnected: - scsiOneValue.Add("Device is supported but not connected."); - break; - case PeripheralQualifiers.Reserved: - scsiOneValue.Add("Reserved value set in Peripheral Qualifier field."); - break; - case PeripheralQualifiers.Unsupported: - scsiOneValue.Add("Device is connected but unsupported."); - break; - default: - scsiOneValue.Add($"Vendor value {inquiry.PeripheralQualifier} set in Peripheral Qualifier field."); - break; - } - - switch((PeripheralDeviceTypes)inquiry.PeripheralDeviceType) - { - case PeripheralDeviceTypes.DirectAccess: //0x00, - scsiOneValue.Add("Direct-access device"); - break; - case PeripheralDeviceTypes.SequentialAccess: //0x01, - scsiOneValue.Add("Sequential-access device"); - break; - case PeripheralDeviceTypes.PrinterDevice: //0x02, - scsiOneValue.Add("Printer device"); - break; - case PeripheralDeviceTypes.ProcessorDevice: //0x03, - scsiOneValue.Add("Processor device"); - break; - case PeripheralDeviceTypes.WriteOnceDevice: //0x04, - scsiOneValue.Add("Write-once device"); - break; - case PeripheralDeviceTypes.MultiMediaDevice: //0x05, - scsiOneValue.Add("CD-ROM/DVD/etc device"); - break; - case PeripheralDeviceTypes.ScannerDevice: //0x06, - scsiOneValue.Add("Scanner device"); - break; - case PeripheralDeviceTypes.OpticalDevice: //0x07, - scsiOneValue.Add("Optical memory device"); - break; - case PeripheralDeviceTypes.MediumChangerDevice: //0x08, - scsiOneValue.Add("Medium change device"); - break; - case PeripheralDeviceTypes.CommsDevice: //0x09, - scsiOneValue.Add("Communications device"); - break; - case PeripheralDeviceTypes.PrePressDevice1: //0x0A, - scsiOneValue.Add("Graphics arts pre-press device (defined in ASC IT8)"); - break; - case PeripheralDeviceTypes.PrePressDevice2: //0x0B, - scsiOneValue.Add("Graphics arts pre-press device (defined in ASC IT8)"); - break; - case PeripheralDeviceTypes.ArrayControllerDevice: //0x0C, - scsiOneValue.Add("Array controller device"); - break; - case PeripheralDeviceTypes.EnclosureServiceDevice: //0x0D, - scsiOneValue.Add("Enclosure services device"); - break; - case PeripheralDeviceTypes.SimplifiedDevice: //0x0E, - scsiOneValue.Add("Simplified direct-access device"); - break; - case PeripheralDeviceTypes.OCRWDevice: //0x0F, - scsiOneValue.Add("Optical card reader/writer device"); - break; - case PeripheralDeviceTypes.BridgingExpander: //0x10, - scsiOneValue.Add("Bridging Expanders"); - break; - case PeripheralDeviceTypes.ObjectDevice: //0x11, - scsiOneValue.Add("Object-based Storage Device"); - break; - case PeripheralDeviceTypes.ADCDevice: //0x12, - scsiOneValue.Add("Automation/Drive Interface"); - break; - case PeripheralDeviceTypes.SCSISecurityManagerDevice: //0x13, - scsiOneValue.Add("Security Manager Device"); - break; - case PeripheralDeviceTypes.SCSIZonedBlockDevice: //0x14 - scsiOneValue.Add("Host managed zoned block device"); - break; - case PeripheralDeviceTypes.WellKnownDevice: //0x1E, - scsiOneValue.Add("Well known logical unit"); - break; - case PeripheralDeviceTypes.UnknownDevice: //0x1F - scsiOneValue.Add("Unknown or no device type"); - break; - default: - scsiOneValue.Add($"Unknown device type field value 0x{inquiry.PeripheralDeviceType:X2}"); - break; - } - - switch((ANSIVersions)inquiry.ANSIVersion) - { - case ANSIVersions.ANSINoVersion: - scsiOneValue.Add("Device does not claim to comply with any SCSI ANSI standard"); - break; - case ANSIVersions.ANSI1986Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.131:1986 (SCSI-1)"); - break; - case ANSIVersions.ANSI1994Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.131:1994 (SCSI-2)"); - break; - case ANSIVersions.ANSI1997Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.301:1997 (SPC-1)"); - break; - case ANSIVersions.ANSI2001Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.351:2001 (SPC-2)"); - break; - case ANSIVersions.ANSI2005Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.408:2005 (SPC-3)"); - break; - case ANSIVersions.ANSI2008Version: - scsiOneValue.Add("Device claims to comply with ANSI X3.408:2005 (SPC-4)"); - break; - default: - scsiOneValue - .Add($"Device claims to comply with unknown SCSI ANSI standard value 0x{inquiry.ANSIVersion:X2})"); - break; - } - - switch((ECMAVersions)inquiry.ECMAVersion) - { - case ECMAVersions.ECMANoVersion: - scsiOneValue.Add("Device does not claim to comply with any SCSI ECMA standard"); - break; - case ECMAVersions.ECMA111: - scsiOneValue.Add("Device claims to comply ECMA-111: Small Computer System Interface SCSI"); - break; - default: - scsiOneValue - .Add($"Device claims to comply with unknown SCSI ECMA standard value 0x{inquiry.ECMAVersion:X2})"); - break; - } - - switch((ISOVersions)inquiry.ISOVersion) - { - case ISOVersions.ISONoVersion: - scsiOneValue.Add("Device does not claim to comply with any SCSI ISO/IEC standard"); - break; - case ISOVersions.ISO1995Version: - scsiOneValue.Add("Device claims to comply with ISO/IEC 9316:1995"); - break; - default: - scsiOneValue - .Add($"Device claims to comply with unknown SCSI ISO/IEC standard value 0x{inquiry.ISOVersion:X2})"); - break; - } - - if(inquiry.RMB) scsiOneValue.Add("Device is removable"); - if(inquiry.AERC) scsiOneValue.Add("Device supports Asynchronous Event Reporting Capability"); - if(inquiry.TrmTsk) scsiOneValue.Add("Device supports TERMINATE TASK command"); - if(inquiry.NormACA) scsiOneValue.Add("Device supports setting Normal ACA"); - if(inquiry.HiSup) scsiOneValue.Add("Device supports LUN hierarchical addressing"); - if(inquiry.SCCS) scsiOneValue.Add("Device contains an embedded storage array controller"); - if(inquiry.ACC) scsiOneValue.Add("Device contains an Access Control Coordinator"); - if(inquiry.ThreePC) scsiOneValue.Add("Device supports third-party copy commands"); - if(inquiry.Protect) scsiOneValue.Add("Device supports protection information"); - if(inquiry.BQue) scsiOneValue.Add("Device supports basic queueing"); - if(inquiry.EncServ) scsiOneValue.Add("Device contains an embedded enclosure services component"); - if(inquiry.MultiP) scsiOneValue.Add("Multi-port device"); - if(inquiry.MChngr) scsiOneValue.Add("Device contains or is attached to a medium changer"); - if(inquiry.ACKREQQ) scsiOneValue.Add("Device supports request and acknowledge handshakes"); - if(inquiry.Addr32) scsiOneValue.Add("Device supports 32-bit wide SCSI addresses"); - if(inquiry.Addr16) scsiOneValue.Add("Device supports 16-bit wide SCSI addresses"); - if(inquiry.RelAddr) scsiOneValue.Add("Device supports relative addressing"); - if(inquiry.WBus32) scsiOneValue.Add("Device supports 32-bit wide data transfers"); - if(inquiry.WBus16) scsiOneValue.Add("Device supports 16-bit wide data transfers"); - if(inquiry.Sync) scsiOneValue.Add("Device supports synchronous data transfer"); - if(inquiry.Linked) scsiOneValue.Add("Device supports linked commands"); - if(inquiry.TranDis) scsiOneValue.Add("Device supports CONTINUE TASK and TARGET TRANSFER DISABLE commands"); - if(inquiry.QAS) scsiOneValue.Add("Device supports Quick Arbitration and Selection"); - if(inquiry.CmdQue) scsiOneValue.Add("Device supports TCQ queue"); - if(inquiry.IUS) scsiOneValue.Add("Device supports information unit transfers"); - if(inquiry.SftRe) scsiOneValue.Add("Device implements RESET as a soft reset"); - - switch((TGPSValues)inquiry.TPGS) - { - case TGPSValues.NotSupported: - scsiOneValue.Add("Device does not support assymetrical access"); - break; - case TGPSValues.OnlyImplicit: - scsiOneValue.Add("Device only supports implicit assymetrical access"); - break; - case TGPSValues.OnlyExplicit: - scsiOneValue.Add("Device only supports explicit assymetrical access"); - break; - case TGPSValues.Both: - scsiOneValue.Add("Device supports implicit and explicit assymetrical access"); - break; - default: - scsiOneValue.Add($"Unknown value in TPGS field 0x{inquiry.TPGS:X2}"); - break; - } - - switch((SPIClocking)inquiry.Clocking) - { - case SPIClocking.ST: - scsiOneValue.Add("Device supports only ST clocking"); - break; - case SPIClocking.DT: - scsiOneValue.Add("Device supports only DT clocking"); - break; - case SPIClocking.Reserved: - scsiOneValue.Add("Reserved value 0x02 found in SPI clocking field"); - break; - case SPIClocking.STandDT: - scsiOneValue.Add("Device supports ST and DT clocking"); - break; - default: - scsiOneValue.Add($"Unknown value in SPI clocking field 0x{inquiry.Clocking:X2}"); - break; - } - - if(inquiry.VersionDescriptors == null) return scsiOneValue; - - foreach(ushort versionDescriptor in inquiry.VersionDescriptors) - switch(versionDescriptor) - { - case 0xFFFF: - case 0x0000: break; - case 0x0020: - scsiOneValue.Add("Device complies with SAM (no version claimed)"); - break; - case 0x003B: - scsiOneValue.Add("Device complies with SAM T10/0994-D revision 18"); - break; - case 0x003C: - scsiOneValue.Add("Device complies with SAM ANSI INCITS 270-1996"); - break; - case 0x0040: - scsiOneValue.Add("Device complies with SAM-2 (no version claimed)"); - break; - case 0x0054: - scsiOneValue.Add("Device complies with SAM-2 T10/1157-D revision 23"); - break; - case 0x0055: - scsiOneValue.Add("Device complies with SAM-2 T10/1157-D revision 24"); - break; - case 0x005C: - scsiOneValue.Add("Device complies with SAM-2 ANSI INCITS 366-2003"); - break; - case 0x005E: - scsiOneValue.Add("Device complies with SAM-2 ISO/IEC 14776-412"); - break; - case 0x0060: - scsiOneValue.Add("Device complies with SAM-3 (no version claimed)"); - break; - case 0x0062: - scsiOneValue.Add("Device complies with SAM-3 T10/1561-D revision 7"); - break; - case 0x0075: - scsiOneValue.Add("Device complies with SAM-3 T10/1561-D revision 13"); - break; - case 0x0076: - scsiOneValue.Add("Device complies with SAM-3 T10/1561-D revision 14"); - break; - case 0x0077: - scsiOneValue.Add("Device complies with SAM-3 ANSI INCITS 402-2005"); - break; - case 0x0080: - scsiOneValue.Add("Device complies with SAM-4 (no version claimed)"); - break; - case 0x0087: - scsiOneValue.Add("Device complies with SAM-4 T10/1683-D revision 13"); - break; - case 0x008B: - scsiOneValue.Add("Device complies with SAM-4 T10/1683-D revision 14"); - break; - case 0x0090: - scsiOneValue.Add("Device complies with SAM-4 ANSI INCITS 447-2008"); - break; - case 0x0092: - scsiOneValue.Add("Device complies with SAM-4 ISO/IEC 14776-414"); - break; - case 0x00A0: - scsiOneValue.Add("Device complies with SAM-5 (no version claimed)"); - break; - case 0x00A2: - scsiOneValue.Add("Device complies with SAM-5 T10/2104-D revision 4"); - break; - case 0x00A4: - scsiOneValue.Add("Device complies with SAM-5 T10/2104-D revision 20"); - break; - case 0x00A6: - scsiOneValue.Add("Device complies with SAM-5 T10/2104-D revision 21"); - break; - case 0x00C0: - scsiOneValue.Add("Device complies with SAM-6 (no version claimed)"); - break; - case 0x0120: - scsiOneValue.Add("Device complies with SPC (no version claimed)"); - break; - case 0x013B: - scsiOneValue.Add("Device complies with SPC T10/0995-D revision 11a"); - break; - case 0x013C: - scsiOneValue.Add("Device complies with SPC ANSI INCITS 301-1997"); - break; - case 0x0140: - scsiOneValue.Add("Device complies with MMC (no version claimed)"); - break; - case 0x015B: - scsiOneValue.Add("Device complies with MMC T10/1048-D revision 10a"); - break; - case 0x015C: - scsiOneValue.Add("Device complies with MMC ANSI INCITS 304-1997"); - break; - case 0x0160: - scsiOneValue.Add("Device complies with SCC (no version claimed)"); - break; - case 0x017B: - scsiOneValue.Add("Device complies with SCC T10/1047-D revision 06c"); - break; - case 0x017C: - scsiOneValue.Add("Device complies with SCC ANSI INCITS 276-1997"); - break; - case 0x0180: - scsiOneValue.Add("Device complies with SBC (no version claimed)"); - break; - case 0x019B: - scsiOneValue.Add("Device complies with SBC T10/0996-D revision 08c"); - break; - case 0x019C: - scsiOneValue.Add("Device complies with SBC ANSI INCITS 306-1998"); - break; - case 0x01A0: - scsiOneValue.Add("Device complies with SMC (no version claimed)"); - break; - case 0x01BB: - scsiOneValue.Add("Device complies with SMC T10/0999-D revision 10a"); - break; - case 0x01BC: - scsiOneValue.Add("Device complies with SMC ANSI INCITS 314-1998"); - break; - case 0x01BE: - scsiOneValue.Add("Device complies with SMC ISO/IEC 14776-351"); - break; - case 0x01C0: - scsiOneValue.Add("Device complies with SES (no version claimed)"); - break; - case 0x01DB: - scsiOneValue.Add("Device complies with SES T10/1212-D revision 08b"); - break; - case 0x01DC: - scsiOneValue.Add("Device complies with SES ANSI INCITS 305-1998"); - break; - case 0x01DD: - scsiOneValue - .Add("Device complies with SES T10/1212 revision 08b w/ Amendment ANSI INCITS.305/AM1-2000"); - break; - case 0x01DE: - scsiOneValue - .Add("Device complies with SES ANSI INCITS 305-1998 w/ Amendment ANSI INCITS.305/AM1-2000"); - break; - case 0x01E0: - scsiOneValue.Add("Device complies with SCC-2 (no version claimed)"); - break; - case 0x01FB: - scsiOneValue.Add("Device complies with SCC-2 T10/1125-D revision 04"); - break; - case 0x01FC: - scsiOneValue.Add("Device complies with SCC-2 ANSI INCITS 318-1998"); - break; - case 0x0200: - scsiOneValue.Add("Device complies with SSC (no version claimed)"); - break; - case 0x0201: - scsiOneValue.Add("Device complies with SSC T10/0997-D revision 17"); - break; - case 0x0207: - scsiOneValue.Add("Device complies with SSC T10/0997-D revision 22"); - break; - case 0x021C: - scsiOneValue.Add("Device complies with SSC ANSI INCITS 335-2000"); - break; - case 0x0220: - scsiOneValue.Add("Device complies with RBC (no version claimed)"); - break; - case 0x0238: - scsiOneValue.Add("Device complies with RBC T10/1240-D revision 10a"); - break; - case 0x023C: - scsiOneValue.Add("Device complies with RBC ANSI INCITS 330-2000"); - break; - case 0x0240: - scsiOneValue.Add("Device complies with MMC-2 (no version claimed)"); - break; - case 0x0255: - scsiOneValue.Add("Device complies with MMC-2 T10/1228-D revision 11"); - break; - case 0x025B: - scsiOneValue.Add("Device complies with MMC-2 T10/1228-D revision 11a"); - break; - case 0x025C: - scsiOneValue.Add("Device complies with MMC-2 ANSI INCITS 333-2000"); - break; - case 0x0260: - scsiOneValue.Add("Device complies with SPC-2 (no version claimed)"); - break; - case 0x0267: - scsiOneValue.Add("Device complies with SPC-2 T10/1236-D revision 12"); - break; - case 0x0269: - scsiOneValue.Add("Device complies with SPC-2 T10/1236-D revision 18"); - break; - case 0x0275: - scsiOneValue.Add("Device complies with SPC-2 T10/1236-D revision 19"); - break; - case 0x0276: - scsiOneValue.Add("Device complies with SPC-2 T10/1236-D revision 20"); - break; - case 0x0277: - scsiOneValue.Add("Device complies with SPC-2 ANSI INCITS 351-2001"); - break; - case 0x0278: - scsiOneValue.Add("Device complies with SPC-2 ISO/IEC 14776-452"); - break; - case 0x0280: - scsiOneValue.Add("Device complies with OCRW (no version claimed)"); - break; - case 0x029E: - scsiOneValue.Add("Device complies with OCRW ISO/IEC 14776-381"); - break; - case 0x02A0: - scsiOneValue.Add("Device complies with MMC-3 (no version claimed)"); - break; - case 0x02B5: - scsiOneValue.Add("Device complies with MMC-3 T10/1363-D revision 9"); - break; - case 0x02B6: - scsiOneValue.Add("Device complies with MMC-3 T10/1363-D revision 10g"); - break; - case 0x02B8: - scsiOneValue.Add("Device complies with MMC-3 ANSI INCITS 360-2002"); - break; - case 0x02E0: - scsiOneValue.Add("Device complies with SMC-2 (no version claimed)"); - break; - case 0x02F5: - scsiOneValue.Add("Device complies with SMC-2 T10/1383-D revision 5"); - break; - case 0x02FC: - scsiOneValue.Add("Device complies with SMC-2 T10/1383-D revision 6"); - break; - case 0x02FD: - scsiOneValue.Add("Device complies with SMC-2 T10/1383-D revision 7"); - break; - case 0x02FE: - scsiOneValue.Add("Device complies with SMC-2 ANSI INCITS 382-2004"); - break; - case 0x0300: - scsiOneValue.Add("Device complies with SPC-3 (no version claimed)"); - break; - case 0x0301: - scsiOneValue.Add("Device complies with SPC-3 T10/1416-D revision 7"); - break; - case 0x0307: - scsiOneValue.Add("Device complies with SPC-3 T10/1416-D revision 21"); - break; - case 0x030F: - scsiOneValue.Add("Device complies with SPC-3 T10/1416-D revision 22"); - break; - case 0x0312: - scsiOneValue.Add("Device complies with SPC-3 T10/1416-D revision 23"); - break; - case 0x0314: - scsiOneValue.Add("Device complies with SPC-3 ANSI INCITS 408-2005"); - break; - case 0x0316: - scsiOneValue.Add("Device complies with SPC-3 ISO/IEC 14776-453"); - break; - case 0x0320: - scsiOneValue.Add("Device complies with SBC-2 (no version claimed)"); - break; - case 0x0322: - scsiOneValue.Add("Device complies with SBC-2 T10/1417-D revision 5a"); - break; - case 0x0324: - scsiOneValue.Add("Device complies with SBC-2 T10/1417-D revision 15"); - break; - case 0x033B: - scsiOneValue.Add("Device complies with SBC-2 T10/1417-D revision 16"); - break; - case 0x033D: - scsiOneValue.Add("Device complies with SBC-2 ANSI INCITS 405-2005"); - break; - case 0x033E: - scsiOneValue.Add("Device complies with SBC-2 ISO/IEC 14776-322"); - break; - case 0x0340: - scsiOneValue.Add("Device complies with OSD (no version claimed)"); - break; - case 0x0341: - scsiOneValue.Add("Device complies with OSD T10/1355-D revision 0"); - break; - case 0x0342: - scsiOneValue.Add("Device complies with OSD T10/1355-D revision 7a"); - break; - case 0x0343: - scsiOneValue.Add("Device complies with OSD T10/1355-D revision 8"); - break; - case 0x0344: - scsiOneValue.Add("Device complies with OSD T10/1355-D revision 9"); - break; - case 0x0355: - scsiOneValue.Add("Device complies with OSD T10/1355-D revision 10"); - break; - case 0x0356: - scsiOneValue.Add("Device complies with OSD ANSI INCITS 400-2004"); - break; - case 0x0360: - scsiOneValue.Add("Device complies with SSC-2 (no version claimed)"); - break; - case 0x0374: - scsiOneValue.Add("Device complies with SSC-2 T10/1434-D revision 7"); - break; - case 0x0375: - scsiOneValue.Add("Device complies with SSC-2 T10/1434-D revision 9"); - break; - case 0x037D: - scsiOneValue.Add("Device complies with SSC-2 ANSI INCITS 380-2003"); - break; - case 0x0380: - scsiOneValue.Add("Device complies with BCC (no version claimed)"); - break; - case 0x03A0: - scsiOneValue.Add("Device complies with MMC-4 (no version claimed)"); - break; - case 0x03B0: - scsiOneValue.Add("Device complies with MMC-4 T10/1545-D revision 5"); - break; - case 0x03B1: - scsiOneValue.Add("Device complies with MMC-4 T10/1545-D revision 5a"); - break; - case 0x03BD: - scsiOneValue.Add("Device complies with MMC-4 T10/1545-D revision 3"); - break; - case 0x03BE: - scsiOneValue.Add("Device complies with MMC-4 T10/1545-D revision 3d"); - break; - case 0x03BF: - scsiOneValue.Add("Device complies with MMC-4 ANSI INCITS 401-2005"); - break; - case 0x03C0: - scsiOneValue.Add("Device complies with ADC (no version claimed)"); - break; - case 0x03D5: - scsiOneValue.Add("Device complies with ADC T10/1558-D revision 6"); - break; - case 0x03D6: - scsiOneValue.Add("Device complies with ADC T10/1558-D revision 7"); - break; - case 0x03D7: - scsiOneValue.Add("Device complies with ADC ANSI INCITS 403-2005"); - break; - case 0x03E0: - scsiOneValue.Add("Device complies with SES-2 (no version claimed)"); - break; - case 0x03E1: - scsiOneValue.Add("Device complies with SES-2 T10/1559-D revision 16"); - break; - case 0x03E7: - scsiOneValue.Add("Device complies with SES-2 T10/1559-D revision 19"); - break; - case 0x03EB: - scsiOneValue.Add("Device complies with SES-2 T10/1559-D revision 20"); - break; - case 0x03F0: - scsiOneValue.Add("Device complies with SES-2 ANSI INCITS 448-2008"); - break; - case 0x03F2: - scsiOneValue.Add("Device complies with SES-2 ISO/IEC 14776-372"); - break; - case 0x0400: - scsiOneValue.Add("Device complies with SSC-3 (no version claimed)"); - break; - case 0x0403: - scsiOneValue.Add("Device complies with SSC-3 T10/1611-D revision 04a"); - break; - case 0x0407: - scsiOneValue.Add("Device complies with SSC-3 T10/1611-D revision 05"); - break; - case 0x0409: - scsiOneValue.Add("Device complies with SSC-3 ANSI INCITS 467-2011"); - break; - case 0x040B: - scsiOneValue.Add("Device complies with SSC-3 ISO/IEC 14776-333:2013"); - break; - case 0x0420: - scsiOneValue.Add("Device complies with MMC-5 (no version claimed)"); - break; - case 0x042F: - scsiOneValue.Add("Device complies with MMC-5 T10/1675-D revision 03"); - break; - case 0x0431: - scsiOneValue.Add("Device complies with MMC-5 T10/1675-D revision 03b"); - break; - case 0x0432: - scsiOneValue.Add("Device complies with MMC-5 T10/1675-D revision 04"); - break; - case 0x0434: - scsiOneValue.Add("Device complies with MMC-5 ANSI INCITS 430-2007"); - break; - case 0x0440: - scsiOneValue.Add("Device complies with OSD-2 (no version claimed)"); - break; - case 0x0444: - scsiOneValue.Add("Device complies with OSD-2 T10/1729-D revision 4"); - break; - case 0x0446: - scsiOneValue.Add("Device complies with OSD-2 T10/1729-D revision 5"); - break; - case 0x0448: - scsiOneValue.Add("Device complies with OSD-2 ANSI INCITS 458-2011"); - break; - case 0x0460: - scsiOneValue.Add("Device complies with SPC-4 (no version claimed)"); - break; - case 0x0461: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 16"); - break; - case 0x0462: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 18"); - break; - case 0x0463: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 23"); - break; - case 0x0466: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 36"); - break; - case 0x0468: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 37"); - break; - case 0x0469: - scsiOneValue.Add("Device complies with SPC-4 T10/BSR INCITS 513 revision 37a"); - break; - case 0x046C: - scsiOneValue.Add("Device complies with SPC-4 ANSI INCITS 513-2015"); - break; - case 0x0480: - scsiOneValue.Add("Device complies with SMC-3 (no version claimed)"); - break; - case 0x0482: - scsiOneValue.Add("Device complies with SMC-3 T10/1730-D revision 15"); - break; - case 0x0484: - scsiOneValue.Add("Device complies with SMC-3 T10/1730-D revision 16"); - break; - case 0x0486: - scsiOneValue.Add("Device complies with SMC-3 ANSI INCITS 484-2012"); - break; - case 0x04A0: - scsiOneValue.Add("Device complies with ADC-2 (no version claimed)"); - break; - case 0x04A7: - scsiOneValue.Add("Device complies with ADC-2 T10/1741-D revision 7"); - break; - case 0x04AA: - scsiOneValue.Add("Device complies with ADC-2 T10/1741-D revision 8"); - break; - case 0x04AC: - scsiOneValue.Add("Device complies with ADC-2 ANSI INCITS 441-2008"); - break; - case 0x04C0: - scsiOneValue.Add("Device complies with SBC-3 (no version claimed)"); - break; - case 0x04C3: - scsiOneValue.Add("Device complies with SBC-3 T10/BSR INCITS 514 revision 35"); - break; - case 0x04C5: - scsiOneValue.Add("Device complies with SBC-3 T10/BSR INCITS 514 revision 36"); - break; - case 0x04C8: - scsiOneValue.Add("Device complies with SBC-3 ANSI INCITS 514-2014"); - break; - case 0x04E0: - scsiOneValue.Add("Device complies with MMC-6 (no version claimed)"); - break; - case 0x04E3: - scsiOneValue.Add("Device complies with MMC-6 T10/1836-D revision 02b"); - break; - case 0x04E5: - scsiOneValue.Add("Device complies with MMC-6 T10/1836-D revision 02g"); - break; - case 0x04E6: - scsiOneValue.Add("Device complies with MMC-6 ANSI INCITS 468-2010"); - break; - case 0x04E7: - scsiOneValue - .Add("Device complies with MMC-6 ANSI INCITS 468-2010 + MMC-6/AM1 ANSI INCITS 468-2010/AM 1"); - break; - case 0x0500: - scsiOneValue.Add("Device complies with ADC-3 (no version claimed)"); - break; - case 0x0502: - scsiOneValue.Add("Device complies with ADC-3 T10/1895-D revision 04"); - break; - case 0x0504: - scsiOneValue.Add("Device complies with ADC-3 T10/1895-D revision 05"); - break; - case 0x0506: - scsiOneValue.Add("Device complies with ADC-3 T10/1895-D revision 05a"); - break; - case 0x050A: - scsiOneValue.Add("Device complies with ADC-3 ANSI INCITS 497-2012"); - break; - case 0x0520: - scsiOneValue.Add("Device complies with SSC-4 (no version claimed)"); - break; - case 0x0523: - scsiOneValue.Add("Device complies with SSC-4 T10/BSR INCITS 516 revision 2"); - break; - case 0x0525: - scsiOneValue.Add("Device complies with SSC-4 T10/BSR INCITS 516 revision 3"); - break; - case 0x0527: - scsiOneValue.Add("Device complies with SSC-4 ANSI INCITS 516-2013"); - break; - case 0x0560: - scsiOneValue.Add("Device complies with OSD-3 (no version claimed)"); - break; - case 0x0580: - scsiOneValue.Add("Device complies with SES-3 (no version claimed)"); - break; - case 0x05A0: - scsiOneValue.Add("Device complies with SSC-5 (no version claimed)"); - break; - case 0x05C0: - scsiOneValue.Add("Device complies with SPC-5 (no version claimed)"); - break; - case 0x05E0: - scsiOneValue.Add("Device complies with SFSC (no version claimed)"); - break; - case 0x05E3: - scsiOneValue.Add("Device complies with SFSC BSR INCITS 501 revision 01"); - break; - case 0x0600: - scsiOneValue.Add("Device complies with SBC-4 (no version claimed)"); - break; - case 0x0620: - scsiOneValue.Add("Device complies with ZBC (no version claimed)"); - break; - case 0x0622: - scsiOneValue.Add("Device complies with ZBC BSR INCITS 536 revision 02"); - break; - case 0x0640: - scsiOneValue.Add("Device complies with ADC-4 (no version claimed)"); - break; - case 0x0820: - scsiOneValue.Add("Device complies with SSA-TL2 (no version claimed)"); - break; - case 0x083B: - scsiOneValue.Add("Device complies with SSA-TL2 T10.1/1147-D revision 05b"); - break; - case 0x083C: - scsiOneValue.Add("Device complies with SSA-TL2 ANSI INCITS 308-1998"); - break; - case 0x0840: - scsiOneValue.Add("Device complies with SSA-TL1 (no version claimed)"); - break; - case 0x085B: - scsiOneValue.Add("Device complies with SSA-TL1 T10.1/0989-D revision 10b"); - break; - case 0x085C: - scsiOneValue.Add("Device complies with SSA-TL1 ANSI INCITS 295-1996"); - break; - case 0x0860: - scsiOneValue.Add("Device complies with SSA-S3P (no version claimed)"); - break; - case 0x087B: - scsiOneValue.Add("Device complies with SSA-S3P T10.1/1051-D revision 05b"); - break; - case 0x087C: - scsiOneValue.Add("Device complies with SSA-S3P ANSI INCITS 309-1998"); - break; - case 0x0880: - scsiOneValue.Add("Device complies with SSA-S2P (no version claimed)"); - break; - case 0x089B: - scsiOneValue.Add("Device complies with SSA-S2P T10.1/1121-D revision 07b"); - break; - case 0x089C: - scsiOneValue.Add("Device complies with SSA-S2P ANSI INCITS 294-1996"); - break; - case 0x08A0: - scsiOneValue.Add("Device complies with SIP (no version claimed)"); - break; - case 0x08BB: - scsiOneValue.Add("Device complies with SIP T10/0856-D revision 10"); - break; - case 0x08BC: - scsiOneValue.Add("Device complies with SIP ANSI INCITS 292-1997"); - break; - case 0x08C0: - scsiOneValue.Add("Device complies with FCP (no version claimed)"); - break; - case 0x08DB: - scsiOneValue.Add("Device complies with FCP T10/0993-D revision 12"); - break; - case 0x08DC: - scsiOneValue.Add("Device complies with FCP ANSI INCITS 269-1996"); - break; - case 0x08E0: - scsiOneValue.Add("Device complies with SBP-2 (no version claimed)"); - break; - case 0x08FB: - scsiOneValue.Add("Device complies with SBP-2 T10/1155-D revision 04"); - break; - case 0x08FC: - scsiOneValue.Add("Device complies with SBP-2 ANSI INCITS 325-1998"); - break; - case 0x0900: - scsiOneValue.Add("Device complies with FCP-2 (no version claimed)"); - break; - case 0x0901: - scsiOneValue.Add("Device complies with FCP-2 T10/1144-D revision 4"); - break; - case 0x0915: - scsiOneValue.Add("Device complies with FCP-2 T10/1144-D revision 7"); - break; - case 0x0916: - scsiOneValue.Add("Device complies with FCP-2 T10/1144-D revision 7a"); - break; - case 0x0917: - scsiOneValue.Add("Device complies with FCP-2 ANSI INCITS 350-2003"); - break; - case 0x0918: - scsiOneValue.Add("Device complies with FCP-2 T10/1144-D revision 8"); - break; - case 0x0920: - scsiOneValue.Add("Device complies with SST (no version claimed)"); - break; - case 0x0935: - scsiOneValue.Add("Device complies with SST T10/1380-D revision 8b"); - break; - case 0x0940: - scsiOneValue.Add("Device complies with SRP (no version claimed)"); - break; - case 0x0954: - scsiOneValue.Add("Device complies with SRP T10/1415-D revision 10"); - break; - case 0x0955: - scsiOneValue.Add("Device complies with SRP T10/1415-D revision 16a"); - break; - case 0x095C: - scsiOneValue.Add("Device complies with SRP ANSI INCITS 365-2002"); - break; - case 0x0960: - scsiOneValue.Add("Device complies with iSCSI (no version claimed)"); - break; - case 0x0961: - case 0x0962: - case 0x0963: - case 0x0964: - case 0x0965: - case 0x0966: - case 0x0967: - case 0x0968: - case 0x0969: - case 0x096A: - case 0x096B: - case 0x096C: - case 0x096D: - case 0x096E: - case 0x096F: - case 0x0970: - case 0x0971: - case 0x0972: - case 0x0973: - case 0x0974: - case 0x0975: - case 0x0976: - case 0x0977: - case 0x0978: - case 0x0979: - case 0x097A: - case 0x097B: - case 0x097C: - case 0x097D: - case 0x097E: - case 0x097F: - scsiOneValue.Add($"Device complies with iSCSI revision {versionDescriptor & 0x1F}"); - break; - case 0x0980: - scsiOneValue.Add("Device complies with SBP-3 (no version claimed)"); - break; - case 0x0982: - scsiOneValue.Add("Device complies with SBP-3 T10/1467-D revision 1f"); - break; - case 0x0994: - scsiOneValue.Add("Device complies with SBP-3 T10/1467-D revision 3"); - break; - case 0x099A: - scsiOneValue.Add("Device complies with SBP-3 T10/1467-D revision 4"); - break; - case 0x099B: - scsiOneValue.Add("Device complies with SBP-3 T10/1467-D revision 5"); - break; - case 0x099C: - scsiOneValue.Add("Device complies with SBP-3 ANSI INCITS 375-2004"); - break; - case 0x09C0: - scsiOneValue.Add("Device complies with ADP (no version claimed)"); - break; - case 0x09E0: - scsiOneValue.Add("Device complies with ADT (no version claimed)"); - break; - case 0x09F9: - scsiOneValue.Add("Device complies with ADT T10/1557-D revision 11"); - break; - case 0x09FA: - scsiOneValue.Add("Device complies with ADT T10/1557-D revision 14"); - break; - case 0x09FD: - scsiOneValue.Add("Device complies with ADT ANSI INCITS 406-2005"); - break; - case 0x0A00: - scsiOneValue.Add("Device complies with FCP-3 (no version claimed)"); - break; - case 0x0A07: - scsiOneValue.Add("Device complies with FCP-3 T10/1560-D revision 3f"); - break; - case 0x0A0F: - scsiOneValue.Add("Device complies with FCP-3 T10/1560-D revision 4"); - break; - case 0x0A11: - scsiOneValue.Add("Device complies with FCP-3 ANSI INCITS 416-2006"); - break; - case 0x0A1C: - scsiOneValue.Add("Device complies with FCP-3 ISO/IEC 14776-223"); - break; - case 0x0A20: - scsiOneValue.Add("Device complies with ADT-2 (no version claimed)"); - break; - case 0x0A22: - scsiOneValue.Add("Device complies with ADT-2 T10/1742-D revision 06"); - break; - case 0x0A27: - scsiOneValue.Add("Device complies with ADT-2 T10/1742-D revision 08"); - break; - case 0x0A28: - scsiOneValue.Add("Device complies with ADT-2 T10/1742-D revision 09"); - break; - case 0x0A2B: - scsiOneValue.Add("Device complies with ADT-2 ANSI INCITS 472-2011"); - break; - case 0x0A40: - scsiOneValue.Add("Device complies with FCP-4 (no version claimed)"); - break; - case 0x0A42: - scsiOneValue.Add("Device complies with FCP-4 T10/1828-D revision 01"); - break; - case 0x0A44: - scsiOneValue.Add("Device complies with FCP-4 T10/1828-D revision 02"); - break; - case 0x0A45: - scsiOneValue.Add("Device complies with FCP-4 T10/1828-D revision 02b"); - break; - case 0x0A46: - scsiOneValue.Add("Device complies with FCP-4 ANSI INCITS 481-2012"); - break; - case 0x0A60: - scsiOneValue.Add("Device complies with ADT-3 (no version claimed)"); - break; - case 0x0AA0: - scsiOneValue.Add("Device complies with SPI (no version claimed)"); - break; - case 0x0AB9: - scsiOneValue.Add("Device complies with SPI T10/0855-D revision 15a"); - break; - case 0x0ABA: - scsiOneValue.Add("Device complies with SPI ANSI INCITS 253-1995"); - break; - case 0x0ABB: - scsiOneValue.Add("Device complies with SPI T10/0855-D revision 15a with SPI Amnd revision 3a"); - break; - case 0x0ABC: - scsiOneValue - .Add("Device complies with SPI ANSI INCITS 253-1995 with SPI Amnd ANSI INCITS 253/AM1-1998"); - break; - case 0x0AC0: - scsiOneValue.Add("Device complies with Fast-20 (no version claimed)"); - break; - case 0x0ADB: - scsiOneValue.Add("Device complies with Fast-20 T10/1071 revision 06"); - break; - case 0x0ADC: - scsiOneValue.Add("Device complies with Fast-20 ANSI INCITS 277-1996"); - break; - case 0x0AE0: - scsiOneValue.Add("Device complies with SPI-2 (no version claimed)"); - break; - case 0x0AFB: - scsiOneValue.Add("Device complies with SPI-2 T10/1142-D revision 20b"); - break; - case 0x0AFC: - scsiOneValue.Add("Device complies with SPI-2 ANSI INCITS 302-1999"); - break; - case 0x0B00: - scsiOneValue.Add("Device complies with SPI-3 (no version claimed)"); - break; - case 0x0B18: - scsiOneValue.Add("Device complies with SPI-3 T10/1302-D revision 10"); - break; - case 0x0B19: - scsiOneValue.Add("Device complies with SPI-3 T10/1302-D revision 13a"); - break; - case 0x0B1A: - scsiOneValue.Add("Device complies with SPI-3 T10/1302-D revision 14"); - break; - case 0x0B1C: - scsiOneValue.Add("Device complies with SPI-3 ANSI INCITS 336-2000"); - break; - case 0x0B20: - scsiOneValue.Add("Device complies with EPI (no version claimed)"); - break; - case 0x0B3B: - scsiOneValue.Add("Device complies with EPI T10/1134 revision 16"); - break; - case 0x0B3C: - scsiOneValue.Add("Device complies with EPI ANSI INCITS TR-23 1999"); - break; - case 0x0B40: - scsiOneValue.Add("Device complies with SPI-4 (no version claimed)"); - break; - case 0x0B54: - scsiOneValue.Add("Device complies with SPI-4 T10/1365-D revision 7"); - break; - case 0x0B55: - scsiOneValue.Add("Device complies with SPI-4 T10/1365-D revision 9"); - break; - case 0x0B56: - scsiOneValue.Add("Device complies with SPI-4 ANSI INCITS 362-2002"); - break; - case 0x0B59: - scsiOneValue.Add("Device complies with SPI-4 T10/1365-D revision 10"); - break; - case 0x0B60: - scsiOneValue.Add("Device complies with SPI-5 (no version claimed)"); - break; - case 0x0B79: - scsiOneValue.Add("Device complies with SPI-5 T10/1525-D revision 3"); - break; - case 0x0B7A: - scsiOneValue.Add("Device complies with SPI-5 T10/1525-D revision 5"); - break; - case 0x0B7B: - scsiOneValue.Add("Device complies with SPI-5 T10/1525-D revision 6"); - break; - case 0x0B7C: - scsiOneValue.Add("Device complies with SPI-5 ANSI INCITS 367-2003"); - break; - case 0x0BE0: - scsiOneValue.Add("Device complies with SAS (no version claimed)"); - break; - case 0x0BE1: - scsiOneValue.Add("Device complies with SAS T10/1562-D revision 01"); - break; - case 0x0BF5: - scsiOneValue.Add("Device complies with SAS T10/1562-D revision 03"); - break; - case 0x0BFA: - scsiOneValue.Add("Device complies with SAS T10/1562-D revision 04"); - break; - case 0x0BFB: - scsiOneValue.Add("Device complies with SAS T10/1562-D revision 04"); - break; - case 0x0BFC: - scsiOneValue.Add("Device complies with SAS T10/1562-D revision 05"); - break; - case 0x0BFD: - scsiOneValue.Add("Device complies with SAS ANSI INCITS 376-2003"); - break; - case 0x0C00: - scsiOneValue.Add("Device complies with SAS-1.1 (no version claimed)"); - break; - case 0x0C07: - scsiOneValue.Add("Device complies with SAS-1.1 T10/1601-D revision 9"); - break; - case 0x0C0F: - scsiOneValue.Add("Device complies with SAS-1.1 T10/1601-D revision 10"); - break; - case 0x0C11: - scsiOneValue.Add("Device complies with SAS-1.1 ANSI INCITS 417-2006"); - break; - case 0x0C12: - scsiOneValue.Add("Device complies with SAS-1.1 ISO/IEC 14776-151"); - break; - case 0x0C20: - scsiOneValue.Add("Device complies with SAS-2 (no version claimed)"); - break; - case 0x0C23: - scsiOneValue.Add("Device complies with SAS-2 T10/1760-D revision 14"); - break; - case 0x0C27: - scsiOneValue.Add("Device complies with SAS-2 T10/1760-D revision 15"); - break; - case 0x0C28: - scsiOneValue.Add("Device complies with SAS-2 T10/1760-D revision 16"); - break; - case 0x0C2A: - scsiOneValue.Add("Device complies with SAS-2 ANSI INCITS 457-2010"); - break; - case 0x0C40: - scsiOneValue.Add("Device complies with SAS-2.1 (no version claimed)"); - break; - case 0x0C48: - scsiOneValue.Add("Device complies with SAS-2.1 T10/2125-D revision 04"); - break; - case 0x0C4A: - scsiOneValue.Add("Device complies with SAS-2.1 T10/2125-D revision 06"); - break; - case 0x0C4B: - scsiOneValue.Add("Device complies with SAS-2.1 T10/2125-D revision 07"); - break; - case 0x0C4E: - scsiOneValue.Add("Device complies with SAS-2.1 ANSI INCITS 478-2011"); - break; - case 0x0C4F: - scsiOneValue - .Add("Device complies with SAS-2.1 ANSI INCITS 478-2011 w/ Amnd 1 ANSI INCITS 478/AM1-2014"); - break; - case 0x0C52: - scsiOneValue.Add("Device complies with SAS-2.1 ISO/IEC 14776-153"); - break; - case 0x0C60: - scsiOneValue.Add("Device complies with SAS-3 (no version claimed)"); - break; - case 0x0C63: - scsiOneValue.Add("Device complies with SAS-3 T10/BSR INCITS 519 revision 05a"); - break; - case 0x0C65: - scsiOneValue.Add("Device complies with SAS-3 T10/BSR INCITS 519 revision 06"); - break; - case 0x0C68: - scsiOneValue.Add("Device complies with SAS-3 ANSI INCITS 519-2014"); - break; - case 0x0C80: - scsiOneValue.Add("Device complies with SAS-4 (no version claimed)"); - break; - case 0x0D20: - scsiOneValue.Add("Device complies with FC-PH (no version claimed)"); - break; - case 0x0D3B: - scsiOneValue.Add("Device complies with FC-PH ANSI INCITS 230-1994"); - break; - case 0x0D3C: - scsiOneValue - .Add("Device complies with FC-PH ANSI INCITS 230-1994 with Amnd 1 ANSI INCITS 230/AM1-1996"); - break; - case 0x0D40: - scsiOneValue.Add("Device complies with FC-AL (no version claimed)"); - break; - case 0x0D5C: - scsiOneValue.Add("Device complies with FC-AL ANSI INCITS 272-1996"); - break; - case 0x0D60: - scsiOneValue.Add("Device complies with FC-AL-2 (no version claimed)"); - break; - case 0x0D61: - scsiOneValue.Add("Device complies with FC-AL-2 T11/1133-D revision 7.0"); - break; - case 0x0D63: - scsiOneValue.Add("Device complies with FC-AL-2 ANSI INCITS 332-1999 with AM1-2003 & AM2-2006"); - break; - case 0x0D64: - scsiOneValue.Add("Device complies with FC-AL-2 ANSI INCITS 332-1999 with Amnd 2 AM2-2006"); - break; - case 0x0D65: - scsiOneValue.Add("Device complies with FC-AL-2 ISO/IEC 14165-122 with AM1 & AM2"); - break; - case 0x0D7C: - scsiOneValue.Add("Device complies with FC-AL-2 ANSI INCITS 332-1999"); - break; - case 0x0D7D: - scsiOneValue.Add("Device complies with FC-AL-2 ANSI INCITS 332-1999 with Amnd 1 AM1-2003"); - break; - case 0x0D80: - scsiOneValue.Add("Device complies with FC-PH-3 (no version claimed)"); - break; - case 0x0D9C: - scsiOneValue.Add("Device complies with FC-PH-3 ANSI INCITS 303-1998"); - break; - case 0x0DA0: - scsiOneValue.Add("Device complies with FC-FS (no version claimed)"); - break; - case 0x0DB7: - scsiOneValue.Add("Device complies with FC-FS T11/1331-D revision 1.2"); - break; - case 0x0DB8: - scsiOneValue.Add("Device complies with FC-FS T11/1331-D revision 1.7"); - break; - case 0x0DBC: - scsiOneValue.Add("Device complies with FC-FS ANSI INCITS 373-2003"); - break; - case 0x0DBD: - scsiOneValue.Add("Device complies with FC-FS ISO/IEC 14165-251"); - break; - case 0x0DC0: - scsiOneValue.Add("Device complies with FC-PI (no version claimed)"); - break; - case 0x0DDC: - scsiOneValue.Add("Device complies with FC-PI ANSI INCITS 352-2002"); - break; - case 0x0DE0: - scsiOneValue.Add("Device complies with FC-PI-2 (no version claimed)"); - break; - case 0x0DE2: - scsiOneValue.Add("Device complies with FC-PI-2 T11/1506-D revision 5.0"); - break; - case 0x0DE4: - scsiOneValue.Add("Device complies with FC-PI-2 ANSI INCITS 404-2006"); - break; - case 0x0E00: - scsiOneValue.Add("Device complies with FC-FS-2 (no version claimed)"); - break; - case 0x0E02: - scsiOneValue.Add("Device complies with FC-FS-2 ANSI INCITS 242-2007"); - break; - case 0x0E03: - scsiOneValue - .Add("Device complies with FC-FS-2 ANSI INCITS 242-2007 with AM1 ANSI INCITS 242/AM1-2007"); - break; - case 0x0E20: - scsiOneValue.Add("Device complies with FC-LS (no version claimed)"); - break; - case 0x0E21: - scsiOneValue.Add("Device complies with FC-LS T11/1620-D revision 1.62"); - break; - case 0x0E29: - scsiOneValue.Add("Device complies with FC-LS ANSI INCITS 433-2007"); - break; - case 0x0E40: - scsiOneValue.Add("Device complies with FC-SP (no version claimed)"); - break; - case 0x0E42: - scsiOneValue.Add("Device complies with FC-SP T11/1570-D revision 1.6"); - break; - case 0x0E45: - scsiOneValue.Add("Device complies with FC-SP ANSI INCITS 426-2007"); - break; - case 0x0E60: - scsiOneValue.Add("Device complies with FC-PI-3 (no version claimed)"); - break; - case 0x0E62: - scsiOneValue.Add("Device complies with FC-PI-3 T11/1625-D revision 2.0"); - break; - case 0x0E68: - scsiOneValue.Add("Device complies with FC-PI-3 T11/1625-D revision 2.1"); - break; - case 0x0E6A: - scsiOneValue.Add("Device complies with FC-PI-3 T11/1625-D revision 4.0"); - break; - case 0x0E6E: - scsiOneValue.Add("Device complies with FC-PI-3 ANSI INCITS 460-2011"); - break; - case 0x0E80: - scsiOneValue.Add("Device complies with FC-PI-4 (no version claimed)"); - break; - case 0x0E82: - scsiOneValue.Add("Device complies with FC-PI-4 T11/1647-D revision 8.0"); - break; - case 0x0E88: - scsiOneValue.Add("Device complies with FC-PI-4 ANSI INCITS 450-2009"); - break; - case 0x0EA0: - scsiOneValue.Add("Device complies with FC 10GFC (no version claimed)"); - break; - case 0x0EA2: - scsiOneValue.Add("Device complies with FC 10GFC ANSI INCITS 364-2003"); - break; - case 0x0EA3: - scsiOneValue.Add("Device complies with FC 10GFC ISO/IEC 14165-116"); - break; - case 0x0EA5: - scsiOneValue.Add("Device complies with FC 10GFC ISO/IEC 14165-116 with AM1"); - break; - case 0x0EA6: - scsiOneValue - .Add("Device complies with FC 10GFC ANSI INCITS 364-2003 with AM1 ANSI INCITS 364/AM1-2007"); - break; - case 0x0EC0: - scsiOneValue.Add("Device complies with FC-SP-2 (no version claimed)"); - break; - case 0x0EE0: - scsiOneValue.Add("Device complies with FC-FS-3 (no version claimed)"); - break; - case 0x0EE2: - scsiOneValue.Add("Device complies with FC-FS-3 T11/1861-D revision 0.9"); - break; - case 0x0EE7: - scsiOneValue.Add("Device complies with FC-FS-3 T11/1861-D revision 1.0"); - break; - case 0x0EE9: - scsiOneValue.Add("Device complies with FC-FS-3 T11/1861-D revision 1.10"); - break; - case 0x0EEB: - scsiOneValue.Add("Device complies with FC-FS-3 ANSI INCITS 470-2011"); - break; - case 0x0F00: - scsiOneValue.Add("Device complies with FC-LS-2 (no version claimed)"); - break; - case 0x0F03: - scsiOneValue.Add("Device complies with FC-LS-2 T11/2103-D revision 2.11"); - break; - case 0x0F05: - scsiOneValue.Add("Device complies with FC-LS-2 T11/2103-D revision 2.21"); - break; - case 0x0F07: - scsiOneValue.Add("Device complies with FC-LS-2 ANSI INCITS 477-2011"); - break; - case 0x0F20: - scsiOneValue.Add("Device complies with FC-PI-5 (no version claimed)"); - break; - case 0x0F27: - scsiOneValue.Add("Device complies with FC-PI-5 T11/2118-D revision 2.00"); - break; - case 0x0F28: - scsiOneValue.Add("Device complies with FC-PI-5 T11/2118-D revision 3.00"); - break; - case 0x0F2A: - scsiOneValue.Add("Device complies with FC-PI-5 T11/2118-D revision 6.00"); - break; - case 0x0F2B: - scsiOneValue.Add("Device complies with FC-PI-5 T11/2118-D revision 6.10"); - break; - case 0x0F2E: - scsiOneValue.Add("Device complies with FC-PI-5 ANSI INCITS 479-2011"); - break; - case 0x0F40: - scsiOneValue.Add("Device complies with FC-PI-6 (no version claimed)"); - break; - case 0x0F60: - scsiOneValue.Add("Device complies with FC-FS-4 (no version claimed)"); - break; - case 0x0F80: - scsiOneValue.Add("Device complies with FC-LS-3 (no version claimed)"); - break; - case 0x12A0: - scsiOneValue.Add("Device complies with FC-SCM (no version claimed)"); - break; - case 0x12A3: - scsiOneValue.Add("Device complies with FC-SCM T11/1824DT revision 1.0"); - break; - case 0x12A5: - scsiOneValue.Add("Device complies with FC-SCM T11/1824DT revision 1.1"); - break; - case 0x12A7: - scsiOneValue.Add("Device complies with FC-SCM T11/1824DT revision 1.4"); - break; - case 0x12AA: - scsiOneValue.Add("Device complies with FC-SCM INCITS TR-47 2012"); - break; - case 0x12C0: - scsiOneValue.Add("Device complies with FC-DA-2 (no version claimed)"); - break; - case 0x12C3: - scsiOneValue.Add("Device complies with FC-DA-2 T11/1870DT revision 1.04"); - break; - case 0x12C5: - scsiOneValue.Add("Device complies with FC-DA-2 T11/1870DT revision 1.06"); - break; - case 0x12C9: - scsiOneValue.Add("Device complies with FC-DA-2 INCITS TR-49 2012"); - break; - case 0x12E0: - scsiOneValue.Add("Device complies with FC-DA (no version claimed)"); - break; - case 0x12E2: - scsiOneValue.Add("Device complies with FC-DA T11/1513-DT revision 3.1"); - break; - case 0x12E8: - scsiOneValue.Add("Device complies with FC-DA ANSI INCITS TR-36 2004"); - break; - case 0x12E9: - scsiOneValue.Add("Device complies with FC-DA ISO/IEC 14165-341"); - break; - case 0x1300: - scsiOneValue.Add("Device complies with FC-Tape (no version claimed)"); - break; - case 0x1301: - scsiOneValue.Add("Device complies with FC-Tape T11/1315 revision 1.16"); - break; - case 0x131B: - scsiOneValue.Add("Device complies with FC-Tape T11/1315 revision 1.17"); - break; - case 0x131C: - scsiOneValue.Add("Device complies with FC-Tape ANSI INCITS TR-24 1999"); - break; - case 0x1320: - scsiOneValue.Add("Device complies with FC-FLA (no version claimed)"); - break; - case 0x133B: - scsiOneValue.Add("Device complies with FC-FLA T11/1235 revision 7"); - break; - case 0x133C: - scsiOneValue.Add("Device complies with FC-FLA ANSI INCITS TR-20 1998"); - break; - case 0x1340: - scsiOneValue.Add("Device complies with FC-PLDA (no version claimed)"); - break; - case 0x135B: - scsiOneValue.Add("Device complies with FC-PLDA T11/1162 revision 2.1"); - break; - case 0x135C: - scsiOneValue.Add("Device complies with FC-PLDA ANSI INCITS TR-19 1998"); - break; - case 0x1360: - scsiOneValue.Add("Device complies with SSA-PH2 (no version claimed)"); - break; - case 0x137B: - scsiOneValue.Add("Device complies with SSA-PH2 T10.1/1145-D revision 09c"); - break; - case 0x137C: - scsiOneValue.Add("Device complies with SSA-PH2 ANSI INCITS 293-1996"); - break; - case 0x1380: - scsiOneValue.Add("Device complies with SSA-PH3 (no version claimed)"); - break; - case 0x139B: - scsiOneValue.Add("Device complies with SSA-PH3 T10.1/1146-D revision 05b"); - break; - case 0x139C: - scsiOneValue.Add("Device complies with SSA-PH3 ANSI INCITS 307-1998"); - break; - case 0x14A0: - scsiOneValue.Add("Device complies with IEEE 1394 (no version claimed)"); - break; - case 0x14BD: - scsiOneValue.Add("Device complies with ANSI IEEE 1394-1995"); - break; - case 0x14C0: - scsiOneValue.Add("Device complies with IEEE 1394a (no version claimed)"); - break; - case 0x14E0: - scsiOneValue.Add("Device complies with IEEE 1394b (no version claimed)"); - break; - case 0x15E0: - scsiOneValue.Add("Device complies with ATA/ATAPI-6 (no version claimed)"); - break; - case 0x15FD: - scsiOneValue.Add("Device complies with ATA/ATAPI-6 ANSI INCITS 361-2002"); - break; - case 0x1600: - scsiOneValue.Add("Device complies with ATA/ATAPI-7 (no version claimed)"); - break; - case 0x1602: - scsiOneValue.Add("Device complies with ATA/ATAPI-7 T13/1532-D revision 3"); - break; - case 0x161C: - scsiOneValue.Add("Device complies with ATA/ATAPI-7 ANSI INCITS 397-2005"); - break; - case 0x161E: - scsiOneValue.Add("Device complies with ATA/ATAPI-7 ISO/IEC 24739"); - break; - case 0x1620: - scsiOneValue.Add("Device complies with ATA/ATAPI-8 ATA8-AAM (no version claimed)"); - break; - case 0x1621: - scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-APT Parallel Transport (no version claimed)"); - break; - case 0x1622: - scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-AST Serial Transport (no version claimed)"); - break; - case 0x1623: - scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-ACS ATA/ATAPI Command Set (no version claimed)"); - break; - case 0x1628: - scsiOneValue.Add("Device complies with ATA/ATAPI-8 ATA8-AAM ANSI INCITS 451-2008"); - break; - case 0x162A: - scsiOneValue - .Add("Device complies with ATA/ATAPI-8 ATA8-ACS ANSI INCITS 452-2009 w/ Amendment 1"); - break; - case 0x1728: - scsiOneValue.Add("Device complies with Universal Serial Bus Specification, Revision 1.1"); - break; - case 0x1729: - scsiOneValue.Add("Device complies with Universal Serial Bus Specification, Revision 2.0"); - break; - case 0x1730: - scsiOneValue - .Add("Device complies with USB Mass Storage Class Bulk-Only Transport, Revision 1.0"); - break; - case 0x1740: - scsiOneValue.Add("Device complies with UAS (no version claimed)"); - break; - case 0x1743: - scsiOneValue.Add("Device complies with UAS T10/2095-D revision 02"); - break; - case 0x1747: - scsiOneValue.Add("Device complies with UAS T10/2095-D revision 04"); - break; - case 0x1748: - scsiOneValue.Add("Device complies with UAS ANSI INCITS 471-2010"); - break; - case 0x1749: - scsiOneValue.Add("Device complies with UAS ISO/IEC 14776-251:2014"); - break; - case 0x1761: - scsiOneValue.Add("Device complies with ACS-2 (no version claimed)"); - break; - case 0x1762: - scsiOneValue.Add("Device complies with ACS-2 ANSI INCITS 482-2013"); - break; - case 0x1765: - scsiOneValue.Add("Device complies with ACS-3 (no version claimed)"); - break; - case 0x1780: - scsiOneValue.Add("Device complies with UAS-2 (no version claimed)"); - break; - case 0x1EA0: - scsiOneValue.Add("Device complies with SAT (no version claimed)"); - break; - case 0x1EA7: - scsiOneValue.Add("Device complies with SAT T10/1711-D revision 8"); - break; - case 0x1EAB: - scsiOneValue.Add("Device complies with SAT T10/1711-D revision 9"); - break; - case 0x1EAD: - scsiOneValue.Add("Device complies with SAT ANSI INCITS 431-2007"); - break; - case 0x1EC0: - scsiOneValue.Add("Device complies with SAT-2 (no version claimed)"); - break; - case 0x1EC4: - scsiOneValue.Add("Device complies with SAT-2 T10/1826-D revision 06"); - break; - case 0x1EC8: - scsiOneValue.Add("Device complies with SAT-2 T10/1826-D revision 09"); - break; - case 0x1ECA: - scsiOneValue.Add("Device complies with SAT-2 ANSI INCITS 465-2010"); - break; - case 0x1EE0: - scsiOneValue.Add("Device complies with SAT-3 (no version claimed)"); - break; - case 0x1EE2: - scsiOneValue.Add("Device complies with SAT-3 T10/BSR INCITS 517 revision 4"); - break; - case 0x1EE4: - scsiOneValue.Add("Device complies with SAT-3 T10/BSR INCITS 517 revision 7"); - break; - case 0x1EE8: - scsiOneValue.Add("Device complies with SAT-3 ANSI INCITS 517-2015"); - break; - case 0x1F00: - scsiOneValue.Add("Device complies with SAT-4 (no version claimed)"); - break; - case 0x20A0: - scsiOneValue.Add("Device complies with SPL (no version claimed)"); - break; - case 0x20A3: - scsiOneValue.Add("Device complies with SPL T10/2124-D revision 6a"); - break; - case 0x20A5: - scsiOneValue.Add("Device complies with SPL T10/2124-D revision 7"); - break; - case 0x20A7: - scsiOneValue.Add("Device complies with SPL ANSI INCITS 476-2011"); - break; - case 0x20A8: - scsiOneValue.Add("Device complies with SPL ANSI INCITS 476-2011 + SPL AM1 INCITS 476/AM1 2012"); - break; - case 0x20AA: - scsiOneValue.Add("Device complies with SPL ISO/IEC 14776-261:2012"); - break; - case 0x20C0: - scsiOneValue.Add("Device complies with SPL-2 (no version claimed)"); - break; - case 0x20C2: - scsiOneValue.Add("Device complies with SPL-2 T10/BSR INCITS 505 revision 4"); - break; - case 0x20C4: - scsiOneValue.Add("Device complies with SPL-2 T10/BSR INCITS 505 revision 5"); - break; - case 0x20C8: - scsiOneValue.Add("Device complies with SPL-2 ANSI INCITS 505-2013"); - break; - case 0x20E0: - scsiOneValue.Add("Device complies with SPL-3 (no version claimed)"); - break; - case 0x20E4: - scsiOneValue.Add("Device complies with SPL-3 T10/BSR INCITS 492 revision 6"); - break; - case 0x20E6: - scsiOneValue.Add("Device complies with SPL-3 T10/BSR INCITS 492 revision 7"); - break; - case 0x20E8: - scsiOneValue.Add("Device complies with SPL-3 ANSI INCITS 492-2015"); - break; - case 0x2100: - scsiOneValue.Add("Device complies with SPL-4 (no version claimed)"); - break; - case 0x21E0: - scsiOneValue.Add("Device complies with SOP (no version claimed)"); - break; - case 0x21E4: - scsiOneValue.Add("Device complies with SOP T10/BSR INCITS 489 revision 4"); - break; - case 0x21E6: - scsiOneValue.Add("Device complies with SOP T10/BSR INCITS 489 revision 5"); - break; - case 0x21E8: - scsiOneValue.Add("Device complies with SOP ANSI INCITS 489-2014"); - break; - case 0x2200: - scsiOneValue.Add("Device complies with PQI (no version claimed)"); - break; - case 0x2204: - scsiOneValue.Add("Device complies with PQI T10/BSR INCITS 490 revision 6"); - break; - case 0x2206: - scsiOneValue.Add("Device complies with PQI T10/BSR INCITS 490 revision 7"); - break; - case 0x2208: - scsiOneValue.Add("Device complies with PQI ANSI INCITS 490-2014"); - break; - case 0x2220: - scsiOneValue.Add("Device complies with SOP-2 (no version claimed)"); - break; - case 0x2240: - scsiOneValue.Add("Device complies with PQI-2 (no version claimed)"); - break; - case 0xFFC0: - scsiOneValue.Add("Device complies with IEEE 1667 (no version claimed)"); - break; - case 0xFFC1: - scsiOneValue.Add("Device complies with IEEE 1667-2006"); - break; - case 0xFFC2: - scsiOneValue.Add("Device complies with IEEE 1667-2009"); - break; - default: - scsiOneValue.Add($"Device complies with unknown standard code 0x{versionDescriptor:X4}"); - break; - } - - return scsiOneValue; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs b/Server/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs deleted file mode 100644 index b9e8fbb1a..000000000 --- a/Server/DiscImageChef.Server/App_Start/ScsiMmcFeatures.cs +++ /dev/null @@ -1,290 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ScsiMmcFeatures.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI MMC features from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Decoders.SCSI.MMC; - -namespace DiscImageChef.Server -{ - public static class ScsiMmcFeatures - { - /// - /// Takes the MMC FEATURES part of a device report and prints it as a list of values to be sequenced by ASP.NET in the - /// rendering - /// - /// FEATURES part of the report - /// List to put the values on - public static void Report(MmcFeatures ftr, ref List mmcOneValue) - { - if(ftr.SupportsAACS && ftr.AACSVersion.HasValue) - mmcOneValue.Add($"Drive supports AACS version {ftr.AACSVersion}"); - else if(ftr.SupportsAACS) mmcOneValue.Add("Drive supports AACS"); - if(ftr.AGIDs.HasValue) mmcOneValue.Add($"Drive supports {ftr.AGIDs} AGIDs concurrently"); - if(ftr.CanGenerateBindingNonce) - { - mmcOneValue.Add("Drive supports generating the binding nonce"); - if(ftr.BindingNonceBlocks.HasValue) - mmcOneValue.Add($"{ftr.BindingNonceBlocks} media blocks are required for the binding nonce"); - } - - if(ftr.BlocksPerReadableUnit > 1) - mmcOneValue.Add($"{ftr.BlocksPerReadableUnit} logical blocks per media writable unit"); - if(ftr.BufferUnderrunFreeInDVD) mmcOneValue.Add("Drive supports zero loss linking writing DVDs"); - if(ftr.BufferUnderrunFreeInSAO) mmcOneValue.Add("Drive supports zero loss linking in Session at Once Mode"); - if(ftr.BufferUnderrunFreeInTAO) mmcOneValue.Add("Drive supports zero loss linking in Track at Once Mode"); - if(ftr.CanAudioScan) mmcOneValue.Add("Drive supports the SCAN command"); - if(ftr.CanEject) mmcOneValue.Add("Drive can eject media"); - if(ftr.CanEraseSector) mmcOneValue.Add("Drive supports media that require erasing before writing"); - if(ftr.CanExpandBDRESpareArea) mmcOneValue.Add("Drive can expand the spare area on a formatted BD-RE disc"); - if(ftr.CanFormat) mmcOneValue.Add("Drive can format media into logical blocks"); - if(ftr.CanFormatBDREWithoutSpare) mmcOneValue.Add("Drive can format BD-RE with no spares allocated"); - if(ftr.CanFormatQCert) mmcOneValue.Add("Drive can format BD-RE discs with quick certification"); - if(ftr.CanFormatCert) mmcOneValue.Add("Drive can format BD-RE discs with full certification"); - if(ftr.CanFormatFRF) mmcOneValue.Add("Drive can fast re-format BD-RE discs"); - if(ftr.CanFormatRRM) mmcOneValue.Add("Drive can format BD-R discs with RRM format"); - if(ftr.CanLoad) mmcOneValue.Add("Drive can load media"); - if(ftr.CanMuteSeparateChannels) mmcOneValue.Add("Drive is able to mute channels separately"); - if(ftr.CanOverwriteSAOTrack) mmcOneValue.Add("Drive can overwrite a SAO track with another in CD-RWs"); - if(ftr.CanOverwriteTAOTrack) mmcOneValue.Add("Drive can overwrite a TAO track with another in CD-RWs"); - if(ftr.CanPlayCDAudio) mmcOneValue.Add("Drive has an analogue audio output"); - if(ftr.CanPseudoOverwriteBDR) mmcOneValue.Add("Drive can write BD-R on Pseudo-OVerwrite SRM mode"); - if(ftr.CanReadAllDualR) mmcOneValue.Add("Drive can read DVD-R DL from all recording modes"); - if(ftr.CanReadAllDualRW) mmcOneValue.Add("Drive can read DVD-RW DL from all recording modes"); - if(ftr.CanReadBD) mmcOneValue.Add("Drive can read BD-ROM"); - if(ftr.CanReadBDR) mmcOneValue.Add("Drive can read BD-R Ver.1"); - if(ftr.CanReadBDRE1) mmcOneValue.Add("Drive can read BD-RE Ver.1"); - if(ftr.CanReadBDRE2) mmcOneValue.Add("Drive can read BD-RE Ver.2"); - if(ftr.CanReadBDROM) mmcOneValue.Add("Drive can read BD-ROM Ver.1"); - if(ftr.CanReadBluBCA) mmcOneValue.Add("Drive can read BD's Burst Cutting Area"); - if(ftr.CanReadCD) mmcOneValue.Add("Drive can read CD-ROM"); - if(ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) - mmcOneValue.Add("Drive can read and write CD-MRW and DVD+MRW"); - else if(ftr.CanReadDVDPlusMRW && ftr.CanWriteDVDPlusMRW) - mmcOneValue.Add("Drive can read and write DVD+MRW"); - else if(ftr.CanWriteCDMRW && ftr.CanReadDVDPlusMRW) - mmcOneValue.Add("Drive and read DVD+MRW and read and write CD-MRW"); - else if(ftr.CanWriteCDMRW) mmcOneValue.Add("Drive can read and write CD-MRW"); - else if(ftr.CanReadDVDPlusMRW) mmcOneValue.Add("Drive can read CD-MRW and DVD+MRW"); - else if(ftr.CanReadCDMRW) mmcOneValue.Add("Drive can read CD-MRW"); - if(ftr.CanReadCPRM_MKB) mmcOneValue.Add("Drive supports reading Media Key Block of CPRM"); - if(ftr.CanReadDDCD) mmcOneValue.Add("Drive can read DDCDs"); - if(ftr.CanReadDVD) mmcOneValue.Add("Drive can read DVD"); - if(ftr.CanWriteDVDPlusRW) mmcOneValue.Add("Drive can read and write DVD+RW"); - else if(ftr.CanReadDVDPlusRW) mmcOneValue.Add("Drive can read DVD+RW"); - if(ftr.CanWriteDVDPlusR) mmcOneValue.Add("Drive can read and write DVD+R"); - else if(ftr.CanReadDVDPlusR) mmcOneValue.Add("Drive can read DVD+R"); - if(ftr.CanWriteDVDPlusRDL) mmcOneValue.Add("Drive can read and write DVD+R DL"); - else if(ftr.CanReadDVDPlusRDL) mmcOneValue.Add("Drive can read DVD+R DL"); - if(ftr.CanReadDriveAACSCertificate) mmcOneValue.Add("Drive supports reading the Drive Certificate"); - if(ftr.CanReadHDDVD && ftr.CanReadHDDVDR && ftr.CanReadHDDVDRAM) - mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW, HD DVD-R and HD DVD-RAM"); - else if(ftr.CanReadHDDVD && ftr.CanReadHDDVDR) - mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW and HD DVD-R"); - else if(ftr.CanReadHDDVD && ftr.CanReadHDDVDRAM) - mmcOneValue.Add("Drive can read HD DVD-ROM, HD DVD-RW and HD DVD-RAM"); - else if(ftr.CanReadHDDVD) mmcOneValue.Add("Drive can read HD DVD-ROM and HD DVD-RW"); - if(ftr.CanReadLeadInCDText) mmcOneValue.Add("Drive can return CD-Text from Lead-In"); - if(ftr.CanReadOldBDR) mmcOneValue.Add("Drive can read BD-R pre-1.0"); - if(ftr.CanReadOldBDRE) mmcOneValue.Add("Drive can read BD-RE pre-1.0"); - if(ftr.CanReadOldBDROM) mmcOneValue.Add("Drive can read BD-ROM pre-1.0"); - if(ftr.CanReadSpareAreaInformation) mmcOneValue.Add("Drive can return Spare Area Information"); - if(ftr.CanReportDriveSerial) mmcOneValue.Add("Drive is to report drive serial number"); - if(ftr.CanReportMediaSerial) mmcOneValue.Add("Drive is to read media serial number"); - if(ftr.CanTestWriteDDCDR) mmcOneValue.Add("Drive can do a test writing with DDCD-R"); - if(ftr.CanTestWriteDVD) mmcOneValue.Add("Drive can do a test writing with DVDs"); - if(ftr.CanTestWriteInSAO) mmcOneValue.Add("Drive can do a test writing in Session at Once Mode"); - if(ftr.CanTestWriteInTAO) mmcOneValue.Add("Drive can do a test writing in Track at Once Mode"); - if(ftr.CanUpgradeFirmware) mmcOneValue.Add("Drive supports Microcode Upgrade"); - if(ftr.ErrorRecoveryPage) mmcOneValue.Add("Drive shall report Read/Write Error Recovery mode page"); - if(ftr.Locked) mmcOneValue.Add("Drive can lock media"); - if(ftr.LogicalBlockSize > 0) mmcOneValue.Add($"{ftr.LogicalBlockSize} bytes per logical block"); - if(ftr.MultiRead) - mmcOneValue.Add("Drive claims capability to read all CD formats according to OSTA Multi-Read Specification"); - - if(ftr.PhysicalInterfaceStandard.HasValue) - switch(ftr.PhysicalInterfaceStandard) - { - case PhysicalInterfaces.Unspecified: - mmcOneValue.Add("Drive uses an unspecified physical interface"); - break; - case PhysicalInterfaces.SCSI: - mmcOneValue.Add("Drive uses SCSI interface"); - break; - case PhysicalInterfaces.ATAPI: - mmcOneValue.Add("Drive uses ATAPI interface"); - break; - case PhysicalInterfaces.IEEE1394: - mmcOneValue.Add("Drive uses IEEE-1394 interface"); - break; - case PhysicalInterfaces.IEEE1394A: - mmcOneValue.Add("Drive uses IEEE-1394A interface"); - break; - case PhysicalInterfaces.FC: - mmcOneValue.Add("Drive uses Fibre Channel interface"); - break; - case PhysicalInterfaces.IEEE1394B: - mmcOneValue.Add("Drive uses IEEE-1394B interface"); - break; - case PhysicalInterfaces.SerialATAPI: - mmcOneValue.Add("Drive uses Serial ATAPI interface"); - break; - case PhysicalInterfaces.USB: - mmcOneValue.Add("Drive uses USB interface"); - break; - case PhysicalInterfaces.Vendor: - mmcOneValue.Add("Drive uses a vendor unique interface"); - break; - default: - mmcOneValue - .Add($"Drive uses an unknown interface with code {(uint)ftr.PhysicalInterfaceStandard}"); - break; - } - - if(ftr.PreventJumper) mmcOneValue.Add("Drive power ups locked"); - if(ftr.SupportsBusEncryption) mmcOneValue.Add("Drive supports bus encryption"); - if(ftr.CanWriteBD) mmcOneValue.Add("Drive can write BD-R or BD-RE"); - if(ftr.CanWriteBDR) mmcOneValue.Add("Drive can write BD-R Ver.1"); - if(ftr.CanWriteBDRE1) mmcOneValue.Add("Drive can write BD-RE Ver.1"); - if(ftr.CanWriteBDRE2) mmcOneValue.Add("Drive can write BD-RE Ver.2"); - if(ftr.CanWriteBusEncryptedBlocks) mmcOneValue.Add("Drive supports writing with bus encryption"); - if(ftr.CanWriteCDRW) mmcOneValue.Add("Drive can write CD-RW"); - if(ftr.CanWriteCDRWCAV) mmcOneValue.Add("Drive can write High-Speed CD-RW"); - if(ftr.CanWriteCDSAO && !ftr.CanWriteRaw) - mmcOneValue.Add("Drive can write CDs in Session at Once Mode:"); - else if(!ftr.CanWriteCDSAO && ftr.CanWriteRaw) mmcOneValue.Add("Drive can write CDs in raw Mode:"); - else if(ftr.CanWriteCDSAO && ftr.CanWriteRaw) - mmcOneValue.Add("Drive can write CDs in Session at Once and in Raw Modes:"); - if(ftr.CanWriteCDTAO) mmcOneValue.Add("Drive can write CDs in Track at Once Mode:"); - if(ftr.CanWriteCSSManagedDVD) mmcOneValue.Add("Drive can write CSS managed DVDs"); - if(ftr.CanWriteDDCDR) mmcOneValue.Add("Drive supports writing DDCD-R"); - if(ftr.CanWriteDDCDRW) mmcOneValue.Add("Drive supports writing DDCD-RW"); - if(ftr.CanWriteDVDPlusRWDL) mmcOneValue.Add("Drive can read and write DVD+RW DL"); - else if(ftr.CanReadDVDPlusRWDL) mmcOneValue.Add("Drive can read DVD+RW DL"); - if(ftr.CanWriteDVDR && ftr.CanWriteDVDRW && ftr.CanWriteDVDRDL) - mmcOneValue.Add("Drive supports writing DVD-R, DVD-RW and DVD-R DL"); - else if(ftr.CanWriteDVDR && ftr.CanWriteDVDRDL) - mmcOneValue.Add("Drive supports writing DVD-R and DVD-R DL"); - else if(ftr.CanWriteDVDR && ftr.CanWriteDVDRW) mmcOneValue.Add("Drive supports writing DVD-R and DVD-RW"); - else if(ftr.CanWriteDVDR) mmcOneValue.Add("Drive supports writing DVD-R"); - if(ftr.CanWriteHDDVDR && ftr.CanWriteHDDVDRAM) - mmcOneValue.Add("Drive can write HD DVD-RW, HD DVD-R and HD DVD-RAM"); - else if(ftr.CanWriteHDDVDR) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-R"); - else if(ftr.CanWriteHDDVDRAM) mmcOneValue.Add("Drive can write HD DVD-RW and HD DVD-RAM"); - // TODO: Write HD DVD-RW - /* - else - mmcOneValue.Add("Drive can write HD DVD-RW"); - */ - if(ftr.CanWriteOldBDR) mmcOneValue.Add("Drive can write BD-R pre-1.0"); - if(ftr.CanWriteOldBDRE) mmcOneValue.Add("Drive can write BD-RE pre-1.0"); - if(ftr.CanWriteRWSubchannelInTAO) - { - mmcOneValue.Add("Drive can write user provided data in the R-W subchannels in Track at Once Mode"); - if(ftr.CanWriteRawSubchannelInTAO) - mmcOneValue.Add("Drive accepts RAW R-W subchannel data in Track at Once Mode"); - if(ftr.CanWritePackedSubchannelInTAO) - mmcOneValue.Add("Drive accepts Packed R-W subchannel data in Track at Once Mode"); - } - - if(ftr.CanWriteRWSubchannelInSAO) - mmcOneValue.Add("Drive can write user provided data in the R-W subchannels in Session at Once Mode"); - if(ftr.CanWriteRaw && ftr.CanWriteRawMultiSession) - mmcOneValue.Add("Drive can write multi-session CDs in raw mode"); - if(ftr.EmbeddedChanger) - { - mmcOneValue.Add("Drive contains an embedded changer"); - - if(ftr.ChangerIsSideChangeCapable) mmcOneValue.Add("Drive can change disc side"); - if(ftr.ChangerSupportsDiscPresent) - mmcOneValue.Add("Drive is able to report slots contents after a reset or change"); - - mmcOneValue.Add($"Drive has {ftr.ChangerSlots + 1} slots"); - } - - if(ftr.SupportsCSS && ftr.CSSVersion.HasValue) - mmcOneValue.Add($"Drive supports DVD CSS/CPPM version {ftr.CSSVersion}"); - else if(ftr.SupportsCSS) mmcOneValue.Add("Drive supports DVD CSS/CPRM"); - if(ftr.SupportsCPRM && ftr.CPRMVersion.HasValue) - mmcOneValue.Add($"Drive supports DVD CPPM version {ftr.CPRMVersion}"); - else if(ftr.SupportsCPRM) mmcOneValue.Add("Drive supports DVD CPRM"); - if(ftr.DBML) mmcOneValue.Add("Drive reports Device Busy Class events during medium loading/unloading"); - if(ftr.DVDMultiRead) mmcOneValue.Add("Drive conforms to DVD Multi Drive Read-only Specifications"); - if(ftr.FirmwareDate.HasValue) mmcOneValue.Add($"Drive firmware is dated {ftr.FirmwareDate}"); - if(ftr.SupportsC2) mmcOneValue.Add("Drive supports C2 Error Pointers"); - if(ftr.SupportsDAP) mmcOneValue.Add("Drive supports the DAP bit in the READ CD and READ CD MSF commands"); - if(ftr.SupportsDeviceBusyEvent) mmcOneValue.Add("Drive supports Device Busy events"); - - if(ftr.LoadingMechanismType.HasValue) - switch(ftr.LoadingMechanismType) - { - case 0: - mmcOneValue.Add("Drive uses media caddy"); - break; - case 1: - mmcOneValue.Add("Drive uses a tray"); - break; - case 2: - mmcOneValue.Add("Drive is pop-up"); - break; - case 4: - mmcOneValue.Add("Drive is a changer with individually changeable discs"); - break; - case 5: - mmcOneValue.Add("Drive is a changer using cartridges"); - break; - default: - mmcOneValue.Add($"Drive uses unknown loading mechanism type {ftr.LoadingMechanismType}"); - break; - } - - if(ftr.SupportsHybridDiscs) mmcOneValue.Add("Drive is able to access Hybrid discs"); - if(ftr.SupportsModePage1Ch) - mmcOneValue.Add("Drive supports the Informational Exceptions Control mode page 1Ch"); - if(ftr.SupportsOSSC) - mmcOneValue.Add("Drive supports the Trusted Computing Group Optical Security Subsystem Class"); - if(ftr.SupportsPWP) mmcOneValue.Add("Drive supports set/release of PWP status"); - if(ftr.SupportsSWPP) mmcOneValue.Add("Drive supports the SWPP bit of the Timeout and Protect mode page"); - if(ftr.SupportsSecurDisc) mmcOneValue.Add("Drive supports SecurDisc"); - if(ftr.SupportsSeparateVolume) mmcOneValue.Add("Drive supports separate volume per channel"); - if(ftr.SupportsVCPS) mmcOneValue.Add("Drive supports VCPS"); - if(ftr.VolumeLevels.HasValue) mmcOneValue.Add($"Drive has {ftr.VolumeLevels + 1} volume levels"); - if(ftr.SupportsWriteProtectPAC) - mmcOneValue.Add("Drive supports reading/writing the Disc Write Protect PAC on BD-R/-RE media"); - if(ftr.SupportsWriteInhibitDCB) - mmcOneValue.Add("Drive supports writing the Write Inhibit DCB on DVD+RW media"); - - mmcOneValue.Sort(); - mmcOneValue.Add(""); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/ScsiMmcMode.cs b/Server/DiscImageChef.Server/App_Start/ScsiMmcMode.cs deleted file mode 100644 index 7c557828a..000000000 --- a/Server/DiscImageChef.Server/App_Start/ScsiMmcMode.cs +++ /dev/null @@ -1,172 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ScsiMmcMode.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI MODE PAGE 2Ah from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using System.Linq; -using DiscImageChef.Decoders.SCSI; - -namespace DiscImageChef.Server -{ - public static class ScsiMmcMode - { - /// - /// Takes the MODE PAGE 2Ah part of a device report and prints it as a list of values to be sequenced by ASP.NET in the - /// rendering - /// - /// MODE PAGE 2Ah part of the report - /// List to put the values on - public static void Report(Modes.ModePage_2A mode, ref List mmcOneValue) - { - if(mode.AudioPlay) mmcOneValue.Add("Drive can play audio"); - if(mode.Mode2Form1) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 1 format"); - if(mode.Mode2Form2) mmcOneValue.Add("Drive can read sectors in Mode 2 Form 2 format"); - if(mode.MultiSession) mmcOneValue.Add("Drive supports multi-session discs and/or Photo-CD"); - - if(mode.CDDACommand) mmcOneValue.Add("Drive can read digital audio"); - if(mode.AccurateCDDA) mmcOneValue.Add("Drive can continue from streaming loss"); - if(mode.Subchannel) mmcOneValue.Add("Drive can read uncorrected and interleaved R-W subchannels"); - if(mode.DeinterlaveSubchannel) mmcOneValue.Add("Drive can read, deinterleave and correct R-W subchannels"); - if(mode.C2Pointer) mmcOneValue.Add("Drive supports C2 pointers"); - if(mode.UPC) mmcOneValue.Add("Drive can read Media Catalogue Number"); - if(mode.ISRC) mmcOneValue.Add("Drive can read ISRC"); - - switch(mode.LoadingMechanism) - { - case 0: - mmcOneValue.Add("Drive uses media caddy"); - break; - case 1: - mmcOneValue.Add("Drive uses a tray"); - break; - case 2: - mmcOneValue.Add("Drive is pop-up"); - break; - case 4: - mmcOneValue.Add("Drive is a changer with individually changeable discs"); - break; - case 5: - mmcOneValue.Add("Drive is a changer using cartridges"); - break; - default: - mmcOneValue.Add($"Drive uses unknown loading mechanism type {mode.LoadingMechanism}"); - break; - } - - if(mode.Lock) mmcOneValue.Add("Drive can lock media"); - if(mode.PreventJumper) - { - mmcOneValue.Add("Drive power ups locked"); - mmcOneValue.Add(mode.LockState - ? "Drive is locked, media cannot be ejected or inserted" - : "Drive is not locked, media can be ejected and inserted"); - } - else - mmcOneValue.Add(mode.LockState - ? "Drive is locked, media cannot be ejected, but if empty, can be inserted" - : "Drive is not locked, media can be ejected and inserted"); - - if(mode.Eject) mmcOneValue.Add("Drive can eject media"); - - if(mode.SeparateChannelMute) mmcOneValue.Add("Each channel can be muted independently"); - if(mode.SeparateChannelVolume) mmcOneValue.Add("Each channel's volume can be controlled independently"); - - if(mode.SupportedVolumeLevels > 0) - mmcOneValue.Add($"Drive supports {mode.SupportedVolumeLevels} volume levels"); - if(mode.BufferSize > 0) mmcOneValue.Add($"Drive has {mode.BufferSize} Kbyte of buffer"); - if(mode.MaximumSpeed > 0) - mmcOneValue.Add($"Drive's maximum reading speed is {mode.MaximumSpeed} Kbyte/sec."); - if(mode.CurrentSpeed > 0) - mmcOneValue.Add($"Drive's current reading speed is {mode.CurrentSpeed} Kbyte/sec."); - - if(mode.ReadCDR) - { - mmcOneValue.Add(mode.WriteCDR ? "Drive can read and write CD-R" : "Drive can read CD-R"); - - if(mode.Method2) mmcOneValue.Add("Drive supports reading CD-R packet media"); - } - - if(mode.ReadCDRW) - mmcOneValue.Add(mode.WriteCDRW ? "Drive can read and write CD-RW" : "Drive can read CD-RW"); - - if(mode.ReadDVDROM) mmcOneValue.Add("Drive can read DVD-ROM"); - if(mode.ReadDVDR) - mmcOneValue.Add(mode.WriteDVDR ? "Drive can read and write DVD-R" : "Drive can read DVD-R"); - if(mode.ReadDVDRAM) - mmcOneValue.Add(mode.WriteDVDRAM ? "Drive can read and write DVD-RAM" : "Drive can read DVD-RAM"); - - if(mode.Composite) mmcOneValue.Add("Drive can deliver a composite audio and video data stream"); - if(mode.DigitalPort1) mmcOneValue.Add("Drive supports IEC-958 digital output on port 1"); - if(mode.DigitalPort2) mmcOneValue.Add("Drive supports IEC-958 digital output on port 2"); - - if(mode.SDP) mmcOneValue.Add("Drive contains a changer that can report the exact contents of the slots"); - if(mode.CurrentWriteSpeedSelected > 0) - { - if(mode.RotationControlSelected == 0) - mmcOneValue - .Add($"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in CLV mode"); - else if(mode.RotationControlSelected == 1) - mmcOneValue - .Add($"Drive's current writing speed is {mode.CurrentWriteSpeedSelected} Kbyte/sec. in pure CAV mode"); - } - else - { - if(mode.MaxWriteSpeed > 0) - mmcOneValue.Add($"Drive's maximum writing speed is {mode.MaxWriteSpeed} Kbyte/sec."); - if(mode.CurrentWriteSpeed > 0) - mmcOneValue.Add($"Drive's current writing speed is {mode.CurrentWriteSpeed} Kbyte/sec."); - } - - if(mode.WriteSpeedPerformanceDescriptors != null) - foreach(Modes.ModePage_2A_WriteDescriptor descriptor in - mode.WriteSpeedPerformanceDescriptors.Where(descriptor => descriptor.WriteSpeed > 0)) - if(descriptor.RotationControl == 0) - mmcOneValue.Add($"Drive supports writing at {descriptor.WriteSpeed} Kbyte/sec. in CLV mode"); - else if(descriptor.RotationControl == 1) - mmcOneValue - .Add($"Drive supports writing at is {descriptor.WriteSpeed} Kbyte/sec. in pure CAV mode"); - - if(mode.TestWrite) mmcOneValue.Add("Drive supports test writing"); - - if(mode.ReadBarcode) mmcOneValue.Add("Drive can read barcode"); - - if(mode.SCC) mmcOneValue.Add("Drive can read both sides of a disc"); - if(mode.LeadInPW) mmcOneValue.Add("Drive an read raw R-W subchannel from the Lead-In"); - - if(mode.CMRSupported == 1) mmcOneValue.Add("Drive supports DVD CSS and/or DVD CPPM"); - - if(mode.BUF) mmcOneValue.Add("Drive supports buffer under-run free recording"); - - mmcOneValue.Sort(); - mmcOneValue.Add(""); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/ScsiModeSense.cs b/Server/DiscImageChef.Server/App_Start/ScsiModeSense.cs deleted file mode 100644 index 3a5124454..000000000 --- a/Server/DiscImageChef.Server/App_Start/ScsiModeSense.cs +++ /dev/null @@ -1,381 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ScsiModeSense.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI MODE PAGEs from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Decoders.SCSI; - -namespace DiscImageChef.Server -{ - public static class ScsiModeSense - { - /// - /// Takes the MODE PAGEs part of a device report and prints it as a list of values and another list of key=value pairs - /// to be sequenced by ASP.NET in the rendering - /// - /// MODE PAGEs part of a device report - /// SCSI vendor string - /// SCSI peripheral device type - /// List to put values on - /// List to put key=value pairs on - public static void Report(ScsiMode modeSense, string vendor, - PeripheralDeviceTypes deviceType, - ref List scsiOneValue, ref Dictionary modePages) - { - if(modeSense.MediumType.HasValue) scsiOneValue.Add($"Medium type is {modeSense.MediumType:X2}h"); - if(modeSense.WriteProtected) scsiOneValue.Add("Device is write protected."); - if(modeSense.BlockDescriptors != null) - foreach(BlockDescriptor descriptor in modeSense.BlockDescriptors) - if(descriptor.Blocks.HasValue && descriptor.BlockLength.HasValue) - scsiOneValue - .Add($"Density code {descriptor.Density:X2}h has {descriptor.Blocks} blocks of {descriptor.BlockLength} bytes each"); - else - scsiOneValue.Add($"Density code {descriptor.Density:X2}h"); - - if(modeSense.DPOandFUA) scsiOneValue.Add("Drive supports DPO and FUA bits"); - if(modeSense.BlankCheckEnabled) scsiOneValue.Add("Blank checking during write is enabled"); - if(modeSense.BufferedMode.HasValue) - switch(modeSense.BufferedMode) - { - case 0: - scsiOneValue.Add("Device writes directly to media"); - break; - case 1: - scsiOneValue.Add("Device uses a write cache"); - break; - case 2: - scsiOneValue.Add("Device uses a write cache but doesn't return until cache is flushed"); - break; - default: - scsiOneValue.Add($"Unknown buffered mode code 0x{modeSense.BufferedMode:X2}"); - break; - } - - if(modeSense.ModePages == null) return; - - foreach(ScsiPage page in modeSense.ModePages) - switch(page.page) - { - case 0x00: - { - if(deviceType == PeripheralDeviceTypes.MultiMediaDevice && page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_00_SFF(page.value)); - else - modePages - .Add(page.subpage != 0 ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" : $"MODE page {page.page:X2}h", - "Unknown vendor mode page"); - break; - } - case 0x01: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_01_MMC(page.value) - : Modes.PrettifyModePage_01(page.value)); - else goto default; - - break; - } - case 0x02: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_02(page.value)); - else goto default; - - break; - } - case 0x03: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_03(page.value)); - else goto default; - - break; - } - case 0x04: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_04(page.value)); - else goto default; - - break; - } - case 0x05: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_05(page.value)); - else goto default; - - break; - } - case 0x06: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_06(page.value)); - else goto default; - - break; - } - case 0x07: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_07_MMC(page.value) - : Modes.PrettifyModePage_07(page.value)); - else goto default; - - break; - } - case 0x08: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_08(page.value)); - else goto default; - - break; - } - case 0x0A: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0A(page.value)); - else if(page.subpage == 1) - modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_0A_S01(page.value)); - else goto default; - - break; - } - case 0x0B: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0B(page.value)); - else goto default; - - break; - } - case 0x0D: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0D(page.value)); - else goto default; - - break; - } - case 0x0E: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0E(page.value)); - else goto default; - - break; - } - case 0x0F: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_0F(page.value)); - else goto default; - - break; - } - case 0x10: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.SequentialAccess - ? Modes.PrettifyModePage_10_SSC(page.value) - : Modes.PrettifyModePage_10(page.value)); - else goto default; - - break; - } - case 0x11: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_11(page.value)); - else goto default; - - break; - } - case 0x12: - case 0x13: - case 0x14: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_12_13_14(page.value)); - else goto default; - - break; - } - case 0x1A: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1A(page.value)); - else if(page.subpage == 1) - modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_1A_S01(page.value)); - else goto default; - - break; - } - case 0x1B: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1B(page.value)); - else goto default; - - break; - } - case 0x1C: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", - deviceType == PeripheralDeviceTypes.MultiMediaDevice - ? Modes.PrettifyModePage_1C_SFF(page.value) - : Modes.PrettifyModePage_1C(page.value)); - else if(page.subpage == 1) - modePages.Add($"MODE page {page.page:X2}h subpage {page.subpage:X2}h", - Modes.PrettifyModePage_1C_S01(page.value)); - else goto default; - - break; - } - case 0x1D: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_1D(page.value)); - else goto default; - - break; - } - case 0x21: - { - if(vendor == "CERTANCE") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyCertanceModePage_21(page.value)); - else goto default; - - break; - } - case 0x22: - { - if(vendor == "CERTANCE") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyCertanceModePage_22(page.value)); - else goto default; - - break; - } - case 0x24: - { - if(vendor == "IBM") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_24(page.value)); - else goto default; - - break; - } - case 0x2A: - { - if(page.subpage == 0) - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyModePage_2A(page.value)); - else goto default; - - break; - } - case 0x2F: - { - if(vendor == "IBM") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_2F(page.value)); - else goto default; - - break; - } - case 0x30: - { - if(Modes.IsAppleModePage_30(page.value)) - modePages.Add("MODE page 30h", "Drive identifies as an Apple OEM drive"); - else goto default; - - break; - } - case 0x3B: - { - if(vendor == "HP") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3B(page.value)); - else goto default; - - break; - } - case 0x3C: - { - if(vendor == "HP") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3C(page.value)); - else goto default; - - break; - } - case 0x3D: - { - if(vendor == "IBM") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyIBMModePage_3D(page.value)); - else if(vendor == "HP") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3D(page.value)); - else goto default; - - break; - } - case 0x3E: - { - if(vendor == "FUJITSU") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyFujitsuModePage_3E(page.value)); - else if(vendor == "HP") - modePages.Add($"MODE page {page.page:X2}h", Modes.PrettifyHPModePage_3E(page.value)); - else goto default; - - break; - } - default: - { - modePages.Add(page.subpage != 0 ? $"MODE page {page.page:X2}h subpage {page.subpage:X2}h" : $"MODE page {page.page:X2}h", - "Unknown mode page"); - } - break; - } - - Dictionary newModePages = new Dictionary(); - foreach(KeyValuePair kvp in modePages) - newModePages.Add(kvp.Key, - string.IsNullOrWhiteSpace(kvp.Value) ? "Undecoded" : kvp.Value.Replace("\n", "
")); - - modePages = newModePages; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/SscTestedMedia.cs b/Server/DiscImageChef.Server/App_Start/SscTestedMedia.cs deleted file mode 100644 index 6b6b2eec9..000000000 --- a/Server/DiscImageChef.Server/App_Start/SscTestedMedia.cs +++ /dev/null @@ -1,70 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : SscTestedMedia.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes SCSI Streaming media tests from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; -using DiscImageChef.CommonTypes.Metadata; - -namespace DiscImageChef.Server -{ - public static class SscTestedMedia - { - /// - /// Takes the tested media from SCSI Streaming devices of a device report and prints it as a list of values - /// - /// List to put values on - /// List of tested media - public static void Report(IEnumerable testedMedia, ref List mediaOneValue) - { - foreach(TestedSequentialMedia media in testedMedia) - { - if(!string.IsNullOrWhiteSpace(media.MediumTypeName)) - { - mediaOneValue.Add($"Information for medium named \"{media.MediumTypeName}\""); - if(media.MediumType.HasValue) mediaOneValue.Add($"Medium type code: {media.MediumType:X2}h"); - } - else if(media.MediumType.HasValue) - mediaOneValue.Add($"Information for medium type {media.MediumType:X2}h"); - else mediaOneValue.Add("Information for unknown medium type"); - - if(!string.IsNullOrWhiteSpace(media.Manufacturer)) - mediaOneValue.Add($"Medium manufactured by: {media.Manufacturer}"); - if(!string.IsNullOrWhiteSpace(media.Model)) mediaOneValue.Add($"Medium model: {media.Model}"); - - if(media.Density.HasValue) mediaOneValue.Add($"Medium has density code {media.Density:X2}h"); - if(media.CanReadMediaSerial == true) mediaOneValue.Add("Drive can read medium serial number."); - if(media.MediaIsRecognized) mediaOneValue.Add("Drive recognizes this medium."); - - mediaOneValue.Add(""); - } - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/StatsConverter.cs b/Server/DiscImageChef.Server/App_Start/StatsConverter.cs deleted file mode 100644 index da99fb372..000000000 --- a/Server/DiscImageChef.Server/App_Start/StatsConverter.cs +++ /dev/null @@ -1,364 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : StatsConverter.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Reads a statistics XML and stores it in the database context. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Linq; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Server.Models; -using Version = DiscImageChef.Server.Models.Version; - -namespace DiscImageChef.Server -{ - public static class StatsConverter - { - public static void Convert(Stats newStats) - { - DicServerContext ctx = new DicServerContext(); - - if(newStats.Commands != null) - { - if(newStats.Commands.Analyze > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "analyze"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Analyze, Name = "analyze"}); - else existing.Count += newStats.Commands.Analyze; - } - - if(newStats.Commands.Benchmark > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "benchmark"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Benchmark, Name = "benchmark"}); - else existing.Count += newStats.Commands.Benchmark; - } - - if(newStats.Commands.Checksum > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "checksum"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Checksum, Name = "checksum"}); - else existing.Count += newStats.Commands.Checksum; - } - - if(newStats.Commands.Compare > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "compare"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Compare, Name = "compare"}); - else existing.Count += newStats.Commands.Compare; - } - - if(newStats.Commands.CreateSidecar > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "create-sidecar"); - - if(existing == null) - ctx.Commands.Add(new Command - { - Count = newStats.Commands.CreateSidecar, Name = "create-sidecar" - }); - else existing.Count += newStats.Commands.CreateSidecar; - } - - if(newStats.Commands.Decode > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "decode"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Decode, Name = "decode"}); - else existing.Count += newStats.Commands.Decode; - } - - if(newStats.Commands.DeviceInfo > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-info"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.DeviceInfo, Name = "device-info"}); - else existing.Count += newStats.Commands.DeviceInfo; - } - - if(newStats.Commands.DeviceReport > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "device-report"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.DeviceReport, Name = "device-report"}); - else existing.Count += newStats.Commands.DeviceReport; - } - - if(newStats.Commands.DumpMedia > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.DumpMedia, Name = "dump-media"}); - else existing.Count += newStats.Commands.DumpMedia; - } - - if(newStats.Commands.Entropy > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "entropy"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Entropy, Name = "entropy"}); - else existing.Count += newStats.Commands.Entropy; - } - - if(newStats.Commands.Formats > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "formats"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Formats, Name = "formats"}); - else existing.Count += newStats.Commands.Formats; - } - - if(newStats.Commands.MediaInfo > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-info"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.MediaInfo, Name = "media-info"}); - else existing.Count += newStats.Commands.MediaInfo; - } - - if(newStats.Commands.MediaScan > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.MediaScan, Name = "media-scan"}); - else existing.Count += newStats.Commands.MediaScan; - } - - if(newStats.Commands.PrintHex > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "printhex"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.PrintHex, Name = "printhex"}); - else existing.Count += newStats.Commands.PrintHex; - } - - if(newStats.Commands.Verify > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "verify"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.Verify, Name = "verify"}); - else existing.Count += newStats.Commands.Verify; - } - - if(newStats.Commands.Ls > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "ls"); - - if(existing == null) ctx.Commands.Add(new Command {Count = newStats.Commands.Ls, Name = "ls"}); - else existing.Count += newStats.Commands.Ls; - } - - if(newStats.Commands.ExtractFiles > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "extract-files"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.ExtractFiles, Name = "extract-files"}); - else existing.Count += newStats.Commands.ExtractFiles; - } - - if(newStats.Commands.ListDevices > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-devices"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.ListDevices, Name = "list-devices"}); - else existing.Count += newStats.Commands.ListDevices; - } - - if(newStats.Commands.ListEncodings > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "list-encodings"); - - if(existing == null) - ctx.Commands.Add(new Command - { - Count = newStats.Commands.ListEncodings, Name = "list-encodings" - }); - else existing.Count += newStats.Commands.ListEncodings; - } - - if(newStats.Commands.ConvertImage > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "convert-image"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.ConvertImage, Name = "convert-image"}); - else existing.Count += newStats.Commands.ConvertImage; - } - - if(newStats.Commands.ImageInfo > 0) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == "image-info"); - - if(existing == null) - ctx.Commands.Add(new Command {Count = newStats.Commands.ImageInfo, Name = "image-info"}); - else existing.Count += newStats.Commands.ImageInfo; - } - } - - if(newStats.OperatingSystems != null) - foreach(OsStats operatingSystem in newStats.OperatingSystems) - { - if(string.IsNullOrWhiteSpace(operatingSystem.name) || - string.IsNullOrWhiteSpace(operatingSystem.version)) continue; - - OperatingSystem existing = - ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && - c.Version == operatingSystem.version); - - if(existing == null) - ctx.OperatingSystems.Add(new OperatingSystem - { - Count = operatingSystem.Value, - Name = operatingSystem.name, - Version = operatingSystem.version - }); - else existing.Count += operatingSystem.Value; - } - else - { - OperatingSystem existing = - ctx.OperatingSystems.FirstOrDefault(c => c.Name == "Linux" && c.Version == null); - - if(existing == null) ctx.OperatingSystems.Add(new OperatingSystem {Count = 1, Name = "Linux"}); - else existing.Count++; - } - - if(newStats.Versions != null) - foreach(NameValueStats nvs in newStats.Versions) - { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; - - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); - - if(existing == null) ctx.Versions.Add(new Version {Count = nvs.Value, Value = nvs.name}); - else existing.Count += nvs.Value; - } - else - { - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == "previous"); - - if(existing == null) ctx.Versions.Add(new Version {Count = 1, Value = "previous"}); - else existing.Count++; - } - - if(newStats.Filesystems != null) - foreach(NameValueStats nvs in newStats.Filesystems) - { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; - - Filesystem existing = ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Filesystems.Add(new Filesystem {Count = nvs.Value, Name = nvs.name}); - else existing.Count += nvs.Value; - } - - if(newStats.Partitions != null) - foreach(NameValueStats nvs in newStats.Partitions) - { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; - - Partition existing = ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Partitions.Add(new Partition {Count = nvs.Value, Name = nvs.name}); - else existing.Count += nvs.Value; - } - - if(newStats.MediaImages != null) - foreach(NameValueStats nvs in newStats.MediaImages) - { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; - - MediaFormat existing = ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.MediaFormats.Add(new MediaFormat {Count = nvs.Value, Name = nvs.name}); - else existing.Count += nvs.Value; - } - - if(newStats.Filters != null) - foreach(NameValueStats nvs in newStats.Filters) - { - if(string.IsNullOrWhiteSpace(nvs.name)) continue; - - Filter existing = ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Filters.Add(new Filter {Count = nvs.Value, Name = nvs.name}); - else existing.Count += nvs.Value; - } - - if(newStats.Devices != null) - foreach(DeviceStats device in newStats.Devices) - { - if(string.IsNullOrWhiteSpace(device.Model)) continue; - - if(!ctx.DeviceStats.Any(c => c.Bus == device.Bus && c.Manufacturer == device.Manufacturer && - c.Model == device.Model && c.Revision == device.Revision)) - ctx.DeviceStats.Add(new DeviceStat - { - Bus = device.Bus, - Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision - }); - } - - if(newStats.Medias != null) - foreach(MediaStats media in newStats.Medias) - { - if(string.IsNullOrWhiteSpace(media.type)) continue; - - Media existing = ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); - - if(existing == null) - ctx.Medias.Add(new Media {Count = media.Value, Real = media.real, Type = media.type}); - else existing.Count += media.Value; - } - - ctx.SaveChanges(); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/TestedMedia.cs b/Server/DiscImageChef.Server/App_Start/TestedMedia.cs deleted file mode 100644 index 70ab174ab..000000000 --- a/Server/DiscImageChef.Server/App_Start/TestedMedia.cs +++ /dev/null @@ -1,306 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : TestedMedia.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Decodes media tests from reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Collections.Generic; - -namespace DiscImageChef.Server.App_Start -{ - public static class TestedMedia - { - /// - /// Takes the tested media from a device report and prints it as a list of values - /// - /// true if device report is from an ATA device - /// List to put values on - /// List of tested media - public static void Report(List testedMedias, ref List mediaOneValue) - { - foreach(CommonTypes.Metadata.TestedMedia testedMedia in testedMedias) - { - if(!string.IsNullOrWhiteSpace(testedMedia.MediumTypeName)) - { - mediaOneValue.Add($"Information for medium named \"{testedMedia.MediumTypeName}\""); - if(testedMedia.MediumType != null) - mediaOneValue.Add($"Medium type code: {testedMedia.MediumType:X2}h"); - } - else if(testedMedia.MediumType != null) - mediaOneValue.Add($"Information for medium type {testedMedia.MediumType:X2}h"); - else mediaOneValue.Add("Information for unknown medium type"); - - mediaOneValue.Add(testedMedia.MediaIsRecognized - ? "Drive recognizes this medium." - : "Drive does not recognize this medium."); - - if(!string.IsNullOrWhiteSpace(testedMedia.Manufacturer)) - mediaOneValue.Add($"Medium manufactured by: {testedMedia.Manufacturer}"); - if(!string.IsNullOrWhiteSpace(testedMedia.Model)) - mediaOneValue.Add($"Medium model: {testedMedia.Model}"); - if(testedMedia.Density != null) mediaOneValue.Add($"Density code: {testedMedia.Density:X2}h"); - - if(testedMedia.BlockSize != null) - mediaOneValue.Add($"Logical sector size: {testedMedia.BlockSize} bytes"); - if(testedMedia.PhysicalBlockSize != null) - mediaOneValue.Add($"Physical sector size: {testedMedia.PhysicalBlockSize} bytes"); - if(testedMedia.LongBlockSize != null) - mediaOneValue.Add($"READ LONG sector size: {testedMedia.LongBlockSize} bytes"); - - if(testedMedia.Blocks != null && testedMedia.BlockSize != null) - { - mediaOneValue.Add($"Medium has {testedMedia.Blocks} blocks of {testedMedia.BlockSize} bytes each"); - - if(testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000000) - mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(testedMedia.Blocks * testedMedia.BlockSize / 1024 / 1024 > 1000) - mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); - else - mediaOneValue - .Add($"Medium size: {testedMedia.Blocks * testedMedia.BlockSize} bytes, {testedMedia.Blocks * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)(testedMedia.Blocks * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); - } - - if(testedMedia.CHS != null && testedMedia.CurrentCHS != null) - { - int currentSectors = testedMedia.CurrentCHS.Cylinders * testedMedia.CurrentCHS.Heads * - testedMedia.CurrentCHS.Sectors; - mediaOneValue - .Add($"Cylinders: {testedMedia.CHS.Cylinders} max., {testedMedia.CurrentCHS.Cylinders} current"); - mediaOneValue.Add($"Heads: {testedMedia.CHS.Heads} max., {testedMedia.CurrentCHS.Heads} current"); - mediaOneValue - .Add($"Sectors per track: {testedMedia.CHS.Sectors} max., {testedMedia.CurrentCHS.Sectors} current"); - mediaOneValue - .Add($"Sectors addressable in CHS mode: {testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors} max., {currentSectors} current"); - mediaOneValue - .Add($"Medium size in CHS mode: {(ulong)currentSectors * testedMedia.BlockSize} bytes, {(ulong)currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); - } - else if(testedMedia.CHS != null) - { - int currentSectors = testedMedia.CHS.Cylinders * testedMedia.CHS.Heads * testedMedia.CHS.Sectors; - mediaOneValue.Add($"Cylinders: {testedMedia.CHS.Cylinders}"); - mediaOneValue.Add($"Heads: {testedMedia.CHS.Heads}"); - mediaOneValue.Add($"Sectors per track: {testedMedia.CHS.Sectors}"); - mediaOneValue.Add($"Sectors addressable in CHS mode: {currentSectors}"); - mediaOneValue - .Add($"Medium size in CHS mode: {(ulong)currentSectors * testedMedia.BlockSize} bytes, {(ulong)currentSectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)currentSectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); - } - - if(testedMedia.LBASectors != null) - { - mediaOneValue.Add($"Sectors addressable in sectors in 28-bit LBA mode: {testedMedia.LBASectors}"); - - if((ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) - mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if((ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1024 / 1024 > 1000) - mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); - else - mediaOneValue - .Add($"Medium size in 28-bit LBA mode: {(ulong)testedMedia.LBASectors * testedMedia.BlockSize} bytes, {(ulong)testedMedia.LBASectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)((ulong)testedMedia.LBASectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); - } - - if(testedMedia.LBA48Sectors != null) - { - mediaOneValue.Add($"Sectors addressable in sectors in 48-bit LBA mode: {testedMedia.LBA48Sectors}"); - - if(testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000000) - mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(testedMedia.LBA48Sectors * testedMedia.BlockSize / 1024 / 1024 > 1000) - mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); - else - mediaOneValue - .Add($"Medium size in 48-bit LBA mode: {testedMedia.LBA48Sectors * testedMedia.BlockSize} bytes, {testedMedia.LBA48Sectors * testedMedia.BlockSize / 1000 / 1000} Mb, {(double)(testedMedia.LBA48Sectors * testedMedia.BlockSize) / 1024 / 1024:F2} MiB"); - } - - if(testedMedia.NominalRotationRate != null && testedMedia.NominalRotationRate != 0x0000 && - testedMedia.NominalRotationRate != 0xFFFF) - mediaOneValue.Add(testedMedia.NominalRotationRate == 0x0001 - ? "Medium does not rotate." - : $"Medium rotates at {testedMedia.NominalRotationRate} rpm"); - - if(testedMedia.BlockSize != null && - testedMedia.PhysicalBlockSize != null && - testedMedia.BlockSize.Value != testedMedia.PhysicalBlockSize.Value && - (testedMedia.LogicalAlignment & 0x8000) == 0x0000 && - (testedMedia.LogicalAlignment & 0x4000) == 0x4000) - mediaOneValue - .Add($"Logical sector starts at offset {testedMedia.LogicalAlignment & 0x3FFF} from physical sector"); - - if(testedMedia.SupportsReadSectors == true) - mediaOneValue.Add("Device can use the READ SECTOR(S) command in CHS mode with this medium"); - if(testedMedia.SupportsReadRetry == true) - mediaOneValue.Add("Device can use the READ SECTOR(S) RETRY command in CHS mode with this medium"); - if(testedMedia.SupportsReadDma == true) - mediaOneValue.Add("Device can use the READ DMA command in CHS mode with this medium"); - if(testedMedia.SupportsReadDmaRetry == true) - mediaOneValue.Add("Device can use the READ DMA RETRY command in CHS mode with this medium"); - if(testedMedia.SupportsReadLong == true) - mediaOneValue.Add("Device can use the READ LONG command in CHS mode with this medium"); - if(testedMedia.SupportsReadLongRetry == true) - mediaOneValue.Add("Device can use the READ LONG RETRY command in CHS mode with this medium"); - - if(testedMedia.SupportsReadLba == true) - mediaOneValue.Add("Device can use the READ SECTOR(S) command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadRetryLba == true) - mediaOneValue - .Add("Device can use the READ SECTOR(S) RETRY command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaLba == true) - mediaOneValue.Add("Device can use the READ DMA command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaRetryLba == true) - mediaOneValue.Add("Device can use the READ DMA RETRY command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadLongLba == true) - mediaOneValue.Add("Device can use the READ LONG command in 28-bit LBA mode with this medium"); - if(testedMedia.SupportsReadLongRetryLba == true) - mediaOneValue.Add("Device can use the READ LONG RETRY command in 28-bit LBA mode with this medium"); - - if(testedMedia.SupportsReadLba48 == true) - mediaOneValue.Add("Device can use the READ SECTOR(S) command in 48-bit LBA mode with this medium"); - if(testedMedia.SupportsReadDmaLba48 == true) - mediaOneValue.Add("Device can use the READ DMA command in 48-bit LBA mode with this medium"); - - if(testedMedia.SupportsSeek == true) - mediaOneValue.Add("Device can use the SEEK command in CHS mode with this medium"); - if(testedMedia.SupportsSeekLba == true) - mediaOneValue.Add("Device can use the SEEK command in 28-bit LBA mode with this medium"); - - if(testedMedia.SupportsReadCapacity == true) - mediaOneValue.Add("Device can use the READ CAPACITY (10) command with this medium"); - if(testedMedia.SupportsReadCapacity16 == true) - mediaOneValue.Add("Device can use the READ CAPACITY (16) command with this medium"); - if(testedMedia.SupportsRead6 == true) - mediaOneValue.Add("Device can use the READ (6) command with this medium"); - if(testedMedia.SupportsRead10 == true) - mediaOneValue.Add("Device can use the READ (10) command with this medium"); - if(testedMedia.SupportsRead12 == true) - mediaOneValue.Add("Device can use the READ (12) command with this medium"); - if(testedMedia.SupportsRead16 == true) - mediaOneValue.Add("Device can use the READ (16) command with this medium"); - if(testedMedia.SupportsReadLong == true) - mediaOneValue.Add("Device can use the READ LONG (10) command with this medium"); - if(testedMedia.SupportsReadLong16 == true) - mediaOneValue.Add("Device can use the READ LONG (16) command with this medium"); - - if(testedMedia.SupportsReadCd == true) - mediaOneValue.Add("Device can use the READ CD command with LBA addressing with this medium"); - if(testedMedia.SupportsReadCdMsf == true) - mediaOneValue.Add("Device can use the READ CD command with MM:SS:FF addressing with this medium"); - if(testedMedia.SupportsReadCdRaw == true) - mediaOneValue - .Add("Device can use the READ CD command with LBA addressing with this medium to read raw sector"); - if(testedMedia.SupportsReadCdMsfRaw == true) - mediaOneValue - .Add("Device can use the READ CD command with MM:SS:FF addressing with this medium read raw sector"); - - if(testedMedia.SupportsHLDTSTReadRawDVD == true) - mediaOneValue.Add("Device can use the HL-DT-ST vendor READ DVD (RAW) command with this medium"); - if(testedMedia.SupportsNECReadCDDA == true) - mediaOneValue.Add("Device can use the NEC vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPioneerReadCDDA == true) - mediaOneValue.Add("Device can use the PIONEER vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPioneerReadCDDAMSF == true) - mediaOneValue.Add("Device can use the PIONEER vendor READ CD-DA MSF command with this medium"); - if(testedMedia.SupportsPlextorReadCDDA == true) - mediaOneValue.Add("Device can use the PLEXTOR vendor READ CD-DA command with this medium"); - if(testedMedia.SupportsPlextorReadRawDVD == true) - mediaOneValue.Add("Device can use the PLEXOR vendor READ DVD (RAW) command with this medium"); - - if(testedMedia.CanReadAACS == true) - mediaOneValue.Add("Device can read the Advanced Access Content System from this medium"); - if(testedMedia.CanReadADIP == true) - mediaOneValue.Add("Device can read the DVD ADress-In-Pregroove from this medium"); - if(testedMedia.CanReadATIP == true) - mediaOneValue.Add("Device can read the CD Absolute-Time-In-Pregroove from this medium"); - if(testedMedia.CanReadBCA == true) - mediaOneValue.Add("Device can read the Burst Cutting Area from this medium"); - if(testedMedia.CanReadC2Pointers == true) - mediaOneValue.Add("Device can report the C2 pointers when reading from this medium"); - if(testedMedia.CanReadCMI == true) - mediaOneValue.Add("Device can read the Copyright Management Information from this medium"); - if(testedMedia.CanReadCorrectedSubchannel == true) - mediaOneValue.Add("Device can correct subchannels when reading from this medium"); - if(testedMedia.CanReadCorrectedSubchannelWithC2 == true) - mediaOneValue - .Add("Device can correct subchannels and report the C2 pointers when reading from this medium"); - if(testedMedia.CanReadDCB == true) - mediaOneValue.Add("Device can read the Disc Control Blocks from this medium"); - if(testedMedia.CanReadDDS == true) - mediaOneValue.Add("Device can read the Disc Definition Structure from this medium"); - if(testedMedia.CanReadDMI == true) - mediaOneValue.Add("Device can read the Disc Manufacurer Information from this medium"); - if(testedMedia.CanReadDiscInformation == true) - mediaOneValue.Add("Device can read the Disc Information from this medium"); - if(testedMedia.CanReadFullTOC == true) - mediaOneValue.Add("Device can read the Table of Contents from this medium, without processing it"); - if(testedMedia.CanReadHDCMI == true) - mediaOneValue.Add("Device can read the HD DVD Copyright Management Information from this medium"); - if(testedMedia.CanReadLayerCapacity == true) - mediaOneValue.Add("Device can read the layer capacity from this medium"); - if(testedMedia.CanReadFirstTrackPreGap == true) - mediaOneValue.Add("Device can read the first track's pregap data"); - if(testedMedia.CanReadLeadIn == true) mediaOneValue.Add("Device can read the Lead-In from this medium"); - if(testedMedia.CanReadLeadOut == true) - mediaOneValue.Add("Device can read the Lead-Out from this medium"); - if(testedMedia.CanReadMediaID == true) - mediaOneValue.Add("Device can read the Media ID from this medium"); - if(testedMedia.CanReadMediaSerial == true) - mediaOneValue.Add("Device can read the Media Serial Number from this medium"); - if(testedMedia.CanReadPAC == true) mediaOneValue.Add("Device can read the PAC from this medium"); - if(testedMedia.CanReadPFI == true) - mediaOneValue.Add("Device can read the Physical Format Information from this medium"); - if(testedMedia.CanReadPMA == true) - mediaOneValue.Add("Device can read the Power Management Area from this medium"); - if(testedMedia.CanReadPQSubchannel == true) - mediaOneValue.Add("Device can read the P to Q subchannels from this medium"); - if(testedMedia.CanReadPQSubchannelWithC2 == true) - mediaOneValue - .Add("Device can read the P to Q subchannels from this medium reporting the C2 pointers"); - if(testedMedia.CanReadPRI == true) - mediaOneValue.Add("Device can read the Pre-Recorded Information from this medium"); - if(testedMedia.CanReadRWSubchannel == true) - mediaOneValue.Add("Device can read the R to W subchannels from this medium"); - if(testedMedia.CanReadRWSubchannelWithC2 == true) - mediaOneValue - .Add("Device can read the R to W subchannels from this medium reporting the C2 pointers"); - if(testedMedia.CanReadRecordablePFI == true) - mediaOneValue.Add("Device can read the Physical Format Information from Lead-In from this medium"); - if(testedMedia.CanReadSpareAreaInformation == true) - mediaOneValue.Add("Device can read the Spare Area Information from this medium"); - if(testedMedia.CanReadTOC == true) - mediaOneValue.Add("Device can read the Table of Contents from this medium"); - - mediaOneValue.Add(""); - } - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/App_Start/WebApiConfig.cs b/Server/DiscImageChef.Server/App_Start/WebApiConfig.cs deleted file mode 100644 index e0cecbf5a..000000000 --- a/Server/DiscImageChef.Server/App_Start/WebApiConfig.cs +++ /dev/null @@ -1,61 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : WebApiConfig.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Configures Web API -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -// This is verbatim from ASP.NET so left as is -// ReSharper disable All - -using System.Data.Entity.Migrations; -using System.Web.Http; -using DiscImageChef.Server.Migrations; -using DiscImageChef.Server.Models; - -namespace DiscImageChef.Server -{ - public static class WebApiConfig - { - public static void Register(HttpConfiguration config) - { - // Web API configuration and services - - // Web API routes - config.MapHttpAttributeRoutes(); - - config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", - defaults: new {id = RouteParameter.Optional}); - - //DicServerContext ctx = new DicServerContext(); - Configuration migratorConfig = new Migrations.Configuration(); - DbMigrator dbMigrator = new DbMigrator(migratorConfig); - dbMigrator.Update(); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/HomeController.cs b/Server/DiscImageChef.Server/Controllers/HomeController.cs deleted file mode 100644 index bbb25e280..000000000 --- a/Server/DiscImageChef.Server/Controllers/HomeController.cs +++ /dev/null @@ -1,199 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : HomeController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Provides documentation data for razor views. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.IO; -using System.Reflection; -using System.Web.Hosting; -using System.Web.Mvc; -using Markdig; - -namespace DiscImageChef.Server.Controllers -{ - [RoutePrefix("Home")] - public class HomeController : Controller - { - [Route("")] - [Route("~/")] - [Route("README")] - [Route("~/README")] - public ActionResult Index() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "README.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")"); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("Changelog")] - [Route("~/Changelog")] - public ActionResult Changelog() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "Changelog.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")"); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("CODE_OF_CONDUCT")] - [Route("~/CODE_OF_CONDUCT")] - public ActionResult CODE_OF_CONDUCT() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "CODE_OF_CONDUCT.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("PULL_REQUEST_TEMPLATE")] - [Route("~/PULL_REQUEST_TEMPLATE")] - public ActionResult PULL_REQUEST_TEMPLATE() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "PULL_REQUEST_TEMPLATE.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("ISSUE_TEMPLATE")] - [Route("~/ISSUE_TEMPLATE")] - public ActionResult ISSUE_TEMPLATE() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "ISSUE_TEMPLATE.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("CONTRIBUTING")] - [Route("~/CONTRIBUTING")] - public ActionResult CONTRIBUTING() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "CONTRIBUTING.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")").Replace("(.github/", "("); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("DONATING")] - [Route("~/DONATING")] - public ActionResult DONATING() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "DONATING.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")"); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - - [Route("TODO")] - [Route("~/TODO")] - public ActionResult TODO() - { - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "TODO.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mdcontent = mdcontent.Replace(".md)", ")"); - - ViewBag.Markdown = Markdown.ToHtml(mdcontent); - - ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - return View(); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/ReportController.cs b/Server/DiscImageChef.Server/Controllers/ReportController.cs deleted file mode 100644 index 5f599a50b..000000000 --- a/Server/DiscImageChef.Server/Controllers/ReportController.cs +++ /dev/null @@ -1,474 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ReportController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Fetches reports from database for Razor views. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web.Mvc; -using System.Web.Routing; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Decoders.PCMCIA; -using DiscImageChef.Decoders.SCSI; -using DiscImageChef.Server.Models; -using Tuple = DiscImageChef.Decoders.PCMCIA.Tuple; - -namespace DiscImageChef.Server.Controllers -{ - public class ReportController : Controller - { - public ActionResult Index() => RedirectToAction("View", "Report", new RouteValueDictionary {{"id", 1}}); - - public ActionResult View(int? id) - { - if(id == null || id <= 0) return Content("Incorrect device report request"); - - try - { - DicServerContext ctx = new DicServerContext(); - Device report = ctx.Devices.FirstOrDefault(d => d.Id == id); - - if(report is null) return Content("Cannot find requested report"); - - ViewBag.lblManufacturer = report.Manufacturer; - ViewBag.lblModel = report.Model; - ViewBag.lblRevision = report.Revision; - - if(report.USB != null) - { - string usbVendorDescription = null; - string usbProductDescription = null; - - UsbProduct dbProduct = - ctx.UsbProducts.FirstOrDefault(p => p.ProductId == report.USB.ProductID && - p.Vendor != null && - p.Vendor.VendorId == report.USB.VendorID); - - if(dbProduct is null) - { - UsbVendor dbVendor = ctx.UsbVendors.FirstOrDefault(v => v.VendorId == report.USB.VendorID); - - if(!(dbVendor is null)) usbVendorDescription = dbVendor.Vendor; - } - else - { - usbProductDescription = dbProduct.Product; - usbVendorDescription = dbProduct.Vendor.Vendor; - } - - ViewBag.UsbItem = new Item - { - Manufacturer = report.USB.Manufacturer, - Product = report.USB.Product, - VendorDescription = - usbVendorDescription != null - ? $"0x{report.USB.VendorID:x4} ({usbVendorDescription})" - : $"0x{report.USB.VendorID:x4}", - ProductDescription = usbProductDescription != null - ? $"0x{report.USB.ProductID:x4} ({usbProductDescription})" - : $"0x{report.USB.ProductID:x4}" - }; - } - - if(report.FireWire != null) - ViewBag.FireWireItem = new Item - { - Manufacturer = report.FireWire.Manufacturer, - Product = report.FireWire.Product, - VendorDescription = $"0x{report.FireWire.VendorID:x8}", - ProductDescription = $"0x{report.FireWire.ProductID:x8}" - }; - - if(report.PCMCIA != null) - { - ViewBag.PcmciaItem = new PcmciaItem - { - Manufacturer = report.PCMCIA.Manufacturer, - Product = report.PCMCIA.ProductName, - VendorDescription = $"0x{report.PCMCIA.ManufacturerCode:x4}", - ProductDescription = $"0x{report.PCMCIA.CardCode:x4}", - Compliance = report.PCMCIA.Compliance - }; - - Tuple[] tuples = CIS.GetTuples(report.PCMCIA.CIS); - if(tuples != null) - { - Dictionary decodedTuples = new Dictionary(); - foreach(Tuple tuple in tuples) - switch(tuple.Code) - { - case TupleCodes.CISTPL_NULL: - case TupleCodes.CISTPL_END: - case TupleCodes.CISTPL_MANFID: - case TupleCodes.CISTPL_VERS_1: break; - case TupleCodes.CISTPL_DEVICEGEO: - case TupleCodes.CISTPL_DEVICEGEO_A: - DeviceGeometryTuple geom = CIS.DecodeDeviceGeometryTuple(tuple.Data); - if(geom?.Geometries != null) - foreach(DeviceGeometry geometry in geom.Geometries) - { - decodedTuples.Add("Device width", - $"{(1 << (geometry.CardInterface - 1)) * 8} bits"); - decodedTuples.Add("Erase block", - $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); - decodedTuples.Add("Read block", - $"{(1 << (geometry.ReadBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); - decodedTuples.Add("Write block", - $"{(1 << (geometry.WriteBlockSize - 1)) * (1 << (geometry.Interleaving - 1))} bytes"); - decodedTuples.Add("Partition alignment", - $"{(1 << (geometry.EraseBlockSize - 1)) * (1 << (geometry.Interleaving - 1)) * (1 << (geometry.Partitions - 1))} bytes"); - } - - break; - case TupleCodes.CISTPL_ALTSTR: - case TupleCodes.CISTPL_BAR: - case TupleCodes.CISTPL_BATTERY: - case TupleCodes.CISTPL_BYTEORDER: - case TupleCodes.CISTPL_CFTABLE_ENTRY: - case TupleCodes.CISTPL_CFTABLE_ENTRY_CB: - case TupleCodes.CISTPL_CHECKSUM: - case TupleCodes.CISTPL_CONFIG: - case TupleCodes.CISTPL_CONFIG_CB: - case TupleCodes.CISTPL_DATE: - case TupleCodes.CISTPL_DEVICE: - case TupleCodes.CISTPL_DEVICE_A: - case TupleCodes.CISTPL_DEVICE_OA: - case TupleCodes.CISTPL_DEVICE_OC: - case TupleCodes.CISTPL_EXTDEVIC: - case TupleCodes.CISTPL_FORMAT: - case TupleCodes.CISTPL_FORMAT_A: - case TupleCodes.CISTPL_FUNCE: - case TupleCodes.CISTPL_FUNCID: - case TupleCodes.CISTPL_GEOMETRY: - case TupleCodes.CISTPL_INDIRECT: - case TupleCodes.CISTPL_JEDEC_A: - case TupleCodes.CISTPL_JEDEC_C: - case TupleCodes.CISTPL_LINKTARGET: - case TupleCodes.CISTPL_LONGLINK_A: - case TupleCodes.CISTPL_LONGLINK_C: - case TupleCodes.CISTPL_LONGLINK_CB: - case TupleCodes.CISTPL_LONGLINK_MFC: - case TupleCodes.CISTPL_NO_LINK: - case TupleCodes.CISTPL_ORG: - case TupleCodes.CISTPL_PWR_MGMNT: - case TupleCodes.CISTPL_SPCL: - case TupleCodes.CISTPL_SWIL: - case TupleCodes.CISTPL_VERS_2: - decodedTuples.Add("Undecoded tuple ID", tuple.Code.ToString()); - break; - default: - decodedTuples.Add("Unknown tuple ID", $"0x{(byte)tuple.Code:X2}"); - break; - } - - if(decodedTuples.Count > 0) ViewBag.repPcmciaTuples = decodedTuples; - } - } - - bool removable = true; - List testedMedia = null; - bool ata = false; - bool atapi = false; - bool sscMedia = false; - - if(report.ATA != null || report.ATAPI != null) - { - ata = true; - List ataOneValue = new List(); - Dictionary ataTwoValue = new Dictionary(); - CommonTypes.Metadata.Ata ataReport; - - if(report.ATAPI != null) - { - ViewBag.AtaItem = "ATAPI"; - ataReport = report.ATAPI; - atapi = true; - } - else - { - ViewBag.AtaItem = "ATA"; - ataReport = report.ATA; - } - - bool cfa = report.CompactFlash; - - if(atapi && !cfa) ViewBag.lblAtaDeviceType = "ATAPI device"; - else if(!atapi && cfa) ViewBag.lblAtaDeviceType = "CompactFlash device"; - else ViewBag.lblAtaDeviceType = "ATA device"; - - Ata.Report(ataReport, cfa, atapi, ref removable, ref ataOneValue, ref ataTwoValue, ref testedMedia); - - ViewBag.repAtaOne = ataOneValue; - ViewBag.repAtaTwo = ataTwoValue; - } - - if(report.SCSI != null) - { - List scsiOneValue = new List(); - Dictionary modePages = new Dictionary(); - Dictionary evpdPages = new Dictionary(); - - string vendorId = StringHandlers.CToString(report.SCSI.Inquiry?.VendorIdentification); - if(report.SCSI.Inquiry != null) - { - Inquiry.SCSIInquiry inq = report.SCSI.Inquiry.Value; - ViewBag.lblScsiVendor = VendorString.Prettify(vendorId) != vendorId - ? $"{vendorId} ({VendorString.Prettify(vendorId)})" - : vendorId; - ViewBag.lblScsiProduct = StringHandlers.CToString(inq.ProductIdentification); - ViewBag.lblScsiRevision = StringHandlers.CToString(inq.ProductRevisionLevel); - } - - scsiOneValue.AddRange(ScsiInquiry.Report(report.SCSI.Inquiry)); - - if(report.SCSI.SupportsModeSense6) scsiOneValue.Add("Device supports MODE SENSE (6)"); - if(report.SCSI.SupportsModeSense10) scsiOneValue.Add("Device supports MODE SENSE (10)"); - if(report.SCSI.SupportsModeSubpages) scsiOneValue.Add("Device supports MODE SENSE subpages"); - - if(report.SCSI.ModeSense != null) - { - PeripheralDeviceTypes devType = PeripheralDeviceTypes.DirectAccess; - if(report.SCSI.Inquiry != null) - devType = (PeripheralDeviceTypes)report.SCSI.Inquiry.Value.PeripheralDeviceType; - ScsiModeSense.Report(report.SCSI.ModeSense, vendorId, devType, ref scsiOneValue, ref modePages); - } - - if(modePages.Count > 0) ViewBag.repModeSense = modePages; - - if(report.SCSI.EVPDPages != null) ScsiEvpd.Report(report.SCSI.EVPDPages, vendorId, ref evpdPages); - - if(evpdPages.Count > 0) ViewBag.repEvpd = evpdPages; - - if(report.SCSI.MultiMediaDevice != null) - { - testedMedia = report.SCSI.MultiMediaDevice.TestedMedia; - - if(report.SCSI.MultiMediaDevice.ModeSense2A != null) - { - List mmcModeOneValue = new List(); - ScsiMmcMode.Report(report.SCSI.MultiMediaDevice.ModeSense2A, ref mmcModeOneValue); - if(mmcModeOneValue.Count > 0) ViewBag.repScsiMmcMode = mmcModeOneValue; - } - - if(report.SCSI.MultiMediaDevice.Features != null) - { - List mmcFeaturesOneValue = new List(); - ScsiMmcFeatures.Report(report.SCSI.MultiMediaDevice.Features, ref mmcFeaturesOneValue); - if(mmcFeaturesOneValue.Count > 0) ViewBag.repScsiMmcFeatures = mmcFeaturesOneValue; - } - } - else if(report.SCSI.SequentialDevice != null) - { - ViewBag.divScsiSscVisible = true; - - ViewBag.lblScsiSscGranularity = - report.SCSI.SequentialDevice.BlockSizeGranularity?.ToString() ?? "Unspecified"; - - ViewBag.lblScsiSscMaxBlock = - report.SCSI.SequentialDevice.MaxBlockLength?.ToString() ?? "Unspecified"; - - ViewBag.lblScsiSscMinBlock = - report.SCSI.SequentialDevice.MinBlockLength?.ToString() ?? "Unspecified"; - - if(report.SCSI.SequentialDevice.SupportedDensities != null) - ViewBag.repScsiSscDensities = report.SCSI.SequentialDevice.SupportedDensities; - - if(report.SCSI.SequentialDevice.SupportedMediaTypes != null) - ViewBag.repScsiSscMedias = report.SCSI.SequentialDevice.SupportedMediaTypes; - - if(report.SCSI.SequentialDevice.TestedMedia != null) - { - List mediaOneValue = new List(); - SscTestedMedia.Report(report.SCSI.SequentialDevice.TestedMedia, ref mediaOneValue); - if(mediaOneValue.Count > 0) - { - sscMedia = true; - ViewBag.repTestedMedia = mediaOneValue; - } - } - } - else if(report.SCSI.ReadCapabilities != null) - { - removable = false; - scsiOneValue.Add(""); - - if(report.SCSI.ReadCapabilities.Blocks.HasValue && - report.SCSI.ReadCapabilities.BlockSize.HasValue) - { - scsiOneValue - .Add($"Device has {report.SCSI.ReadCapabilities.Blocks} blocks of {report.SCSI.ReadCapabilities.BlockSize} bytes each"); - - if(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1024 / - 1024 > 1000000) - scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000 / 1000} Tb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024 / 1024:F2} TiB"); - else if(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / - 1024 / - 1024 > 1000) - scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000 / 1000} Gb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024 / 1024:F2} GiB"); - else - scsiOneValue - .Add($"Device size: {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize} bytes, {report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize / 1000 / 1000} Mb, {(double)(report.SCSI.ReadCapabilities.Blocks * report.SCSI.ReadCapabilities.BlockSize) / 1024 / 1024:F2} MiB"); - } - - if(report.SCSI.ReadCapabilities.MediumType.HasValue) - scsiOneValue.Add($"Medium type code: {report.SCSI.ReadCapabilities.MediumType:X2}h"); - if(report.SCSI.ReadCapabilities.Density.HasValue) - scsiOneValue.Add($"Density code: {report.SCSI.ReadCapabilities.Density:X2}h"); - if((report.SCSI.ReadCapabilities.SupportsReadLong == true || - report.SCSI.ReadCapabilities.SupportsReadLong16 == true) && - report.SCSI.ReadCapabilities.LongBlockSize.HasValue) - scsiOneValue.Add($"Long block size: {report.SCSI.ReadCapabilities.LongBlockSize} bytes"); - if(report.SCSI.ReadCapabilities.SupportsReadCapacity == true) - scsiOneValue.Add("Device supports READ CAPACITY (10) command."); - if(report.SCSI.ReadCapabilities.SupportsReadCapacity16 == true) - scsiOneValue.Add("Device supports READ CAPACITY (16) command."); - if(report.SCSI.ReadCapabilities.SupportsRead6 == true) - scsiOneValue.Add("Device supports READ (6) command."); - if(report.SCSI.ReadCapabilities.SupportsRead10 == true) - scsiOneValue.Add("Device supports READ (10) command."); - if(report.SCSI.ReadCapabilities.SupportsRead12 == true) - scsiOneValue.Add("Device supports READ (12) command."); - if(report.SCSI.ReadCapabilities.SupportsRead16 == true) - scsiOneValue.Add("Device supports READ (16) command."); - if(report.SCSI.ReadCapabilities.SupportsReadLong == true) - scsiOneValue.Add("Device supports READ LONG (10) command."); - if(report.SCSI.ReadCapabilities.SupportsReadLong16 == true) - scsiOneValue.Add("Device supports READ LONG (16) command."); - } - else testedMedia = report.SCSI.RemovableMedias; - - ViewBag.repScsi = scsiOneValue; - } - - if(report.MultiMediaCard != null) - { - List mmcOneValue = new List(); - - if(report.MultiMediaCard.CID != null) - { - mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCID(report.MultiMediaCard.CID) - .Replace("\n", "
")); - mmcOneValue.Add(""); - } - - if(report.MultiMediaCard.CSD != null) - { - mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCSD(report.MultiMediaCard.CSD) - .Replace("\n", "
")); - mmcOneValue.Add(""); - } - - if(report.MultiMediaCard.ExtendedCSD != null) - { - mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyExtendedCSD(report.MultiMediaCard.ExtendedCSD) - .Replace("\n", "
")); - mmcOneValue.Add(""); - } - - if(report.MultiMediaCard.OCR != null) - { - mmcOneValue.Add(Decoders.MMC.Decoders.PrettifyCSD(report.MultiMediaCard.OCR) - .Replace("\n", "
")); - mmcOneValue.Add(""); - } - - ViewBag.repMMC = mmcOneValue; - } - - if(report.SecureDigital != null) - { - List sdOneValue = new List(); - - if(report.SecureDigital.CID != null) - { - sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCID(report.SecureDigital.CID) - .Replace("\n", "
")); - sdOneValue.Add(""); - } - - if(report.SecureDigital.CSD != null) - { - sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCSD(report.SecureDigital.CSD) - .Replace("\n", "
")); - sdOneValue.Add(""); - } - - if(report.SecureDigital.SCR != null) - { - sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifySCR(report.SecureDigital.SCR) - .Replace("\n", "
")); - sdOneValue.Add(""); - } - - if(report.SecureDigital.OCR != null) - { - sdOneValue.Add(Decoders.SecureDigital.Decoders.PrettifyCSD(report.SecureDigital.OCR) - .Replace("\n", "
")); - sdOneValue.Add(""); - } - - ViewBag.repSD = sdOneValue; - } - - if(removable && !sscMedia && testedMedia != null) - { - List mediaOneValue = new List(); - App_Start.TestedMedia.Report(testedMedia, ref mediaOneValue); - if(mediaOneValue.Count > 0) ViewBag.repTestedMedia = mediaOneValue; - } - } - catch(Exception) - { - #if DEBUG - throw; - #endif - return Content("Could not load device report"); - } - - return View(); - } - } - - public class Item - { - public string Manufacturer; - public string Product; - public string ProductDescription; - public string VendorDescription; - } - - public class PcmciaItem : Item - { - public string Compliance; - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/StatsController.cs b/Server/DiscImageChef.Server/Controllers/StatsController.cs deleted file mode 100644 index 44da8683f..000000000 --- a/Server/DiscImageChef.Server/Controllers/StatsController.cs +++ /dev/null @@ -1,531 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : StatsController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Fetches statistics for Razor views. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading; -using System.Web.Hosting; -using System.Web.Mvc; -using System.Xml; -using System.Xml.Serialization; -using DiscImageChef.CommonTypes.Interop; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Server.Models; -using Highsoft.Web.Mvc.Charts; -using Filter = DiscImageChef.Server.Models.Filter; -using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; -using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID; -using Version = DiscImageChef.Server.Models.Version; - -namespace DiscImageChef.Server.Controllers -{ - /// - /// Renders a page with statistics, list of media type, devices, etc - /// - public class StatsController : Controller - { - DicServerContext ctx = new DicServerContext(); - List devices; - List operatingSystems; - List realMedia; - List versions; - List virtualMedia; - - public ActionResult Index() - { - ViewBag.Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - - try - { - if( - System.IO.File - .Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml"))) - try - { - Stats statistics = new Stats(); - - XmlSerializer xs = new XmlSerializer(statistics.GetType()); - FileStream fs = - WaitForFile(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"), - FileMode.Open, FileAccess.Read, FileShare.Read); - statistics = (Stats)xs.Deserialize(fs); - fs.Close(); - - StatsConverter.Convert(statistics); - - System.IO.File - .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml")); - } - catch(XmlException) - { - // Do nothing - } - - if(ctx.OperatingSystems.Any()) - { - operatingSystems = new List(); - foreach(OperatingSystem nvs in ctx.OperatingSystems) - operatingSystems.Add(new NameValueStats - { - name = - $"{DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), nvs.Name), nvs.Version)}{(string.IsNullOrEmpty(nvs.Version) ? "" : " ")}{nvs.Version}", - Value = nvs.Count - }); - - ViewBag.repOperatingSystems = operatingSystems.OrderBy(os => os.name).ToList(); - - List osPieData = new List(); - - decimal totalOsCount = ctx.OperatingSystems.Sum(o => o.Count); - foreach(string os in ctx.OperatingSystems.Select(o => o.Name).Distinct().ToList()) - { - decimal osCount = ctx.OperatingSystems.Where(o => o.Name == os).Sum(o => o.Count); - - osPieData.Add(new PieSeriesData - { - Name = - DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), - os)), - Y = (double?)(osCount / totalOsCount), - Sliced = os == "Linux", - Selected = os == "Linux" - }); - } - - ViewData["osPieData"] = osPieData; - - List linuxPieData = new List(); - - decimal linuxCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.Linux.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in - ctx.OperatingSystems.Where(o => o.Name == PlatformID.Linux.ToString())) - linuxPieData.Add(new PieSeriesData - { - Name = - $"{DetectOS.GetPlatformName(PlatformID.Linux, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / linuxCount) - }); - - ViewData["linuxPieData"] = linuxPieData; - - List macosPieData = new List(); - - decimal macosCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.MacOSX.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in - ctx.OperatingSystems.Where(o => o.Name == PlatformID.MacOSX.ToString())) - macosPieData.Add(new PieSeriesData - { - Name = - $"{DetectOS.GetPlatformName(PlatformID.MacOSX, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / macosCount) - }); - - ViewData["macosPieData"] = macosPieData; - - List windowsPieData = new List(); - - decimal windowsCount = ctx.OperatingSystems.Where(o => o.Name == PlatformID.Win32NT.ToString()) - .Sum(o => o.Count); - foreach(OperatingSystem version in - ctx.OperatingSystems.Where(o => o.Name == PlatformID.Win32NT.ToString())) - windowsPieData.Add(new PieSeriesData - { - Name = - $"{DetectOS.GetPlatformName(PlatformID.Win32NT, version.Version)}{(string.IsNullOrEmpty(version.Version) ? "" : " ")}{version.Version}", - Y = (double?)(version.Count / windowsCount) - }); - - ViewData["windowsPieData"] = windowsPieData; - } - - if(ctx.Versions.Any()) - { - versions = new List(); - foreach(Version nvs in ctx.Versions) - versions.Add(new NameValueStats - { - name = nvs.Value == "previous" ? "Previous than 3.4.99.0" : nvs.Value, - Value = nvs.Count - }); - - ViewBag.repVersions = versions.OrderBy(ver => ver.name).ToList(); - - decimal totalVersionCount = ctx.Versions.Sum(o => o.Count); - - ViewData["versionsPieData"] = ctx.Versions.Select(version => new PieSeriesData - { - Name = - version.Value == "previous" - ? "Previous than 3.4.99.0" - : version.Value, - Y = (double?)(version.Count / - totalVersionCount), - Sliced = version.Value == "previous", - Selected = version.Value == "previous" - }).ToList(); - } - - if(ctx.Commands.Any()) - { - ViewBag.repCommands = ctx.Commands.OrderBy(c => c.Name).ToList(); - - decimal totalCommandCount = ctx.Commands.Sum(o => o.Count); - - ViewData["commandsPieData"] = ctx - .Commands.Select(command => new PieSeriesData - { - Name = command.Name, - Y = (double?)(command.Count / - totalCommandCount), - Sliced = command.Name == "analyze", - Selected = command.Name == "analyze" - }).ToList(); - } - - if(ctx.Filters.Any()) - { - ViewBag.repFilters = ctx.Filters.OrderBy(filter => filter.Name).ToList(); - - List filtersPieData = new List(); - - decimal totalFiltersCount = ctx.Filters.Sum(o => o.Count); - foreach(Filter filter in ctx.Filters.ToList()) - filtersPieData.Add(new PieSeriesData - { - Name = filter.Name, - Y = (double?)(filter.Count / totalFiltersCount), - Sliced = filter.Name == "No filter", - Selected = filter.Name == "No filter" - }); - - ViewData["filtersPieData"] = filtersPieData; - } - - if(ctx.MediaFormats.Any()) - { - ViewBag.repMediaImages = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList(); - - List formatsPieData = new List(); - - decimal totalFormatsCount = ctx.MediaFormats.Sum(o => o.Count); - decimal top10FormatCount = 0; - - foreach(MediaFormat format in ctx.MediaFormats.OrderByDescending(o => o.Count).Take(10)) - { - top10FormatCount += format.Count; - - formatsPieData.Add(new PieSeriesData - { - Name = format.Name, Y = (double?)(format.Count / totalFormatsCount) - }); - } - - formatsPieData.Add(new PieSeriesData - { - Name = "Other", - Y = (double?)((totalFormatsCount - top10FormatCount) / - totalFormatsCount), - Sliced = true, - Selected = true - }); - - ViewData["formatsPieData"] = formatsPieData; - } - - if(ctx.Partitions.Any()) - { - ViewBag.repPartitions = ctx.Partitions.OrderBy(filter => filter.Name).ToList(); - - List partitionsPieData = new List(); - - decimal totalPartitionsCount = ctx.Partitions.Sum(o => o.Count); - decimal top10PartitionCount = 0; - - foreach(Partition partition in ctx.Partitions.OrderByDescending(o => o.Count).Take(10)) - { - top10PartitionCount += partition.Count; - - partitionsPieData.Add(new PieSeriesData - { - Name = partition.Name, - Y = (double?)(partition.Count / totalPartitionsCount) - }); - } - - partitionsPieData.Add(new PieSeriesData - { - Name = "Other", - Y = (double?)((totalPartitionsCount - top10PartitionCount) / - totalPartitionsCount), - Sliced = true, - Selected = true - }); - - ViewData["partitionsPieData"] = partitionsPieData; - } - - if(ctx.Filesystems.Any()) - { - ViewBag.repFilesystems = ctx.Filesystems.OrderBy(filter => filter.Name).ToList(); - - List filesystemsPieData = new List(); - - decimal totalFilesystemsCount = ctx.Filesystems.Sum(o => o.Count); - decimal top10FilesystemCount = 0; - - foreach(Filesystem filesystem in ctx.Filesystems.OrderByDescending(o => o.Count).Take(10)) - { - top10FilesystemCount += filesystem.Count; - - filesystemsPieData.Add(new PieSeriesData - { - Name = filesystem.Name, - Y = (double?)(filesystem.Count / totalFilesystemsCount) - }); - } - - filesystemsPieData.Add(new PieSeriesData - { - Name = "Other", - Y = (double?)((totalFilesystemsCount - top10FilesystemCount) / - totalFilesystemsCount), - Sliced = true, - Selected = true - }); - - ViewData["filesystemsPieData"] = filesystemsPieData; - } - - if(ctx.Medias.Any()) - { - realMedia = new List(); - virtualMedia = new List(); - foreach(Media nvs in ctx.Medias) - try - { - MediaType - .MediaTypeToString((CommonTypes.MediaType)Enum.Parse(typeof(CommonTypes.MediaType), nvs.Type), - out string type, out string subtype); - - if(nvs.Real) - realMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); - else virtualMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); - } - catch - { - if(nvs.Real) - realMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); - else virtualMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); - } - - if(realMedia.Count > 0) - { - ViewBag.repRealMedia = - realMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - - List realMediaPieData = new List(); - - decimal totalRealMediaCount = realMedia.Sum(o => o.Count); - decimal top10RealMediaCount = 0; - - foreach(MediaItem realMediaItem in realMedia.OrderByDescending(o => o.Count).Take(10)) - { - top10RealMediaCount += realMediaItem.Count; - - realMediaPieData.Add(new PieSeriesData - { - Name = $"{realMediaItem.Type} ({realMediaItem.SubType})", - Y = (double?)(realMediaItem.Count / totalRealMediaCount) - }); - } - - realMediaPieData.Add(new PieSeriesData - { - Name = "Other", - Y = (double?)((totalRealMediaCount - top10RealMediaCount) / - totalRealMediaCount), - Sliced = true, - Selected = true - }); - - ViewData["realMediaPieData"] = realMediaPieData; - } - - if(virtualMedia.Count > 0) - { - ViewBag.repVirtualMedia = - virtualMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - - List virtualMediaPieData = new List(); - - decimal totalVirtualMediaCount = virtualMedia.Sum(o => o.Count); - decimal top10VirtualMediaCount = 0; - - foreach(MediaItem virtualMediaItem in virtualMedia.OrderByDescending(o => o.Count).Take(10)) - { - top10VirtualMediaCount += virtualMediaItem.Count; - - virtualMediaPieData.Add(new PieSeriesData - { - Name = - $"{virtualMediaItem.Type} ({virtualMediaItem.SubType})", - Y = (double?)(virtualMediaItem.Count / - totalVirtualMediaCount) - }); - } - - virtualMediaPieData.Add(new PieSeriesData - { - Name = "Other", - Y = (double?) - ((totalVirtualMediaCount - top10VirtualMediaCount) / - totalVirtualMediaCount), - Sliced = true, - Selected = true - }); - - ViewData["virtualMediaPieData"] = virtualMediaPieData; - } - } - - if(ctx.DeviceStats.Any()) - { - devices = new List(); - foreach(DeviceStat device in ctx.DeviceStats.ToList()) - { - string xmlFile; - if(!string.IsNullOrWhiteSpace(device.Manufacturer) && - !string.IsNullOrWhiteSpace(device.Model) && - !string.IsNullOrWhiteSpace(device.Revision)) - xmlFile = device.Manufacturer + "_" + device.Model + "_" + device.Revision + ".xml"; - else if(!string.IsNullOrWhiteSpace(device.Manufacturer) && - !string.IsNullOrWhiteSpace(device.Model)) - xmlFile = device.Manufacturer + "_" + device.Model + ".xml"; - else if(!string.IsNullOrWhiteSpace(device.Model) && !string.IsNullOrWhiteSpace(device.Revision)) - xmlFile = device.Model + "_" + device.Revision + ".xml"; - else xmlFile = device.Model + ".xml"; - - xmlFile = xmlFile.Replace('/', '_').Replace('\\', '_').Replace('?', '_'); - - if(System.IO.File.Exists(Path.Combine(HostingEnvironment.MapPath("~"), "Reports", xmlFile))) - { - DeviceReport deviceReport = new DeviceReport(); - - XmlSerializer xs = new XmlSerializer(deviceReport.GetType()); - FileStream fs = - WaitForFile(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Reports", xmlFile), - FileMode.Open, FileAccess.Read, FileShare.Read); - deviceReport = (DeviceReport)xs.Deserialize(fs); - fs.Close(); - - DeviceReportV2 deviceReportV2 = new DeviceReportV2(deviceReport); - - device.Report = ctx.Devices.Add(new Device(deviceReportV2)); - ctx.SaveChanges(); - - System.IO.File - .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Reports", xmlFile)); - } - - devices.Add(new DeviceItem - { - Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision, - Bus = device.Bus, - ReportId = device.Report != null && device.Report.Id != 0 - ? device.Report.Id - : 0 - }); - } - - ViewBag.repDevices = devices.OrderBy(device => device.Manufacturer).ThenBy(device => device.Model) - .ThenBy(device => device.Revision).ThenBy(device => device.Bus) - .ToList(); - - ViewData["devicesBusPieData"] = (from deviceBus in devices.Select(d => d.Bus).Distinct() - let deviceBusCount = devices.Count(d => d.Bus == deviceBus) - select new PieSeriesData - { - Name = deviceBus, - Y = deviceBusCount / (double)devices.Count - }).ToList(); - - ViewData["devicesManufacturerPieData"] = - (from manufacturer in - devices.Where(d => d.Manufacturer != null).Select(d => d.Manufacturer.ToLowerInvariant()) - .Distinct() - let manufacturerCount = devices.Count(d => d.Manufacturer?.ToLowerInvariant() == manufacturer) - select new PieSeriesData {Name = manufacturer, Y = manufacturerCount / (double)devices.Count}) - .ToList(); - } - } - catch(Exception) - { - #if DEBUG - throw; - #endif - return Content("Could not read statistics"); - } - - return View(); - } - - static FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) - { - for(int numTries = 0; numTries < 100; numTries++) - { - FileStream fs = null; - try - { - fs = new FileStream(fullPath, mode, access, share); - return fs; - } - catch(IOException) - { - fs?.Dispose(); - Thread.Sleep(50); - } - } - - return null; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/UpdateController.cs b/Server/DiscImageChef.Server/Controllers/UpdateController.cs deleted file mode 100644 index 423f5502d..000000000 --- a/Server/DiscImageChef.Server/Controllers/UpdateController.cs +++ /dev/null @@ -1,98 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UploadReportController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Handles report uploads. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Text; -using System.Web.Http; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Dto; -using DiscImageChef.Server.Models; -using Newtonsoft.Json; - -namespace DiscImageChef.Server.Controllers -{ - public class UpdateController : ApiController - { - /// - /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server - /// - /// HTTP response - [Route("api/update")] - [HttpGet] - public HttpResponseMessage UploadReport(long timestamp) - { - DicServerContext ctx = new DicServerContext(); - - SyncDto sync = new SyncDto(); - DateTime lastSync = DateHandlers.UnixToDateTime(timestamp); - - sync.UsbVendors = new List(); - foreach(UsbVendor vendor in ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync)) - sync.UsbVendors.Add(new UsbVendorDto {VendorId = (ushort)vendor.VendorId, Vendor = vendor.Vendor}); - - sync.UsbProducts = new List(); - foreach(UsbProduct product in ctx.UsbProducts.Where(p => p.ModifiedWhen > lastSync)) - sync.UsbProducts.Add(new UsbProductDto - { - Id = product.Id, - Product = product.Product, - ProductId = (ushort)product.ProductId, - VendorId = (ushort)product.Vendor.VendorId - }); - - sync.Offsets = new List(); - foreach(CompactDiscOffset offset in ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync)) - sync.Offsets.Add(new CdOffsetDto(offset, offset.Id)); - - sync.Devices = new List(); - foreach(Device device in ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList()) - sync.Devices.Add(new - DeviceDto(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(device, Formatting.None, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore})), - device.Id, device.OptimalMultipleSectorsRead)); - - JsonSerializer js = JsonSerializer.Create(); - StringWriter sw = new StringWriter(); - js.Serialize(sw, sync); - - return new HttpResponseMessage - { - StatusCode = HttpStatusCode.OK, - Content = new StringContent(sw.ToString(), Encoding.UTF8, "application/json") - }; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/UploadReportController.cs b/Server/DiscImageChef.Server/Controllers/UploadReportController.cs deleted file mode 100644 index 7cbe3be73..000000000 --- a/Server/DiscImageChef.Server/Controllers/UploadReportController.cs +++ /dev/null @@ -1,195 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UploadReportController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Handles report uploads. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Diagnostics; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Text; -using System.Web; -using System.Web.Hosting; -using System.Web.Http; -using System.Xml.Serialization; -using Cinchoo.PGP; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Server.Models; -using MailKit.Net.Smtp; -using MimeKit; -using Newtonsoft.Json; - -namespace DiscImageChef.Server.Controllers -{ - public class UploadReportController : ApiController - { - DicServerContext ctx = new DicServerContext(); - - /// - /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server - /// - /// HTTP response - [Route("api/uploadreport")] - [HttpPost] - public HttpResponseMessage UploadReport() - { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; - - try - { - DeviceReport newReport = new DeviceReport(); - HttpRequest request = HttpContext.Current.Request; - - XmlSerializer xs = new XmlSerializer(newReport.GetType()); - newReport = (DeviceReport)xs.Deserialize(request.InputStream); - - if(newReport == null) - { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); - return response; - } - - DeviceReportV2 reportV2 = new DeviceReportV2(newReport); - StringWriter jsonSw = new StringWriter(); - jsonSw.Write(JsonConvert.SerializeObject(reportV2, Formatting.Indented, - new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore - })); - string reportV2String = jsonSw.ToString(); - jsonSw.Close(); - - ctx.Reports.Add(new UploadedReport(reportV2)); - ctx.SaveChanges(); - - MemoryStream pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportV2String)); - MemoryStream pgpOut = new MemoryStream(); - ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); - pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "public.asc"), true); - pgpOut.Position = 0; - reportV2String = Encoding.UTF8.GetString(pgpOut.ToArray()); - - MimeMessage message = new MimeMessage - { - Subject = "New device report (old version)", - Body = new TextPart("plain") {Text = reportV2String} - }; - message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); - message.To.Add(new MailboxAddress("Natalia Portillo", "claunia@claunia.com")); - - using(SmtpClient client = new SmtpClient()) - { - client.Connect("mail.claunia.com", 25, false); - client.Send(message); - client.Disconnect(true); - } - - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); - return response; - } - // ReSharper disable once RedundantCatchClause - catch - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); - return response; - } - } - - /// - /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server - /// - /// HTTP response - [Route("api/uploadreportv2")] - [HttpPost] - public HttpResponseMessage UploadReportV2() - { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; - - try - { - HttpRequest request = HttpContext.Current.Request; - - StreamReader sr = new StreamReader(request.InputStream); - string reportJson = sr.ReadToEnd(); - DeviceReportV2 newReport = JsonConvert.DeserializeObject(reportJson); - - if(newReport == null) - { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); - return response; - } - - ctx.Reports.Add(new UploadedReport(newReport)); - ctx.SaveChanges(); - - MemoryStream pgpIn = new MemoryStream(Encoding.UTF8.GetBytes(reportJson)); - MemoryStream pgpOut = new MemoryStream(); - ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); - pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "public.asc"), true); - pgpOut.Position = 0; - reportJson = Encoding.UTF8.GetString(pgpOut.ToArray()); - - MimeMessage message = new MimeMessage - { - Subject = "New device report", Body = new TextPart("plain") {Text = reportJson} - }; - message.From.Add(new MailboxAddress("DiscImageChef", "dic@claunia.com")); - message.To.Add(new MailboxAddress("Natalia Portillo", "claunia@claunia.com")); - - using(SmtpClient client = new SmtpClient()) - { - client.Connect("mail.claunia.com", 25, false); - client.Send(message); - client.Disconnect(true); - } - - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); - return response; - } - // ReSharper disable once RedundantCatchClause - catch - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); - return response; - } - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Controllers/UploadStatsController.cs b/Server/DiscImageChef.Server/Controllers/UploadStatsController.cs deleted file mode 100644 index cfadf535a..000000000 --- a/Server/DiscImageChef.Server/Controllers/UploadStatsController.cs +++ /dev/null @@ -1,254 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UploadStatsController.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Handles statistics uploads. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Text; -using System.Threading; -using System.Web; -using System.Web.Http; -using System.Xml.Serialization; -using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Server.Models; -using Newtonsoft.Json; -using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; -using Version = DiscImageChef.Server.Models.Version; - -namespace DiscImageChef.Server.Controllers -{ - public class UploadStatsController : ApiController - { - /// - /// Receives statistics from DiscImageChef.Core, processes them and adds them to a server-side global statistics XML - /// - /// HTTP response - [Route("api/uploadstats")] - [HttpPost] - public HttpResponseMessage UploadStats() - { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; - - try - { - Stats newStats = new Stats(); - HttpRequest request = HttpContext.Current.Request; - - XmlSerializer xs = new XmlSerializer(newStats.GetType()); - newStats = (Stats)xs.Deserialize(request.InputStream); - - if(newStats == null) - { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); - return response; - } - - StatsConverter.Convert(newStats); - - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); - return response; - } - catch(Exception ex) - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); - return response; - } - } - - /// - /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server - /// - /// HTTP response - [Route("api/uploadstatsv2")] - [HttpPost] - public HttpResponseMessage UploadStatsV2() - { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; - - try - { - HttpRequest request = HttpContext.Current.Request; - - StreamReader sr = new StreamReader(request.InputStream); - StatsDto newstats = JsonConvert.DeserializeObject(sr.ReadToEnd()); - - if(newstats == null) - { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); - return response; - } - - DicServerContext ctx = new DicServerContext(); - - if(newstats.Commands != null) - foreach(NameValueStats nvs in newstats.Commands) - { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Commands.Add(new Command {Name = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.Versions != null) - foreach(NameValueStats nvs in newstats.Versions) - { - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); - - if(existing == null) ctx.Versions.Add(new Version {Value = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.Filesystems != null) - foreach(NameValueStats nvs in newstats.Filesystems) - { - Filesystem existing = ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Filesystems.Add(new Filesystem {Name = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.Partitions != null) - foreach(NameValueStats nvs in newstats.Partitions) - { - Partition existing = ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Partitions.Add(new Partition {Name = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.MediaFormats != null) - foreach(NameValueStats nvs in newstats.MediaFormats) - { - MediaFormat existing = ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.MediaFormats.Add(new MediaFormat {Name = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.Filters != null) - foreach(NameValueStats nvs in newstats.Filters) - { - Filter existing = ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); - - if(existing == null) ctx.Filters.Add(new Filter {Name = nvs.name, Count = nvs.Value}); - else existing.Count += nvs.Value; - } - - if(newstats.OperatingSystems != null) - foreach(OsStats operatingSystem in newstats.OperatingSystems) - { - OperatingSystem existing = - ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && - c.Version == operatingSystem.version); - - if(existing == null) - ctx.OperatingSystems.Add(new OperatingSystem - { - Name = operatingSystem.name, - Version = operatingSystem.version, - Count = operatingSystem.Value - }); - else existing.Count += operatingSystem.Value; - } - - if(newstats.Medias != null) - foreach(MediaStats media in newstats.Medias) - { - Media existing = ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); - - if(existing == null) - ctx.Medias.Add(new Media {Type = media.type, Real = media.real, Count = media.Value}); - else existing.Count += media.Value; - } - - if(newstats.Devices != null) - foreach(DeviceStats device in newstats.Devices) - { - DeviceStat existing = - ctx.DeviceStats.FirstOrDefault(c => c.Bus == device.Bus && - c.Manufacturer == device.Manufacturer && - c.Model == device.Model && - c.Revision == device.Revision); - - if(existing == null) - ctx.DeviceStats.Add(new DeviceStat - { - Bus = device.Bus, - Manufacturer = device.Manufacturer, - Model = device.Model, - Revision = device.Revision - }); - } - - ctx.SaveChanges(); - - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); - return response; - } - // ReSharper disable once RedundantCatchClause - catch - { - #if DEBUG - if(Debugger.IsAttached) throw; - #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); - return response; - } - } - - FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) - { - for(int numTries = 0; numTries < 100; numTries++) - { - FileStream fs = null; - try - { - fs = new FileStream(fullPath, mode, access, share); - return fs; - } - catch(IOException) - { - if(fs != null) fs.Dispose(); - Thread.Sleep(50); - } - } - - return null; - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/DiscImageChef.Server.csproj b/Server/DiscImageChef.Server/DiscImageChef.Server.csproj deleted file mode 100644 index 1d0155473..000000000 --- a/Server/DiscImageChef.Server/DiscImageChef.Server.csproj +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - - Debug - AnyCPU - - - 2.0 - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - DiscImageChef.Server - DiscImageChef.Server - v4.6.1 - false - true - - - - - - - - - false - 4.5.99.1693 - $(Version) - true - 4.5.99.1693 - Claunia.com - Copyright © 2011-2019 Natalia Portillo - The Disc Image Chef - DiscImageChef.Server - $(Version) - - - $(Version)-{chash:8} built by {mname} in $(Configuration){!:, modified} - true - true - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - - - true - pdbonly - true - bin\ - TRACE - prompt - 4 - - - - ..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll - True - - - ..\packages\ChoPGP.1.0.1.2\lib\ChoPGP.dll - True - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - True - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - True - - - ..\packages\Google.Protobuf.3.7.0\lib\net45\Google.Protobuf.dll - True - - - ..\packages\Highsoft.Highcharts.7.0.3.11\lib\net40\Highcharts.Web.Mvc.dll - True - - - ..\packages\MailKit.2.1.4\lib\net45\MailKit.dll - True - - - ..\packages\Markdig.0.16.0\lib\net40\Markdig.dll - True - - - ..\packages\Microsoft.AspNet.TelemetryCorrelation.1.0.5\lib\net45\Microsoft.AspNet.TelemetryCorrelation.dll - True - - - ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll - - - - ..\packages\MimeKit.2.1.4\lib\net45\MimeKit.dll - True - - - - ..\packages\MySql.Data.8.0.15\lib\net452\MySql.Data.dll - True - - - ..\packages\MySql.Data.EntityFramework.8.0.15\lib\net452\MySql.Data.EntityFramework.dll - True - - - ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll - True - - - - - - - ..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll - True - - - - - - ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll - True - - - - - - - - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll - True - - - ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll - True - - - ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll - True - - - - - - - - - - True - ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - - - - - - - ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll - - - True - ..\packages\WebGrease.1.6.0\lib\WebGrease.dll - - - True - ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll - - - - - - - - - - - - - - - - - - - - - - Global.asax - - - - 201812201613369_InitialMigration.cs - - - - 201812220029427_AddStatistics.cs - - - - 201812221606592_LinkDeviceStatsToReport.cs - - - - 201812231612080_FixUnsignedFields.cs - - - - 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs - - - - 201812240552109_StoreUsbIdsInDatabase.cs - - - - 201812241719441_FixUsbIdsAndIndexes.cs - - - - 201812250223002_AddCdOffsets.cs - - - - 201812251556377_StoreMmcGetConfigurationResponse.cs - - - - 201812252219066_StoreReadResultsInReportDatabase.cs - - - - 201901022133012_AddMultisessionLeadTest.cs - - - - 201901030344456_AddOptimalReadMultipleCount.cs - - - - 201901081359499_AddChangeableScsiModes.cs - - - - 201905252122267_IdForDensityCode.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dicserver.scss - - - dicserver.css - - - - dicserver_highcharts.scss - - - dicserver_highcharts.css - - - - - - - - - - - - - - - - - - Web.config - - - Web.config - - - - - - - - - - - - - - {f2b84194-26eb-4227-b1c5-6602517e85ae} - DiscImageChef.CommonTypes - - - {0beb3088-b634-4289-ae17-cdf2d25d00d5} - DiscImageChef.Decoders - - - {f4399ff5-9bd0-475a-9ea7-3dae45291fe2} - DiscImageChef.Dto - - - {f8bdf57b-1571-4cd0-84b3-b422088d359a} - DiscImageChef.Helpers - - - - - LICENSE.LGPL - - - 201812201613369_InitialMigration.cs - - - 201812220029427_AddStatistics.cs - - - 201812221606592_LinkDeviceStatsToReport.cs - - - 201812231612080_FixUnsignedFields.cs - - - 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs - - - 201812240552109_StoreUsbIdsInDatabase.cs - - - 201812241719441_FixUsbIdsAndIndexes.cs - - - 201812250223002_AddCdOffsets.cs - - - 201812251556377_StoreMmcGetConfigurationResponse.cs - - - 201812252219066_StoreReadResultsInReportDatabase.cs - - - 201901022133012_AddMultisessionLeadTest.cs - - - 201901030344456_AddOptimalReadMultipleCount.cs - - - 201901081359499_AddChangeableScsiModes.cs - - - 201905252122267_IdForDensityCode.cs - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - - - - True - True - 22810 - / - http://localhost:22810/ - False - False - - - False - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Global.asax b/Server/DiscImageChef.Server/Global.asax deleted file mode 100644 index 189743a37..000000000 --- a/Server/DiscImageChef.Server/Global.asax +++ /dev/null @@ -1 +0,0 @@ -<%@ Application Inherits="DiscImageChef.Server.Global" %> \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Global.asax.cs b/Server/DiscImageChef.Server/Global.asax.cs deleted file mode 100644 index a13a68940..000000000 --- a/Server/DiscImageChef.Server/Global.asax.cs +++ /dev/null @@ -1,47 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Global.asax.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// ASP.NET global definitions. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Web; -using System.Web.Http; -using System.Web.Routing; - -namespace DiscImageChef.Server -{ - public class Global : HttpApplication - { - protected void Application_Start() - { - GlobalConfiguration.Configure(WebApiConfig.Register); - RouteConfig.RegisterRoutes(RouteTable.Routes); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs deleted file mode 100644 index 129eb91c3..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class InitialMigration : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(InitialMigration)); - - string IMigrationMetadata.Id - { - get { return "201812201613369_InitialMigration"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs b/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs deleted file mode 100644 index ddf62c285..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs +++ /dev/null @@ -1,584 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class InitialMigration : DbMigration - { - public override void Up() - { - CreateTable("dbo.Devices", - c => new - { - Id = c.Int(false, true), - AddedWhen = c.DateTime(false, 0), - CompactFlash = c.Boolean(false), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Type = c.Int(false), - ATA_Id = c.Int(), - ATAPI_Id = c.Int(), - FireWire_Id = c.Int(), - MultiMediaCard_Id = c.Int(), - PCMCIA_Id = c.Int(), - SCSI_Id = c.Int(), - SecureDigital_Id = c.Int(), - USB_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Atas", t => t.ATA_Id) - .ForeignKey("dbo.Atas", t => t.ATAPI_Id).ForeignKey("dbo.FireWires", t => t.FireWire_Id) - .ForeignKey("dbo.MmcSds", t => t.MultiMediaCard_Id) - .ForeignKey("dbo.Pcmcias", t => t.PCMCIA_Id).ForeignKey("dbo.Scsis", t => t.SCSI_Id) - .ForeignKey("dbo.MmcSds", t => t.SecureDigital_Id).ForeignKey("dbo.Usbs", t => t.USB_Id) - .Index(t => t.ATA_Id).Index(t => t.ATAPI_Id).Index(t => t.FireWire_Id) - .Index(t => t.MultiMediaCard_Id).Index(t => t.PCMCIA_Id).Index(t => t.SCSI_Id) - .Index(t => t.SecureDigital_Id).Index(t => t.USB_Id); - - CreateTable("dbo.Atas", - c => new {Id = c.Int(false, true), Identify = c.Binary(), ReadCapabilities_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.TestedMedias", t => t.ReadCapabilities_Id) - .Index(t => t.ReadCapabilities_Id); - - CreateTable("dbo.TestedMedias", - c => new - { - Id = c.Int(false, true), - IdentifyData = c.Binary(), - CanReadAACS = c.Boolean(), - CanReadADIP = c.Boolean(), - CanReadATIP = c.Boolean(), - CanReadBCA = c.Boolean(), - CanReadC2Pointers = c.Boolean(), - CanReadCMI = c.Boolean(), - CanReadCorrectedSubchannel = c.Boolean(), - CanReadCorrectedSubchannelWithC2 = c.Boolean(), - CanReadDCB = c.Boolean(), - CanReadDDS = c.Boolean(), - CanReadDMI = c.Boolean(), - CanReadDiscInformation = c.Boolean(), - CanReadFullTOC = c.Boolean(), - CanReadHDCMI = c.Boolean(), - CanReadLayerCapacity = c.Boolean(), - CanReadFirstTrackPreGap = c.Boolean(), - CanReadLeadIn = c.Boolean(), - CanReadLeadOut = c.Boolean(), - CanReadMediaID = c.Boolean(), - CanReadMediaSerial = c.Boolean(), - CanReadPAC = c.Boolean(), - CanReadPFI = c.Boolean(), - CanReadPMA = c.Boolean(), - CanReadPQSubchannel = c.Boolean(), - CanReadPQSubchannelWithC2 = c.Boolean(), - CanReadPRI = c.Boolean(), - CanReadRWSubchannel = c.Boolean(), - CanReadRWSubchannelWithC2 = c.Boolean(), - CanReadRecordablePFI = c.Boolean(), - CanReadSpareAreaInformation = c.Boolean(), - CanReadTOC = c.Boolean(), - Density = c.Byte(), - Manufacturer = c.String(unicode: false), - MediaIsRecognized = c.Boolean(false), - MediumType = c.Byte(), - MediumTypeName = c.String(unicode: false), - Model = c.String(unicode: false), - SupportsHLDTSTReadRawDVD = c.Boolean(), - SupportsNECReadCDDA = c.Boolean(), - SupportsPioneerReadCDDA = c.Boolean(), - SupportsPioneerReadCDDAMSF = c.Boolean(), - SupportsPlextorReadCDDA = c.Boolean(), - SupportsPlextorReadRawDVD = c.Boolean(), - SupportsRead10 = c.Boolean(), - SupportsRead12 = c.Boolean(), - SupportsRead16 = c.Boolean(), - SupportsRead6 = c.Boolean(), - SupportsReadCapacity16 = c.Boolean(), - SupportsReadCapacity = c.Boolean(), - SupportsReadCd = c.Boolean(), - SupportsReadCdMsf = c.Boolean(), - SupportsReadCdRaw = c.Boolean(), - SupportsReadCdMsfRaw = c.Boolean(), - SupportsReadLong16 = c.Boolean(), - SupportsReadLong = c.Boolean(), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - SolidStateDevice = c.Boolean(), - SupportsReadDmaLba = c.Boolean(), - SupportsReadDmaRetryLba = c.Boolean(), - SupportsReadLba = c.Boolean(), - SupportsReadRetryLba = c.Boolean(), - SupportsReadLongLba = c.Boolean(), - SupportsReadLongRetryLba = c.Boolean(), - SupportsSeekLba = c.Boolean(), - SupportsReadDmaLba48 = c.Boolean(), - SupportsReadLba48 = c.Boolean(), - SupportsReadDma = c.Boolean(), - SupportsReadDmaRetry = c.Boolean(), - SupportsReadRetry = c.Boolean(), - SupportsReadSectors = c.Boolean(), - SupportsReadLongRetry = c.Boolean(), - SupportsSeek = c.Boolean(), - CHS_Id = c.Int(), - CurrentCHS_Id = c.Int(), - Ata_Id = c.Int(), - Mmc_Id = c.Int(), - Scsi_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Chs", t => t.CHS_Id) - .ForeignKey("dbo.Chs", t => t.CurrentCHS_Id).ForeignKey("dbo.Atas", t => t.Ata_Id) - .ForeignKey("dbo.Mmcs", t => t.Mmc_Id).ForeignKey("dbo.Scsis", t => t.Scsi_Id) - .Index(t => t.CHS_Id).Index(t => t.CurrentCHS_Id).Index(t => t.Ata_Id) - .Index(t => t.Mmc_Id).Index(t => t.Scsi_Id); - - CreateTable("dbo.Chs", c => new {Id = c.Int(false, true)}).PrimaryKey(t => t.Id); - - CreateTable("dbo.FireWires", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Product = c.String(unicode: false), - RemovableMedia = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.MmcSds", - c => new - { - Id = c.Int(false, true), - CID = c.Binary(), - CSD = c.Binary(), - OCR = c.Binary(), - SCR = c.Binary(), - ExtendedCSD = c.Binary() - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Pcmcias", - c => new - { - Id = c.Int(false, true), - CIS = c.Binary(), - Compliance = c.String(unicode: false), - Manufacturer = c.String(unicode: false), - ProductName = c.String(unicode: false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Scsis", - c => new - { - Id = c.Int(false, true), - InquiryData = c.Binary(), - SupportsModeSense6 = c.Boolean(false), - SupportsModeSense10 = c.Boolean(false), - SupportsModeSubpages = c.Boolean(false), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - ModeSense_Id = c.Int(), - MultiMediaDevice_Id = c.Int(), - ReadCapabilities_Id = c.Int(), - SequentialDevice_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.ScsiModes", t => t.ModeSense_Id) - .ForeignKey("dbo.Mmcs", t => t.MultiMediaDevice_Id) - .ForeignKey("dbo.TestedMedias", t => t.ReadCapabilities_Id) - .ForeignKey("dbo.Sscs", t => t.SequentialDevice_Id).Index(t => t.ModeSense_Id) - .Index(t => t.MultiMediaDevice_Id).Index(t => t.ReadCapabilities_Id) - .Index(t => t.SequentialDevice_Id); - - CreateTable("dbo.ScsiPages", - c => new - { - Id = c.Int(false, true), - page = c.Byte(false), - subpage = c.Byte(), - value = c.Binary(), - Scsi_Id = c.Int(), - ScsiMode_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Scsis", t => t.Scsi_Id) - .ForeignKey("dbo.ScsiModes", t => t.ScsiMode_Id).Index(t => t.Scsi_Id) - .Index(t => t.ScsiMode_Id); - - CreateTable("dbo.ScsiModes", - c => new - { - Id = c.Int(false, true), - MediumType = c.Byte(), - WriteProtected = c.Boolean(false), - Speed = c.Byte(), - BufferedMode = c.Byte(), - BlankCheckEnabled = c.Boolean(false), - DPOandFUA = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.BlockDescriptors", - c => new {Id = c.Int(false, true), Density = c.Byte(false), ScsiMode_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.ScsiModes", t => t.ScsiMode_Id).Index(t => t.ScsiMode_Id); - - CreateTable("dbo.Mmcs", c => new {Id = c.Int(false, true), Features_Id = c.Int(), ModeSense2A_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.MmcFeatures", t => t.Features_Id) - .ForeignKey("dbo.ModePage_2A", t => t.ModeSense2A_Id).Index(t => t.Features_Id) - .Index(t => t.ModeSense2A_Id); - - CreateTable("dbo.MmcFeatures", - c => new - { - Id = c.Int(false, true), - AACSVersion = c.Byte(), - AGIDs = c.Byte(), - BindingNonceBlocks = c.Byte(), - BufferUnderrunFreeInDVD = c.Boolean(false), - BufferUnderrunFreeInSAO = c.Boolean(false), - BufferUnderrunFreeInTAO = c.Boolean(false), - CanAudioScan = c.Boolean(false), - CanEject = c.Boolean(false), - CanEraseSector = c.Boolean(false), - CanExpandBDRESpareArea = c.Boolean(false), - CanFormat = c.Boolean(false), - CanFormatBDREWithoutSpare = c.Boolean(false), - CanFormatCert = c.Boolean(false), - CanFormatFRF = c.Boolean(false), - CanFormatQCert = c.Boolean(false), - CanFormatRRM = c.Boolean(false), - CanGenerateBindingNonce = c.Boolean(false), - CanLoad = c.Boolean(false), - CanMuteSeparateChannels = c.Boolean(false), - CanOverwriteSAOTrack = c.Boolean(false), - CanOverwriteTAOTrack = c.Boolean(false), - CanPlayCDAudio = c.Boolean(false), - CanPseudoOverwriteBDR = c.Boolean(false), - CanReadAllDualR = c.Boolean(false), - CanReadAllDualRW = c.Boolean(false), - CanReadBD = c.Boolean(false), - CanReadBDR = c.Boolean(false), - CanReadBDRE1 = c.Boolean(false), - CanReadBDRE2 = c.Boolean(false), - CanReadBDROM = c.Boolean(false), - CanReadBluBCA = c.Boolean(false), - CanReadCD = c.Boolean(false), - CanReadCDMRW = c.Boolean(false), - CanReadCPRM_MKB = c.Boolean(false), - CanReadDDCD = c.Boolean(false), - CanReadDVD = c.Boolean(false), - CanReadDVDPlusMRW = c.Boolean(false), - CanReadDVDPlusR = c.Boolean(false), - CanReadDVDPlusRDL = c.Boolean(false), - CanReadDVDPlusRW = c.Boolean(false), - CanReadDVDPlusRWDL = c.Boolean(false), - CanReadDriveAACSCertificate = c.Boolean(false), - CanReadHDDVD = c.Boolean(false), - CanReadHDDVDR = c.Boolean(false), - CanReadHDDVDRAM = c.Boolean(false), - CanReadLeadInCDText = c.Boolean(false), - CanReadOldBDR = c.Boolean(false), - CanReadOldBDRE = c.Boolean(false), - CanReadOldBDROM = c.Boolean(false), - CanReadSpareAreaInformation = c.Boolean(false), - CanReportDriveSerial = c.Boolean(false), - CanReportMediaSerial = c.Boolean(false), - CanTestWriteDDCDR = c.Boolean(false), - CanTestWriteDVD = c.Boolean(false), - CanTestWriteInSAO = c.Boolean(false), - CanTestWriteInTAO = c.Boolean(false), - CanUpgradeFirmware = c.Boolean(false), - CanWriteBD = c.Boolean(false), - CanWriteBDR = c.Boolean(false), - CanWriteBDRE1 = c.Boolean(false), - CanWriteBDRE2 = c.Boolean(false), - CanWriteBusEncryptedBlocks = c.Boolean(false), - CanWriteCDMRW = c.Boolean(false), - CanWriteCDRW = c.Boolean(false), - CanWriteCDRWCAV = c.Boolean(false), - CanWriteCDSAO = c.Boolean(false), - CanWriteCDTAO = c.Boolean(false), - CanWriteCSSManagedDVD = c.Boolean(false), - CanWriteDDCDR = c.Boolean(false), - CanWriteDDCDRW = c.Boolean(false), - CanWriteDVDPlusMRW = c.Boolean(false), - CanWriteDVDPlusR = c.Boolean(false), - CanWriteDVDPlusRDL = c.Boolean(false), - CanWriteDVDPlusRW = c.Boolean(false), - CanWriteDVDPlusRWDL = c.Boolean(false), - CanWriteDVDR = c.Boolean(false), - CanWriteDVDRDL = c.Boolean(false), - CanWriteDVDRW = c.Boolean(false), - CanWriteHDDVDR = c.Boolean(false), - CanWriteHDDVDRAM = c.Boolean(false), - CanWriteOldBDR = c.Boolean(false), - CanWriteOldBDRE = c.Boolean(false), - CanWritePackedSubchannelInTAO = c.Boolean(false), - CanWriteRWSubchannelInSAO = c.Boolean(false), - CanWriteRWSubchannelInTAO = c.Boolean(false), - CanWriteRaw = c.Boolean(false), - CanWriteRawMultiSession = c.Boolean(false), - CanWriteRawSubchannelInTAO = c.Boolean(false), - ChangerIsSideChangeCapable = c.Boolean(false), - ChangerSlots = c.Byte(false), - ChangerSupportsDiscPresent = c.Boolean(false), - CPRMVersion = c.Byte(), - CSSVersion = c.Byte(), - DBML = c.Boolean(false), - DVDMultiRead = c.Boolean(false), - EmbeddedChanger = c.Boolean(false), - ErrorRecoveryPage = c.Boolean(false), - FirmwareDate = c.DateTime(precision: 0), - LoadingMechanismType = c.Byte(), - Locked = c.Boolean(false), - MultiRead = c.Boolean(false), - PreventJumper = c.Boolean(false), - SupportsAACS = c.Boolean(false), - SupportsBusEncryption = c.Boolean(false), - SupportsC2 = c.Boolean(false), - SupportsCPRM = c.Boolean(false), - SupportsCSS = c.Boolean(false), - SupportsDAP = c.Boolean(false), - SupportsDeviceBusyEvent = c.Boolean(false), - SupportsHybridDiscs = c.Boolean(false), - SupportsModePage1Ch = c.Boolean(false), - SupportsOSSC = c.Boolean(false), - SupportsPWP = c.Boolean(false), - SupportsSWPP = c.Boolean(false), - SupportsSecurDisc = c.Boolean(false), - SupportsSeparateVolume = c.Boolean(false), - SupportsVCPS = c.Boolean(false), - SupportsWriteInhibitDCB = c.Boolean(false), - SupportsWriteProtectPAC = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.ModePage_2A", - c => new - { - Id = c.Int(false, true), - PS = c.Boolean(false), - MultiSession = c.Boolean(false), - Mode2Form2 = c.Boolean(false), - Mode2Form1 = c.Boolean(false), - AudioPlay = c.Boolean(false), - ISRC = c.Boolean(false), - UPC = c.Boolean(false), - C2Pointer = c.Boolean(false), - DeinterlaveSubchannel = c.Boolean(false), - Subchannel = c.Boolean(false), - AccurateCDDA = c.Boolean(false), - CDDACommand = c.Boolean(false), - LoadingMechanism = c.Byte(false), - Eject = c.Boolean(false), - PreventJumper = c.Boolean(false), - LockState = c.Boolean(false), - Lock = c.Boolean(false), - SeparateChannelMute = c.Boolean(false), - SeparateChannelVolume = c.Boolean(false), - Method2 = c.Boolean(false), - ReadCDRW = c.Boolean(false), - ReadCDR = c.Boolean(false), - WriteCDRW = c.Boolean(false), - WriteCDR = c.Boolean(false), - DigitalPort2 = c.Boolean(false), - DigitalPort1 = c.Boolean(false), - Composite = c.Boolean(false), - SSS = c.Boolean(false), - SDP = c.Boolean(false), - Length = c.Byte(false), - LSBF = c.Boolean(false), - RCK = c.Boolean(false), - BCK = c.Boolean(false), - TestWrite = c.Boolean(false), - ReadBarcode = c.Boolean(false), - ReadDVDRAM = c.Boolean(false), - ReadDVDR = c.Boolean(false), - ReadDVDROM = c.Boolean(false), - WriteDVDRAM = c.Boolean(false), - WriteDVDR = c.Boolean(false), - LeadInPW = c.Boolean(false), - SCC = c.Boolean(false), - BUF = c.Boolean(false), - RotationControlSelected = c.Byte(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Sscs", c => new {Id = c.Int(false, true), BlockSizeGranularity = c.Byte()}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.SupportedDensities", - c => new - { - Id = c.Int(false, true), - PrimaryCode = c.Byte(false), - SecondaryCode = c.Byte(false), - Writable = c.Boolean(false), - Duplicate = c.Boolean(false), - DefaultDensity = c.Boolean(false), - Organization = c.String(unicode: false), - Name = c.String(unicode: false), - Description = c.String(unicode: false), - Ssc_Id = c.Int(), - TestedSequentialMedia_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id) - .ForeignKey("dbo.TestedSequentialMedias", t => t.TestedSequentialMedia_Id) - .Index(t => t.Ssc_Id).Index(t => t.TestedSequentialMedia_Id); - - CreateTable("dbo.SscSupportedMedias", - c => new - { - Id = c.Int(false, true), - MediumType = c.Byte(false), - Organization = c.String(unicode: false), - Name = c.String(unicode: false), - Description = c.String(unicode: false), - Ssc_Id = c.Int(), - TestedSequentialMedia_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id) - .ForeignKey("dbo.TestedSequentialMedias", t => t.TestedSequentialMedia_Id) - .Index(t => t.Ssc_Id).Index(t => t.TestedSequentialMedia_Id); - - CreateTable("dbo.DensityCodes", c => new {Code = c.Int(false, true), SscSupportedMedia_Id = c.Int()}) - .PrimaryKey(t => t.Code).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - CreateTable("dbo.TestedSequentialMedias", - c => new - { - Id = c.Int(false, true), - CanReadMediaSerial = c.Boolean(), - Density = c.Byte(), - Manufacturer = c.String(unicode: false), - MediaIsRecognized = c.Boolean(false), - MediumType = c.Byte(), - MediumTypeName = c.String(unicode: false), - Model = c.String(unicode: false), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - Ssc_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id).Index(t => t.Ssc_Id); - - CreateTable("dbo.Usbs", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Product = c.String(unicode: false), - RemovableMedia = c.Boolean(false), - Descriptors = c.Binary() - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.UploadedReports", - c => new - { - Id = c.Int(false, true), - UploadedWhen = c.DateTime(false, 0), - CompactFlash = c.Boolean(false), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Type = c.Int(false), - ATA_Id = c.Int(), - ATAPI_Id = c.Int(), - FireWire_Id = c.Int(), - MultiMediaCard_Id = c.Int(), - PCMCIA_Id = c.Int(), - SCSI_Id = c.Int(), - SecureDigital_Id = c.Int(), - USB_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Atas", t => t.ATA_Id) - .ForeignKey("dbo.Atas", t => t.ATAPI_Id).ForeignKey("dbo.FireWires", t => t.FireWire_Id) - .ForeignKey("dbo.MmcSds", t => t.MultiMediaCard_Id) - .ForeignKey("dbo.Pcmcias", t => t.PCMCIA_Id).ForeignKey("dbo.Scsis", t => t.SCSI_Id) - .ForeignKey("dbo.MmcSds", t => t.SecureDigital_Id).ForeignKey("dbo.Usbs", t => t.USB_Id) - .Index(t => t.ATA_Id).Index(t => t.ATAPI_Id).Index(t => t.FireWire_Id) - .Index(t => t.MultiMediaCard_Id).Index(t => t.PCMCIA_Id).Index(t => t.SCSI_Id) - .Index(t => t.SecureDigital_Id).Index(t => t.USB_Id); - } - - public override void Down() - { - DropForeignKey("dbo.UploadedReports", "USB_Id", "dbo.Usbs"); - DropForeignKey("dbo.UploadedReports", "SecureDigital_Id", "dbo.MmcSds"); - DropForeignKey("dbo.UploadedReports", "SCSI_Id", "dbo.Scsis"); - DropForeignKey("dbo.UploadedReports", "PCMCIA_Id", "dbo.Pcmcias"); - DropForeignKey("dbo.UploadedReports", "MultiMediaCard_Id", "dbo.MmcSds"); - DropForeignKey("dbo.UploadedReports", "FireWire_Id", "dbo.FireWires"); - DropForeignKey("dbo.UploadedReports", "ATAPI_Id", "dbo.Atas"); - DropForeignKey("dbo.UploadedReports", "ATA_Id", "dbo.Atas"); - DropForeignKey("dbo.Devices", "USB_Id", "dbo.Usbs"); - DropForeignKey("dbo.Devices", "SecureDigital_Id", "dbo.MmcSds"); - DropForeignKey("dbo.Devices", "SCSI_Id", "dbo.Scsis"); - DropForeignKey("dbo.Scsis", "SequentialDevice_Id", "dbo.Sscs"); - DropForeignKey("dbo.TestedSequentialMedias", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.SscSupportedMedias", "TestedSequentialMedia_Id", "dbo.TestedSequentialMedias"); - DropForeignKey("dbo.SupportedDensities", "TestedSequentialMedia_Id", "dbo.TestedSequentialMedias"); - DropForeignKey("dbo.SscSupportedMedias", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.DensityCodes", "SscSupportedMedia_Id", "dbo.SscSupportedMedias"); - DropForeignKey("dbo.SupportedDensities", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.TestedMedias", "Scsi_Id", "dbo.Scsis"); - DropForeignKey("dbo.Scsis", "ReadCapabilities_Id", "dbo.TestedMedias"); - DropForeignKey("dbo.Scsis", "MultiMediaDevice_Id", "dbo.Mmcs"); - DropForeignKey("dbo.TestedMedias", "Mmc_Id", "dbo.Mmcs"); - DropForeignKey("dbo.Mmcs", "ModeSense2A_Id", "dbo.ModePage_2A"); - DropForeignKey("dbo.Mmcs", "Features_Id", "dbo.MmcFeatures"); - DropForeignKey("dbo.Scsis", "ModeSense_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.ScsiPages", "ScsiMode_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.BlockDescriptors", "ScsiMode_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.ScsiPages", "Scsi_Id", "dbo.Scsis"); - DropForeignKey("dbo.Devices", "PCMCIA_Id", "dbo.Pcmcias"); - DropForeignKey("dbo.Devices", "MultiMediaCard_Id", "dbo.MmcSds"); - DropForeignKey("dbo.Devices", "FireWire_Id", "dbo.FireWires"); - DropForeignKey("dbo.Devices", "ATAPI_Id", "dbo.Atas"); - DropForeignKey("dbo.Devices", "ATA_Id", "dbo.Atas"); - DropForeignKey("dbo.TestedMedias", "Ata_Id", "dbo.Atas"); - DropForeignKey("dbo.Atas", "ReadCapabilities_Id", "dbo.TestedMedias"); - DropForeignKey("dbo.TestedMedias", "CurrentCHS_Id", "dbo.Chs"); - DropForeignKey("dbo.TestedMedias", "CHS_Id", "dbo.Chs"); - DropIndex("dbo.UploadedReports", new[] {"USB_Id"}); - DropIndex("dbo.UploadedReports", new[] {"SecureDigital_Id"}); - DropIndex("dbo.UploadedReports", new[] {"SCSI_Id"}); - DropIndex("dbo.UploadedReports", new[] {"PCMCIA_Id"}); - DropIndex("dbo.UploadedReports", new[] {"MultiMediaCard_Id"}); - DropIndex("dbo.UploadedReports", new[] {"FireWire_Id"}); - DropIndex("dbo.UploadedReports", new[] {"ATAPI_Id"}); - DropIndex("dbo.UploadedReports", new[] {"ATA_Id"}); - DropIndex("dbo.TestedSequentialMedias", new[] {"Ssc_Id"}); - DropIndex("dbo.DensityCodes", new[] {"SscSupportedMedia_Id"}); - DropIndex("dbo.SscSupportedMedias", new[] {"TestedSequentialMedia_Id"}); - DropIndex("dbo.SscSupportedMedias", new[] {"Ssc_Id"}); - DropIndex("dbo.SupportedDensities", new[] {"TestedSequentialMedia_Id"}); - DropIndex("dbo.SupportedDensities", new[] {"Ssc_Id"}); - DropIndex("dbo.Mmcs", new[] {"ModeSense2A_Id"}); - DropIndex("dbo.Mmcs", new[] {"Features_Id"}); - DropIndex("dbo.BlockDescriptors", new[] {"ScsiMode_Id"}); - DropIndex("dbo.ScsiPages", new[] {"ScsiMode_Id"}); - DropIndex("dbo.ScsiPages", new[] {"Scsi_Id"}); - DropIndex("dbo.Scsis", new[] {"SequentialDevice_Id"}); - DropIndex("dbo.Scsis", new[] {"ReadCapabilities_Id"}); - DropIndex("dbo.Scsis", new[] {"MultiMediaDevice_Id"}); - DropIndex("dbo.Scsis", new[] {"ModeSense_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Scsi_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Mmc_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Ata_Id"}); - DropIndex("dbo.TestedMedias", new[] {"CurrentCHS_Id"}); - DropIndex("dbo.TestedMedias", new[] {"CHS_Id"}); - DropIndex("dbo.Atas", new[] {"ReadCapabilities_Id"}); - DropIndex("dbo.Devices", new[] {"USB_Id"}); - DropIndex("dbo.Devices", new[] {"SecureDigital_Id"}); - DropIndex("dbo.Devices", new[] {"SCSI_Id"}); - DropIndex("dbo.Devices", new[] {"PCMCIA_Id"}); - DropIndex("dbo.Devices", new[] {"MultiMediaCard_Id"}); - DropIndex("dbo.Devices", new[] {"FireWire_Id"}); - DropIndex("dbo.Devices", new[] {"ATAPI_Id"}); - DropIndex("dbo.Devices", new[] {"ATA_Id"}); - DropTable("dbo.UploadedReports"); - DropTable("dbo.Usbs"); - DropTable("dbo.TestedSequentialMedias"); - DropTable("dbo.DensityCodes"); - DropTable("dbo.SscSupportedMedias"); - DropTable("dbo.SupportedDensities"); - DropTable("dbo.Sscs"); - DropTable("dbo.ModePage_2A"); - DropTable("dbo.MmcFeatures"); - DropTable("dbo.Mmcs"); - DropTable("dbo.BlockDescriptors"); - DropTable("dbo.ScsiModes"); - DropTable("dbo.ScsiPages"); - DropTable("dbo.Scsis"); - DropTable("dbo.Pcmcias"); - DropTable("dbo.MmcSds"); - DropTable("dbo.FireWires"); - DropTable("dbo.Chs"); - DropTable("dbo.TestedMedias"); - DropTable("dbo.Atas"); - DropTable("dbo.Devices"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx b/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx deleted file mode 100644 index d6aece3f0..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs deleted file mode 100644 index 0005e624b..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddStatistics : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddStatistics)); - - string IMigrationMetadata.Id - { - get { return "201812220029427_AddStatistics"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs b/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs deleted file mode 100644 index 05a482fec..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddStatistics : DbMigration - { - public override void Up() - { - CreateTable("dbo.Commands", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.DeviceStats", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Bus = c.String(unicode: false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Filesystems", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Filters", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.MediaFormats", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Media", - c => new - { - Id = c.Int(false, true), - Type = c.String(unicode: false), - Real = c.Boolean(false), - Count = c.Long(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.OperatingSystems", - c => new - { - Id = c.Int(false, true), - Name = c.String(unicode: false), - Version = c.String(unicode: false), - Count = c.Long(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Partitions", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Versions", - c => new {Id = c.Int(false, true), Value = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - } - - public override void Down() - { - DropTable("dbo.Versions"); - DropTable("dbo.Partitions"); - DropTable("dbo.OperatingSystems"); - DropTable("dbo.Media"); - DropTable("dbo.MediaFormats"); - DropTable("dbo.Filters"); - DropTable("dbo.Filesystems"); - DropTable("dbo.DeviceStats"); - DropTable("dbo.Commands"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx b/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx deleted file mode 100644 index 94fe9d0fb..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs deleted file mode 100644 index 903de8014..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class LinkDeviceStatsToReport : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(LinkDeviceStatsToReport)); - - string IMigrationMetadata.Id - { - get { return "201812221606592_LinkDeviceStatsToReport"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs b/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs deleted file mode 100644 index 256d53bbf..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class LinkDeviceStatsToReport : DbMigration - { - public override void Up() - { - AddColumn("dbo.DeviceStats", "Report_Id", c => c.Int()); - CreateIndex("dbo.DeviceStats", "Report_Id"); - AddForeignKey("dbo.DeviceStats", "Report_Id", "dbo.Devices", "Id"); - } - - public override void Down() - { - DropForeignKey("dbo.DeviceStats", "Report_Id", "dbo.Devices"); - DropIndex("dbo.DeviceStats", new[] {"Report_Id"}); - DropColumn("dbo.DeviceStats", "Report_Id"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx b/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx deleted file mode 100644 index 18422e8e0..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs deleted file mode 100644 index 7d34e147d..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class FixUnsignedFields : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FixUnsignedFields)); - - string IMigrationMetadata.Id - { - get { return "201812231612080_FixUnsignedFields"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs b/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs deleted file mode 100644 index 1133b9de4..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class FixUnsignedFields : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "BlocksSql", c => c.Long()); - AddColumn("dbo.TestedMedias", "BlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LongBlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LBASectorsSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LBA48SectorsSql", c => c.Long()); - AddColumn("dbo.TestedMedias", "LogicalAlignmentSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "NominalRotationRateSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "PhysicalBlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "UnformattedBPTSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "UnformattedBPSSql", c => c.Short()); - AddColumn("dbo.Chs", "CylindersSql", c => c.Short(false)); - AddColumn("dbo.Chs", "HeadsSql", c => c.Short(false)); - AddColumn("dbo.Chs", "SectorsSql", c => c.Short(false)); - AddColumn("dbo.FireWires", "VendorIDSql", c => c.Int(false)); - AddColumn("dbo.FireWires", "ProductIDSql", c => c.Int(false)); - AddColumn("dbo.Pcmcias", "ManufacturerCodeSql", c => c.Short()); - AddColumn("dbo.Pcmcias", "CardCodeSql", c => c.Short()); - AddColumn("dbo.BlockDescriptors", "BlocksSql", c => c.Long()); - AddColumn("dbo.BlockDescriptors", "BlockLengthSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql", c => c.Short()); - AddColumn("dbo.MmcFeatures", "LogicalBlockSizeSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "VolumeLevelsSql", c => c.Short()); - AddColumn("dbo.Sscs", "MaxBlockLengthSql", c => c.Int()); - AddColumn("dbo.Sscs", "MinBlockLengthSql", c => c.Int()); - AddColumn("dbo.SupportedDensities", "BitsPerMmSql", c => c.Int(false)); - AddColumn("dbo.SupportedDensities", "WidthSql", c => c.Short(false)); - AddColumn("dbo.SupportedDensities", "TracksSql", c => c.Short(false)); - AddColumn("dbo.SupportedDensities", "CapacitySql", c => c.Int(false)); - AddColumn("dbo.SscSupportedMedias", "WidthSql", c => c.Short(false)); - AddColumn("dbo.SscSupportedMedias", "LengthSql", c => c.Short(false)); - AddColumn("dbo.Usbs", "VendorIDSql", c => c.Short(false)); - AddColumn("dbo.Usbs", "ProductIDSql", c => c.Short(false)); - } - - public override void Down() - { - DropColumn("dbo.Usbs", "ProductIDSql"); - DropColumn("dbo.Usbs", "VendorIDSql"); - DropColumn("dbo.SscSupportedMedias", "LengthSql"); - DropColumn("dbo.SscSupportedMedias", "WidthSql"); - DropColumn("dbo.SupportedDensities", "CapacitySql"); - DropColumn("dbo.SupportedDensities", "TracksSql"); - DropColumn("dbo.SupportedDensities", "WidthSql"); - DropColumn("dbo.SupportedDensities", "BitsPerMmSql"); - DropColumn("dbo.Sscs", "MinBlockLengthSql"); - DropColumn("dbo.Sscs", "MaxBlockLengthSql"); - DropColumn("dbo.MmcFeatures", "VolumeLevelsSql"); - DropColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql"); - DropColumn("dbo.MmcFeatures", "LogicalBlockSizeSql"); - DropColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql"); - DropColumn("dbo.BlockDescriptors", "BlockLengthSql"); - DropColumn("dbo.BlockDescriptors", "BlocksSql"); - DropColumn("dbo.Pcmcias", "CardCodeSql"); - DropColumn("dbo.Pcmcias", "ManufacturerCodeSql"); - DropColumn("dbo.FireWires", "ProductIDSql"); - DropColumn("dbo.FireWires", "VendorIDSql"); - DropColumn("dbo.Chs", "SectorsSql"); - DropColumn("dbo.Chs", "HeadsSql"); - DropColumn("dbo.Chs", "CylindersSql"); - DropColumn("dbo.TestedMedias", "UnformattedBPSSql"); - DropColumn("dbo.TestedMedias", "UnformattedBPTSql"); - DropColumn("dbo.TestedMedias", "PhysicalBlockSizeSql"); - DropColumn("dbo.TestedMedias", "NominalRotationRateSql"); - DropColumn("dbo.TestedMedias", "LogicalAlignmentSql"); - DropColumn("dbo.TestedMedias", "LBA48SectorsSql"); - DropColumn("dbo.TestedMedias", "LBASectorsSql"); - DropColumn("dbo.TestedMedias", "LongBlockSizeSql"); - DropColumn("dbo.TestedMedias", "BlockSizeSql"); - DropColumn("dbo.TestedMedias", "BlocksSql"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx b/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx deleted file mode 100644 index 30fac7b72..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs deleted file mode 100644 index 0232012cf..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class UseBinaryDataForIdentifyInquiryAndModesInReports : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(UseBinaryDataForIdentifyInquiryAndModesInReports)); - - string IMigrationMetadata.Id - { - get { return "201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs b/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs deleted file mode 100644 index 7477669af..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class UseBinaryDataForIdentifyInquiryAndModesInReports : DbMigration - { - public override void Up() - { - DropForeignKey("Mmcs", "ModeSense2A_Id", "ModePage_2A"); - DropIndex("dbo.Mmcs", new[] {"ModeSense2A_Id"}); - AddColumn("dbo.Mmcs", "ModeSense2AData", c => c.Binary()); - DropColumn("dbo.Mmcs", "ModeSense2A_Id"); - DropTable("dbo.ModePage_2A"); - } - - public override void Down() - { - CreateTable("dbo.ModePage_2A", - c => new - { - Id = c.Int(false, true), - PS = c.Boolean(false), - MultiSession = c.Boolean(false), - Mode2Form2 = c.Boolean(false), - Mode2Form1 = c.Boolean(false), - AudioPlay = c.Boolean(false), - ISRC = c.Boolean(false), - UPC = c.Boolean(false), - C2Pointer = c.Boolean(false), - DeinterlaveSubchannel = c.Boolean(false), - Subchannel = c.Boolean(false), - AccurateCDDA = c.Boolean(false), - CDDACommand = c.Boolean(false), - LoadingMechanism = c.Byte(false), - Eject = c.Boolean(false), - PreventJumper = c.Boolean(false), - LockState = c.Boolean(false), - Lock = c.Boolean(false), - SeparateChannelMute = c.Boolean(false), - SeparateChannelVolume = c.Boolean(false), - Method2 = c.Boolean(false), - ReadCDRW = c.Boolean(false), - ReadCDR = c.Boolean(false), - WriteCDRW = c.Boolean(false), - WriteCDR = c.Boolean(false), - DigitalPort2 = c.Boolean(false), - DigitalPort1 = c.Boolean(false), - Composite = c.Boolean(false), - SSS = c.Boolean(false), - SDP = c.Boolean(false), - Length = c.Byte(false), - LSBF = c.Boolean(false), - RCK = c.Boolean(false), - BCK = c.Boolean(false), - TestWrite = c.Boolean(false), - ReadBarcode = c.Boolean(false), - ReadDVDRAM = c.Boolean(false), - ReadDVDR = c.Boolean(false), - ReadDVDROM = c.Boolean(false), - WriteDVDRAM = c.Boolean(false), - WriteDVDR = c.Boolean(false), - LeadInPW = c.Boolean(false), - SCC = c.Boolean(false), - BUF = c.Boolean(false), - RotationControlSelected = c.Byte(false) - }).PrimaryKey(t => t.Id); - - AddColumn("dbo.Mmcs", "ModeSense2A_Id", c => c.Int()); - DropColumn("dbo.Mmcs", "ModeSense2AData"); - CreateIndex("dbo.Mmcs", "ModeSense2A_Id"); - AddForeignKey("dbo.Mmcs", "ModeSense2A_Id", "dbo.ModePage_2A", "Id"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx b/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx deleted file mode 100644 index 9952f1770..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs deleted file mode 100644 index d65fe029e..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreUsbIdsInDatabase : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreUsbIdsInDatabase)); - - string IMigrationMetadata.Id - { - get { return "201812240552109_StoreUsbIdsInDatabase"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs b/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs deleted file mode 100644 index 793034813..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreUsbIdsInDatabase : DbMigration - { - public override void Up() - { - CreateTable("dbo.UsbProducts", - c => new - { - Id = c.Int(false, true), - ProductId = c.Int(false), - Product = c.String(unicode: false), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0), - VendorId = c.Int(false) - }).PrimaryKey(t => t.Id).ForeignKey("dbo.UsbVendors", t => t.VendorId, true) - .Index(t => t.VendorId); - - CreateTable("dbo.UsbVendors", - c => new - { - Id = c.Int(false, true), - Vendor = c.String(unicode: false), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0) - }).PrimaryKey(t => t.Id); - } - - public override void Down() - { - DropForeignKey("dbo.UsbProducts", "VendorId", "dbo.UsbVendors"); - DropIndex("dbo.UsbProducts", new[] {"VendorId"}); - DropTable("dbo.UsbVendors"); - DropTable("dbo.UsbProducts"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx b/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx deleted file mode 100644 index 8bf29e47f..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs deleted file mode 100644 index 57d3375cb..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class FixUsbIdsAndIndexes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FixUsbIdsAndIndexes)); - - string IMigrationMetadata.Id - { - get { return "201812241719441_FixUsbIdsAndIndexes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs b/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs deleted file mode 100644 index b90c19084..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class FixUsbIdsAndIndexes : DbMigration - { - public override void Up() - { - AddColumn("dbo.UsbVendors", "VendorId", c => c.Int(false)); - CreateIndex("dbo.UsbProducts", "ProductId"); - CreateIndex("dbo.UsbProducts", "ModifiedWhen"); - CreateIndex("dbo.UsbVendors", "VendorId", true); - CreateIndex("dbo.UsbVendors", "ModifiedWhen"); - } - - public override void Down() - { - DropIndex("dbo.UsbVendors", new[] {"ModifiedWhen"}); - DropIndex("dbo.UsbVendors", new[] {"VendorId"}); - DropIndex("dbo.UsbProducts", new[] {"ModifiedWhen"}); - DropIndex("dbo.UsbProducts", new[] {"ProductId"}); - DropColumn("dbo.UsbVendors", "VendorId"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx b/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx deleted file mode 100644 index 18616cd2e..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs deleted file mode 100644 index 5505506ee..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddCdOffsets : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddCdOffsets)); - - string IMigrationMetadata.Id - { - get { return "201812250223002_AddCdOffsets"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs b/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs deleted file mode 100644 index 3a0a7e130..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddCdOffsets : DbMigration - { - public override void Up() - { - CreateTable("dbo.CompactDiscOffsets", - c => new - { - Id = c.Int(false, true), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Offset = c.Short(false), - Submissions = c.Int(false), - Agreement = c.Single(false) - }).PrimaryKey(t => t.Id).Index(t => t.ModifiedWhen); - - AddColumn("dbo.Devices", "ModifiedWhen", c => c.DateTime(precision: 0)); - AddColumn("dbo.Devices", "CdOffset_Id", c => c.Int()); - CreateIndex("dbo.Devices", "ModifiedWhen"); - CreateIndex("dbo.Devices", "CdOffset_Id"); - AddForeignKey("dbo.Devices", "CdOffset_Id", "dbo.CompactDiscOffsets", "Id"); - } - - public override void Down() - { - DropForeignKey("dbo.Devices", "CdOffset_Id", "dbo.CompactDiscOffsets"); - DropIndex("dbo.Devices", new[] {"CdOffset_Id"}); - DropIndex("dbo.Devices", new[] {"ModifiedWhen"}); - DropIndex("dbo.CompactDiscOffsets", new[] {"ModifiedWhen"}); - DropColumn("dbo.Devices", "CdOffset_Id"); - DropColumn("dbo.Devices", "ModifiedWhen"); - DropTable("dbo.CompactDiscOffsets"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx b/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx deleted file mode 100644 index 84ac80a64..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs deleted file mode 100644 index 26501fafb..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreMmcGetConfigurationResponse : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreMmcGetConfigurationResponse)); - - string IMigrationMetadata.Id - { - get { return "201812251556377_StoreMmcGetConfigurationResponse"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs b/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs deleted file mode 100644 index 682c8c7f3..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreMmcGetConfigurationResponse : DbMigration - { - public override void Up() - { - AddColumn("dbo.MmcFeatures", "BinaryData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.MmcFeatures", "BinaryData"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx b/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx deleted file mode 100644 index 185315020..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs b/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs deleted file mode 100644 index c732f1dac..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreReadResultsInReportDatabase : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreReadResultsInReportDatabase)); - - string IMigrationMetadata.Id - { - get { return "201812252219066_StoreReadResultsInReportDatabase"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs b/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs deleted file mode 100644 index 90e4c3605..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreReadResultsInReportDatabase : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "Read6Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read10Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read12Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read16Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLong10Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLong16Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadSectorsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadSectorsRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLba48Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaLba48Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "TocData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "FullTocData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "AtipData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PmaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdMsfData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdFullData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdMsfFullData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Track1PregapData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "LeadInData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "LeadOutData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "C2PointersData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PQSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "RWSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CorrectedSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PQSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "RWSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PfiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdBcaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdAacsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdDdsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdSaiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PriData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "EmbossedPfiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "AdipData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DcbData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "HdCmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdLayerData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluBcaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluDdsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluSaiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluDiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluPacData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PlextorReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PioneerReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PioneerReadCddaMsfData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "NecReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PlextorReadRawDVDData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "HLDTSTReadRawDVDData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.TestedMedias", "HLDTSTReadRawDVDData"); - DropColumn("dbo.TestedMedias", "PlextorReadRawDVDData"); - DropColumn("dbo.TestedMedias", "NecReadCddaData"); - DropColumn("dbo.TestedMedias", "PioneerReadCddaMsfData"); - DropColumn("dbo.TestedMedias", "PioneerReadCddaData"); - DropColumn("dbo.TestedMedias", "PlextorReadCddaData"); - DropColumn("dbo.TestedMedias", "BluPacData"); - DropColumn("dbo.TestedMedias", "BluDiData"); - DropColumn("dbo.TestedMedias", "BluSaiData"); - DropColumn("dbo.TestedMedias", "BluDdsData"); - DropColumn("dbo.TestedMedias", "BluBcaData"); - DropColumn("dbo.TestedMedias", "DvdLayerData"); - DropColumn("dbo.TestedMedias", "HdCmiData"); - DropColumn("dbo.TestedMedias", "DcbData"); - DropColumn("dbo.TestedMedias", "AdipData"); - DropColumn("dbo.TestedMedias", "EmbossedPfiData"); - DropColumn("dbo.TestedMedias", "PriData"); - DropColumn("dbo.TestedMedias", "DvdSaiData"); - DropColumn("dbo.TestedMedias", "DvdDdsData"); - DropColumn("dbo.TestedMedias", "DvdAacsData"); - DropColumn("dbo.TestedMedias", "DvdBcaData"); - DropColumn("dbo.TestedMedias", "CmiData"); - DropColumn("dbo.TestedMedias", "DmiData"); - DropColumn("dbo.TestedMedias", "PfiData"); - DropColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "RWSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "PQSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "CorrectedSubchannelData"); - DropColumn("dbo.TestedMedias", "RWSubchannelData"); - DropColumn("dbo.TestedMedias", "PQSubchannelData"); - DropColumn("dbo.TestedMedias", "C2PointersData"); - DropColumn("dbo.TestedMedias", "LeadOutData"); - DropColumn("dbo.TestedMedias", "LeadInData"); - DropColumn("dbo.TestedMedias", "Track1PregapData"); - DropColumn("dbo.TestedMedias", "ReadCdMsfFullData"); - DropColumn("dbo.TestedMedias", "ReadCdFullData"); - DropColumn("dbo.TestedMedias", "ReadCdMsfData"); - DropColumn("dbo.TestedMedias", "ReadCdData"); - DropColumn("dbo.TestedMedias", "PmaData"); - DropColumn("dbo.TestedMedias", "AtipData"); - DropColumn("dbo.TestedMedias", "FullTocData"); - DropColumn("dbo.TestedMedias", "TocData"); - DropColumn("dbo.TestedMedias", "ReadLongRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadLongLbaData"); - DropColumn("dbo.TestedMedias", "ReadLongRetryData"); - DropColumn("dbo.TestedMedias", "ReadLongData"); - DropColumn("dbo.TestedMedias", "ReadDmaLba48Data"); - DropColumn("dbo.TestedMedias", "ReadLba48Data"); - DropColumn("dbo.TestedMedias", "ReadDmaRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadDmaLbaData"); - DropColumn("dbo.TestedMedias", "ReadRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadLbaData"); - DropColumn("dbo.TestedMedias", "ReadDmaRetryData"); - DropColumn("dbo.TestedMedias", "ReadDmaData"); - DropColumn("dbo.TestedMedias", "ReadSectorsRetryData"); - DropColumn("dbo.TestedMedias", "ReadSectorsData"); - DropColumn("dbo.TestedMedias", "ReadLong16Data"); - DropColumn("dbo.TestedMedias", "ReadLong10Data"); - DropColumn("dbo.TestedMedias", "Read16Data"); - DropColumn("dbo.TestedMedias", "Read12Data"); - DropColumn("dbo.TestedMedias", "Read10Data"); - DropColumn("dbo.TestedMedias", "Read6Data"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx b/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx deleted file mode 100644 index 7e119a0eb..000000000 --- a/Server/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs b/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs deleted file mode 100644 index c9a83ba80..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddMultisessionLeadTest : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddMultisessionLeadTest)); - - string IMigrationMetadata.Id - { - get { return "201901022133012_AddMultisessionLeadTest"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs b/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs deleted file mode 100644 index 7052bdf3e..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddMultisessionLeadTest : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "CanReadingIntersessionLeadIn", c => c.Boolean()); - AddColumn("dbo.TestedMedias", "CanReadingIntersessionLeadOut", c => c.Boolean()); - AddColumn("dbo.TestedMedias", "IntersessionLeadInData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "IntersessionLeadOutData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.TestedMedias", "IntersessionLeadOutData"); - DropColumn("dbo.TestedMedias", "IntersessionLeadInData"); - DropColumn("dbo.TestedMedias", "CanReadingIntersessionLeadOut"); - DropColumn("dbo.TestedMedias", "CanReadingIntersessionLeadIn"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx b/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx deleted file mode 100644 index cffbecc17..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs b/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs deleted file mode 100644 index 24c067989..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddOptimalReadMultipleCount : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddOptimalReadMultipleCount)); - - string IMigrationMetadata.Id - { - get { return "201901030344456_AddOptimalReadMultipleCount"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs b/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs deleted file mode 100644 index 006d36760..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddOptimalReadMultipleCount : DbMigration - { - public override void Up() - { - AddColumn("dbo.Devices", "OptimalMultipleSectorsRead", c => c.Int(false, defaultValue: 0)); - } - - public override void Down() - { - DropColumn("dbo.Devices", "OptimalMultipleSectorsRead"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx b/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx deleted file mode 100644 index c9bff226c..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3PcOLLm+0bsf1Do8cQcy/L0dMx02OdEiSW1NaOyOKJk7ZuCIlElHrPIapKltmbj/LJ92J+0f2EB8AYSAIlLsqqs1oMvRQAfEolE4paZ+H//5/9+/M/v6/joGWV5lCafjk/fvT8+QkmQhlGy+nS8LZb//tfj//yP//k/Pp6H6+9HX+t8fyb5cMkk/3T8VBSbX05O8uAJrf383ToKsjRPl8W7IF2f+GF68uH9+7+dnJ6eIAxxjLGOjj7ebJMiWiP6A/900iRAm2Lrx4s0RHFefccpHkU9+uKvUb7xA/TpeB7lweXaXyHnCS3feSjDxL8rix0fzeLIxyR5KF4eH/lJkhZ+gQn+5S5HXpGlycrb4A9+fPuyQTjf0o9zVDXklza7apvefyBtOmkL1lDBNi/StSbg6Z8rJp30ixux+rhhImbjOWZ38UJaTVn56dhJ15idBWHm9XKZo+L4qF/rL06ckRKDLH/HAf3pSJT9T43s/PTuL+/+9rd3pz//7c9/OnK2cbHN0KcEbYvMj/905G4f4yj4B3q5Tb+h5FOyjWO2IbgpOK3zAX9ys3SDsuLlBi2r5l2Gx0cn3XIn/YJNMaZM2d7LpPjzh+OjL7hy/zFGjZwwvPGKNEO/ogRlfoFC1y8KlCUEA1FOc7X36pqFIQrvn1BSVznHMLd4RAhqHUbC3RAtIygwP9kucW/iLslqMDxusC44Plr4369QsiqeSLbvx0cX0XcU1l8q9LskwqoDFyqyrQrlKJ68llq6m549/VmbLd72cR3lRHrzMREZ6fZVhtAai0jTbNzoWKGfvvjP0YpKXg9xjp6jAGGyblBM0/OnaFMqwHdl2oMT1jy4yNL1TRo3xZqkh1s/W1EupeJ0L91mQY+sjyetVhnUNSWYqYIpS79plQPSKiMjboOndjyT406INjHyUIBbld8gf5QTw7jVTHMR+/lTjXSWYnH1kzdF9+n4Bo+TnC4WJq6IwDeVtHqm/GysyGa3syElRpM5/YW/Nqqpp7pIUq3VNGhwL0eoIBlEdLiXA5TgRF1aWq1tp9klRHGaX5WuiyhD9/jPEF1tHo6uOklGV5OuSxdVNwsURr7jZ+EQdf2cHI3dDDJKe7l06XWdhXM5KPJ1Do6+MkFGV5WqS4/neIOiX6ZztJDPMkpomjYdKMBKeR6tosKPBwnqZuQpY9OlJHYy6dJ6550NUUiTObrwVxk1JElEg/JKa1b46sssPJ+u04TuhN8tUOGHfuG/wwj9pRaT72291auL5Fu+NKuRKPGzF7UpV1XGyLrJ8Tf+YxRHRSRZ6eNee+AztqInSueEUJhJd0jcoHX6TNhNNeMQtb18fWI7yRJau3msRs4tyrEEUCTLEcQgvY0k3ZGE9xg+wGjqr6X8hAj2bOZ43MZBreT80jUseWta8syZmRV0PrhplGD+54blF5eGBdMsw5s9FHrbx+AJC0e767EGuo+KJ+eDGdzcOTMsODeUl7kpC6m+SJZptq4Ofk1ALvA4vb12zAp/nhv3/5X/gjIyewR0xBuRHmV5cZv5wTcXqxN/Y0gI/nNpyDxS9npbmBWmWv9yblHYQ1nkGw4bd2bY5+6FYY+7C0Md5f7TVkewCDbKwb0xbPvNvW0TWASbJtygIM1CMjMbd6S38TM0y5BvrXz0Fc8cJTmrMF6KAzu+o4M6J1xeJdG/UMi1T/fwEQNu1+wxmlKbm1Lk9ys5tPS2m02aFfnnq/mtd0uF2f99/lVXg9YwX84dun6Yz3X1Uo3gYsFHKINFWXgXpkAx+o5X1rbktChW7CUAp+9tCutquE7hny0K25StlzRWBBiuizoQvObRKbzIl1blsejY1m8HcZUmK6s+IACaxYka9PAEhX6eZmva4J++n6YCL42j0MO7dFRfwxqzb772rx59O4AbVGQvdih2pSEIwGJkj2BJiIfQN+vewAA//dWuK6zKYxIAxMlWGizKV5fbEKJgIQdmK3W8orukx0SImrbYbJoFUPp7aJ6YaTSigNJpKjqL0+Bb7v3WLKNxzT//pFTKw/uMbkFyADtckEiSeeGzWSXLBiV/+quw7Hhbr9JVFPjxLI5WCTGL6pYnc/1w+S/pGvdWfFOdQt/gWU4Xwn16yQkNxpy7q3bMBQrP3Fvd6julPd3SdGU7jfCWa/0JsT9MiD0hT+gidEK+lIvc6fCrkTp5BXROm64WPPdPCj4x+XjhNB14vbKclEFT40/fCLp4nZpHU9ZAVMW06FOPgnIjtYM2TFbLbRpMA0wv8aYCnxXRZhpkd0q97IRTYi/y5ZTwpEMnJn+6KuiV7KmboZU/keBMueObdJfXmltMNKKYi86J5Od+6hoEBh3TM6u8Up2eZVPWI7WEmYh9y2ga4Pl6ImBnKuD5c3gWTDSXYeyZH0ykLzD4PJwO2/MnYribTQR8vn5M8xyFkwn3LJxqNTUPHqcB/hxOOXCoIdhUZ6rbyYYlxp5s5GDsyUYOoXs6aNefaBPC2jaE4UR9ylpi7KqSyTYSX1AwcUP6hiITaZ+etQ9QLXJfus+e0BGBMdV/oHlaJ4ReEueA0E/Xdu/b4oVdUihRxmSVENjkGKazzWblK+E85ZY+EhjhzTdC1TfCeYmjJET92zWDOAaf8YizRxHe9Y3iKEtX6zxqJWI1zJucqcrZTo1q8c9wGxST19N1ErO13P2KkjDNLuf8HbEmUNV8bSTlUbRYB15oOYQoxtv4UdbTjOMH3PmGNwHotXMzgaHhFKDn3ws85FAIwAbloeMG68DaC7QEeRs86oPHm2DwpOtNHPlJa/U6nbvEHiZP8mOnDXOIsbKmiRIJjjFeTnlwekEeWQ5NAvE2MJU9s5PfttFURgC1EWtrZW+7QuMQBf4qNpDbxw2WGd7gVz++1g/mViA9yTj/6s7dkieCgwwy2B6YLO0BRjeFO7joJWuHA6oZIKeKydKjqkkRU9Ummwcpqp0xpMRxOfs09jJISO3n0o/noRB+hFY1FH9EmEFM8U4ikFQ1SUOQiNJl5I4HIRmi1kO/bYki9uMxieBz9ujtZxATzOWyOgokkGSAAkzJBOZtWladljeU6ZVWp97DmjNQXs5kXYzhIs9+vEU724YRmSCaFkC0CMybaCmfAxq5p99nUYHwt4Kaq1ivuTaIAVGo/my7XKIMhaXEaJSL/eQbFojg23lC6LOmfO5e+0l4ccf7ahuHxqSuKXOUB1m0Kb3NJHMEafwDn7s7TwgzCecKcU6Tldjw+pDWw2QT0Nukyglts1jNaL32WmqfHtqbElJVQsKgIJpD0cL/rpzAhl3BdM7i7U/i30RHef6qt2cfZlPvfS+QT1gsVm240x7aDK1SY79z6qyTqKtqO0EMJRR18nSJYm0FRHSx6VY6FoO1jLEdGDXS2wBRDhM/c7yKITpLpdmvl/Nca20VJcQz/At53KXUxforujti+ZBtk4sMoctEFLpGd1IQwHqz6ylgb+1hHT+ZbcMo9QKfd83Xxzr/LxTwbvkGOJmfV4H9IdC+b/CS+Wx+c96EIQNAvaB+1WBAhDxiep9uC0olGLCDP4KBXdzwkaZMsf4JStnNzQIAq1Z6rGoBgL1KfeuNH4ZZbAs8KrB0YAqd0lvD+qYAw14/o+x3sr3Geoo6YkFi3sJhurH/4sypvoJAy9E2TBs68fgDAKUheeN4vvVjaLh7ILwz6ymuAYJqItF9p4BYfBQ4Y6xrCK1CseKtKOKyGZgD1YfOfAEmWI57s3hY/IOPhWwGN5+DtRJgWdciufE2h2NaBQg1kmq4+RUwIHR77+EozKJnRLYcZDkRLaPALyCm7DJWNZzkUCyobi7BZlC6qfSNdua36DvEgoxAXseA80MJdg6KBqbYlUIbm0AToxAq3JKY3aaYQ3HA9THJoQ29myH6GqLDW0CQsdfAgWzDu4AwG/C7zSrzQ3QRZevfYTZ+9+WCFg4Jol9rKJCVXgMGsdQrwbb5eRJkLxsSKa17mGSJDLXGqsBgsZzZVzg4mAFWgcEMrhLM8xZ+4q8Q0EoQVN+1YGAdC7pKZRHh2gu5Tu0ggjcZZqVaQ0JyEJZ7cJwDW+oyaCBrXYoHtjJl0CCWpqWBix98Y4OxQK0xKDgbVAZqNSQAhqRYEM/dHIoaq3plYF5AWOi2Y6wVyi5zLwpR+YPaq8b2K8MS2YvTondTZghUGa6Te1E3Qznz7rgxie7NwuDqEE/wBqXmZwtrBYp1ExUrshO0xTpfPyLywnbFXmu4LCOhFoL0GWUvLmuLaQhY71DmzAmL6qPd5AYkSlYLRIZKlGub/12lRDHatgCsq7C4P2Nx//t2vbHvqHocCd8PNMRqtzMAyq4GFTwgZYrk2l/XNVgeGNfmM/4xRVMoav2Ou+Hl/BlAMTYPGb08ZhF9xs96f8r6HRH1cOpYP3tfQ157Hv9KlyGWew/WJ969C4dFXnYm/QAHWF7sfk3j7dpaV9eoXx0XbHRUp15P0WNUiN68tIF1S8tu0RODupYy1A5vyhcX3DIUE6HpLom0HxWoHiUwfhCgflGAvjOx9APkFX4S+ln4ZYsXEJkuXClvV3g+iwUxV4zs77zc1iAVI7zZ26na2zWS9Gvm4zb6mfZrh9+VjZIFpaNEp7TcU61UBygsTbOlvoB58CDKyhj1C3Pwhv3ibNoOdjUEvVah4jlON5tXQnibZZhyJh+0OS+pR2LO20sSkghmztvrpRdb3dKDe1M0qorGzaI1nkkdzgdKd+bHm1IyY9kjkbUDxNHIfLuJQSwH5mjpY+nou5cYol1nK7xb/lfnTnmySBzk78krqX2VdtGgs6gga7XF2jqc1n0U9qc2g8B21A7SPj5e/dLnVKG9sO7uzi72a7ku3pvCtXWVfVMjO1QjMINftDxWgZGu3qophkyh0hVnd9w9dIt0VnMDOUWLu6HsVms9BslS7TBIh6Nwynbpqhx2mQStdJR7plzOt+E9IKYGIebh9NahTw+VBeKQQd+YGhV4QY8dFuwwEB1t2WVOLrFWeAIDuAAyij3RltrJ5EYO5OOd1PJKQoQpHh0Jtc3IYZJqGUlgdIWCUx04jRAgPoJSLqTb3pFjKuVZ6C5/tJxzMMLbDPMWs5swDCRmdycUDrQSFQcEN9h+uOKA4HBh9ckY8hONkOB4wfKMsnd0ssvfVcX7I7PM9DYod7/DdtJta7VQBbaBkZTSMsIriPO8mbC0CG/ycmhKfDeL1xssAflOzpC3OXwdA7FFyWpJuJxrZf6hztUu27hEbnnG57Bahl1EMcpf8IpvbTqGW4S3Mfz6dT7u7QJpBLvjZKVAXHC7Nzl5fXJCV+R1ZB0zYWEg3iTmDyIxVrLyJiUKUsIemU64qgNwSZ9M0q43hHe45Z7VwqcH8yZ9h6Kjeh5EP6AudP0Mf6FtMJPNBuBNKg9FKqeTlrtNnPohCuvtpJnIdFHe5EZBbmqW3T+hRtu0fnTa89164wfFRezn1u47bwdF5hV1FkjtgU352djIZ3Y7E54GdUfdA83WHgfxqdx5kCCL7kUkLuNeKlJHMg7R514qUIgz6dLYPvY7TmabV0ppnWWM2Caf+QNO5F07Far7JaS0dzOOtaCXW7cdrrNwLpVEt84ppbvMMEZvlUv7Mt3xlES4zCelkSSPUUjz6D/fFGBlPI9WUUG2RgqEdgvIKWbzjZLeyazbhjvvTIVymk1KL04do5JksbUtaK6gDRdDDcLbQkjJn6S8lB6t8jDsBmYh1KINi0u0jIDAKhsBXSZKx2uJJx6y+WOZ+lDxvGM8xKc247EZsnyWelSbDtmaXOMRWwK8DViFAWsoahIB+4MMV/kiqRlDEEONmx3lo9FoqDXHY2YDrSr+NsxUhhn7EOKPcLJUGkd37HvKje9lfhH7q7yBM7HcJPA5s52eyHrziD6uEr9gZrP93GXhApEQC/Xkk3xL0t/xiKD99en4PcfxTna6Sa+yno5mJTvmKjPvRN/JXO5Nqrx/Hsnb3R5Uhfg3yzqFFgunyfqX4axfvi5Qk1cQPqIUFPbjLM/TIKLC0HE0Ke2Hnc9erwfOk/CItThu8rUKsD2D6Xiv0y0tcfPFIvzp+N+4hsiRm1VMi+w85X3E9+/enfZbzLROo9HbLMOKQrntTfapWNBWsANOzAqff+tZRqYos4gLs0Kr9UJYQdsHmAvAg+7z0cO0Sp6SHuQAT+IosB4P/s2YAdXb0URlyshrs4iaW79hrd7nDJ6glUrsM2ogVvTjJLHnozCNZA5Tp2+mE14vlzmua4SuOh9oYxtQkfIqb0/IgqKicILWNwfLI4Typ8sAreeOohnQ9sQbvtG9c+kRKmWH0wAMkJxkM9CLdeCFU/CgOtseIbB/wA3Q5t5pOAPpBusAeLIiLyQ/nH915+XzyjLSutlEzSU5NOeoHqigwSRHGfwUam6Sv4Q9ROXIs9hdgstXxrU5MfygNlMH9wg1OG/a57ZHCRa8vQ3HDf7V7sll46HxfB0eC0021bEwNPB7iJLGqnFSo72dN4hltIkfJO7oX52mCp8w7sK1r/8Ct5Vd7A7RJ4yNNtjiEYGWvY889UK8lKtmCq1mpGEp7OWGE+8+sLjz4Sc35e2oMDdY+/e5I60IUNuSijJDTvj72pVKYk9KaR0JRMkwItfVByPRK1lsLnoiIDuGAgwNkK4UbajDnn5EMl1mqQQs6qy8mTBEk4gPE39BqY9FoRfABEgQnUGH/eYsUQ7JMXxOqROfo68juIhGWmzUDvOxk5GpHvvDsF3D0rgDxu5NYvtBcYfG18gq0GzQKq0CR3hvuR5s0VXWg/3cYOshDlgsCVOc7NA7t5FDmK5RIMCpTseCUHsZZdDIzmXhGHFig0KIZgutD3dxfkdMEkeI69glAjSWNWJk8GjYI/AGstEEhukShhboN7cM6aHbZFFMglFOWjVeYDwvI3HIkp7pnZ4njToLBszwJ7yVEdrnq5MovoyCZMJuLqdk9v+KdA5d14AxY+fXN8PuBYpUj1/ngDFoH9c7YhcGRYLl1z1gPNnp9Y/IU0KRTtkKCYwRO1sxDXphqBI7toKCY8vuV1QCZw9FYiUrLDBm7GjFJbDnlRI4YNzbIbA2pO6SedoFxtDXyRzFqEBHs4BQRAIH54EvikSNidCgSsy2xh1jrEtu0BJl5QbOSZO8yPwoKfq0u1mUBNHGj0eZ0yt5pGb5S1rd1NFPmaMNrguTOMoDlcpb63mehKamXoeM8UgqgaWpLi5T4BKNfeY8CkqLa5KAvoscne5yVBnl5pUdcV8iCLCHitqMuDKvyY+PWvNguXkNNyy7aOVyX4RVbwRGAPAiUVSarh1HijInKyKIzpXCCBQ1iuTZQb6OlKwXdaLy7YJvBITqbxFCpdhHiperBFH5ev0wAkDmV1Hxct5VKFyaDogByht7BZBF+c6BEGQhCsTfB+EMPHgszpJivGck/aJStL3XFiG0qWPMyYVE0LOysaKCaNk8EHewPU5Q97xWQl7/UHdUmbDvXQg0CnPJo6Qbeseqci3Bnb+OwOOJRQRGFyFjqqaMnCtRv2VMXiWlSw5i5Iq3PNwZVV51UEex+mqDRo4DFUg44OpIgmODpY0CJxwtbJw5FSgpyGjxXrwnERAXWWpMP9dheoQqug0CNAJTLoCFctdbXI9Lb+ukJhLiZkk4DlQukiQ49YJ3BKZyAhKBNF5sPQhmFSVcEFBPlCMmF78o4J1VBBdavLtKQ3x/AcItEscdVBgs0VrjpNtKXQ60biljjJA4sMjbwLuwWLOFd1oB547QVUXAm3GXlk4zBp1amEaUS90Bfgy6sSgy2JgtXVMhKVcGLIoEbRGbFOnzRGw/NB1LGH8WASdk3i6iCyL2CoKht9k3DTRd4OEywjmrlhIPxqG29u8cJLQytw3G7WXuEyZrcePjIm+02A1GRDPnCGPWdM71hVWB7b4digXt/lTKAvEli4h27nrFjAXcBQoDw+y1oVjQD8ckZcTQxYqoHZIrFTOmSC5NGLD6BAGKL3WYJyk/RJcoItJ71ydm7e9dkDAgzdGHdcN7bjGClg85znSolrjOMGRXBy4DLZd4yvQwKlpBGi/2kZHwQcGhhmvOsEtNr2XVYdAIh4Y9aBhIvl1wPGt9Z4aYJfGwETeJ97ExZw/vUjOhEDHONLIRJHG34aWfd7jRH0G8i40KIw0a3/GsETRd7nnTIVroe9PV88OtFnrbdAGk545mre6cs4sbLjXA5EgXmWDqNl9kcTndVkHscSMV/kHXHIH8ypxzDIaCzB1nhL+mPFHZaSu46/ANUdlrK/JkD7ttoWeOnDWq++1BHx4Txux6yy1x1hFxRsGtp9uiYcceljv5iH4Z8eNhoQRtgWDS4BvhQmYpO/30W6ri9tNlHncrNMxKFS+fzo6BbSusxLHvq46InMwdQy4oAvcLY6ETeFJo9YHxqbLKQ7yyc2ZdjyHBMbGGzxCnpPh7wNFTaQ0XoakHvcbLwNr8V5JlfeeiSXtgDyOg70UkURFq61yZq5GuSlBa544x3nQFw/kUyZYww85H/MpD6n6kv4iROhyNcNr82KyM7Sc9NOONbUWnXR0zW7MDs44h7RjjLJrbDU8ob7fcvlZIvdCy1pATQtvZCU9OaVx0KSc4Q1oRzawJrVmrWSNZBqE0WwFqaedtU1mDpS5LAqpFTktc8yurl1EWiNyUxnlpwAzR0x48N8Z8mDotGPBiYprQmIMM8GLAXwn+Yk38jIgKLwavFgcdmqz5MelVo/TFklGmKNy7jbk32bFmV/dwI8+jjDJK+V5OzeXJjmk7vKeTPMsyyq/Re7th9yc7/uziHk/4EswoW0ZWZkOOUHYsmXqlNvzezDhfFFduSr5Rlpza2UpO9NLNKKeGV3YDTlJ2XJl2pSd61UDAiRFfqS79cm+pLv2NZekQM+ROTl2wlnxlntTh8xufnCbt44kXPKG1X334eIKzBGhTbPEmm76eUCcs/M0mSlZ5W7L6cuRt/ADT7/y7d3z0fR0n+afjp6LY/HJyklPo/N06CrI0T5fFuyBdn/hhevLh/fu/nZyenqxLjJOgw+a+B1FTU5Fm/gr1UokdeojwRJ4Xc7/wH31yYeuEay4b54HUZV/D5bq6vpMR33e1hW9dgvy/9naSv0fBuyb1kFvmXuD2rvG+nzYdsSZU4xgYxQv82M8Ez0k4abxdJ3LHNHlp5mkTFoT5rI7VfdyEheumaCB2npHsIHZStGgkb0X2iCOf1DFq6zwWROyUNoTibR/XUV5Zl7NQnQSNnlxlCBHh6vVk+5nH+njSE8z+mDjhBkVPR/VHmdIYrLe4UCNQfHynMOxkBf+IY+16U0RrPE2UrrYIr2mINRK5hu5J+kA+9dq6j82y+N2UH11XtK/GsjDtV3UkMhS6KOWXgxnV9GQCakgTL1v98SwsNc1gLl9gWr70MeqvB9MtHWMIqO4ZuE5S6KbB0tN2F1lSirusTNHQYH5ClN5s5ng9BcYm6OPNL10xHk3Qx7uV4d0a4Z05MyEc/a6N5nxw0ygpHTQFoGyyPvbiUgxKvuujpVmGpzoU4uVZ8OQnSX9qGMoHUdt9VDw5H1TrrHNr1zx3zoR10O/6aHPx4KDf9dEkPTo36lGq35Ildd3lZmhZHu1aLrZxfHvtCNGbNG3Uz3OZdFcp2ohX/gveSft46RUVL0LkXg59TpAt/W3mB9/cDP3qb8Qs4TLptwT/uRR3Z51khHm9LaSgNE0blc6Al3MhapNmhoqn68gXa6hOuja6OxPLMv2uj3YhlmL6XR9tIZ6b6Hd9tH+OqPpuBiv8AeUuyqZf142EzzcmfL65H+FMN4MV/gBnRNn060JBmoXEnlgmi70c2jV4Gz9Dswz5Y5ONOKN2fbLZRnOmaSKusFCSMCxDOBPsy6lqzEm/rJLoX6i3MRAk62GXT4vyoPV3EzTyW4ZYpu32XKIyRMw/X81vvVsq5v7v86+9uUieS7+mL+cOXavO5zNxJZ0M+vguHi0IZcN1cJms61l4F0pV0XwGtcXoO949j7Sqn8mqniFBEGTTr4uUPn0vrqBOM0T9MICqNTt0Sv48gPqzKeoAqDFmvTofopjNY1fLeB3GNYQD2Fr6vFtykS+HgGmyKTYeD0PYNNmC7hH4OodZDVdpshqSmTrdHH0YW3f2o36zP/Nnef00A9TT9wOwdaIGH9I4ConFJ6qN0Tt84FLNODxf+1ePvpzHdbox+g0qspexKtpMhnIyhG+BO068NeVYhoeprzOY44+3optLvyYPoW/SCppEGwn96a9jMkpyGEvPELwVNqZtkHDbkTU+rKxkf0TwTbGrq185epPBUuoVRN5U3uXCbrDzjpLVJb2tQNR8Y+AgUpITokbZMaUsq8YdGkex4DZNkse8FkzkeDVNJvV6aNyV3Putt5NmPmtiedG/kBiuSVFHJIItR+VTNZDPZtW45GG7SVqYP/11ALWbqMOFVYS/z+JolZCbZAEjBBnU8b+k6yjx45sqYvkNXohxVcjyqNfiPr3khEp5f4pzqNdwVx0YFig8c285eEGyIbY3jO1pYtPNLj+6mc96WKLFO/tdE+2DBO2DEZqkoadGLaU7Mklr2TQDVAmdbJoeajX2xbCdRCNcOv8PgjM59GrAqy8xcJOgjTdAbTdVs+ceJZQ2CXp49T5CDNpN1eaBFJdNM+PsELQN1XT7IOVwnWTCCRlsN1V/HMtHsSnigOj2kvWx5fLLJhrSPAhuKhW3acCDNh/VcagRiAirk6BhZVxEGx6s/aqxbhFpP9dM8zmhuAfq77poi3wpA2ySdDEJw2WgbZoBpUPAnWQN6SMmMqduhla+oLf5VI01t2RnZ7abk+7gDHdtrUUgD9lP05B0xsZCIPJcqoYM3A8h86kanOCN/gQskWUy401pZTHMITaPGZ9ktcjyWPFMVtlIVg3+LSMBw+qPGvYYawFO81GDByIcRx9n/hyeBYIJgv2uhTbzA8Gg7iRo4c1DMVzzXQvN80XsZ75rSEQmkohMG+d8/ZjmOQqFEsYlaqwgQuEKItRfQcyDRwHT6o/qOJ9DodQyn7X6klqyCnuTSdE5/dsKRwL7XQtNKLnsdy00oeSy3/VoE4PNTbBcX7DsZb9rjCnGBCYMRetWUQYNfMaaR4wvymCML1zeyvJonHeiQN4CLtGI+6VZ0CD/2SwaOqBngyZQB8IcfA17csQiLwX1azL2OeexjhS8zEWlpPcwVv5WzkscJSESXAd0UzT6H/crj9Z+1bj/k1xUDN9R7Elq2ohGULIjC+CkIEDyotNIEbztsFu/H9ddewkflRvC6Uah7m/su2nqqNW7vnNONDsJ2q0VAHZTDkbaq0A5UKJePlKrL+eSchOpSs4DSNPtx+uX97TKXzs33fL0g4Y67Zf39Mqffy/Ig9Uh145OwsGIaB0PDEpGq4eQ9YVUVnAqKe17cl7quXCm600c+UnfBJL9fgATA/kh1JRlghmFJKARp4GFGXQMgLJQiNtJOJhRUwaNgxoz9PVv/REjLjbNeLlMfttGouuyToK+0Vpr4iw2XWPTLdBl/hmdDIb428dN+a6TtIImx49uFr7H0SZ70ct8xBFEw1EnLjrNyCOi0y1fflFHyEv564I0H9Vxnv1420OpPh2UpCwk762YSwr5r6GkiItOtL0Edfa8z6IC4W8FvTbqIvbTNDTnBvXBqk8aR63b5RJlKKS87R62dlJ0Dm/95Bvu/ODbeUJ2uj0KBckaB/TutZ+EF3ez3ul8+/lgRo/CM5Nmg6gHbDCWRhGmGVJQXuPg1tlXKFkVT2JAJu1gRIu+dwd4DmJ2CrIzTVwvpT7MBtZZdeIhddLAy5nGfSXDVOszeelp+o4EOvuKMj7KYSdBA+/Xy3lvc1B90hjyUUIcXr6Q6MelzugNe0G67nx6R24xsm1ykSF0mXAu89JMdvV4s+vxemgmu3puVeq51avH8ZPZNoxSnMi7RTEpWojn/4X65/ntVz2kzM+reKY8Hpumh/p9g9ctZ/Ob8ya+C48uyqNVywV1wuCA688GWIQaYvGUbgtKlASbz2ZQl4MyGe1lkgHmxc2FBJKmGCD+c4DMfxrTeXOzkGDSFC3EX1GCMr9ArHrjwMWZtOq5SvtRgZuPWjiLbYEHFRYbTI5TGtnxgSDFmbTqucbz6+9kC4YVI7WN5SoR5DCr4Xa0hluzGtzYf3HmVEty2J00PdQcbcO0oQ2PZh5ckEWrDmKRMYvj+daPefRuojHu/SDwvQHymTgu35lJSD4RW5vvJmjnpzI8kmKEKI6xVqWYIF7zeo1J0UeMt9LYs1WSNqYj7mPHpI+d+UIihVWKPqJ7s3hY/EMcj7VN1MadzyXtLhP08fpLX/a7CZobb3MZM9lkU2zxYGwTjXHnV4PIJNkYe5AdVty4HyH73ozuLHpGZAtIVkbRMgrw9C2uRphRu77Pc5kcVilmiGJZqZMMMWdi1dgmauOW3jnO/JY8hCPC7mbQxr+OpZNYnWSIeT4Aem6MKpl82kRt3N2G8SR3oXRgSAP5cjkMahgOFczl0KqBBPmn1x5kVuElp59siC0Y8t1EM1zBOYsg2RSbO1sRJGth321WmU8fzVr/Ltqqc+la6Pflsp9Dbb6boPEScW+2u6iLCZbEbJIZJr8oZpMMMLf5eRJkLxsSLkNwLjmUT7828ZKUTTLBlEOaIzqzr3JQmmiCKxrDbJIJpmjsskkGmJ638BN/hYQLaVEW/TrEOthY/7YFJbJQpxmgypf/XLoxuowVZjuATlnBWppLN0cfZoodT0TbAD6DEb6c36a8HuKzOY8H+GvGW8kWopNmiirYRPRS9ZEly/xOmikqv9DvJurjun7wjXXQFq+shrLq18k6oYtXibJstnVJ2ybIZlBXP75wJ8EIjz4R6JVB+qTY3UxG9agxSZBPozZcboWyy9yLQlT+IDGuH+P+Wnsgn3ZtXpwW/fVhJ0UfsTKyJfYHboZy7rXQoXwatbk3C6FFQCdBx8NFbGDAftcwUTpb9OaO8osGwtc5FVuy2+8hdVI0fGDWj4g8A1rxv+cH00/UwM0y4nMbpM8oe3E5m1ZBsjp2vZuccwd73RR1RHKDGCWrBSLDNMoFlpniHDo1kGmgj1l+07BWEne+Uc/j4fWMh9fft+tNv997SfrW9vzbhN0UfcR2X8oNRkkW/Tr6r/2w3w3Q3P79ejfFANGTMJUm6OPNZ64YjyYY4NFQ8rgbXs6fOQUvzaRfz+eXxyyiL+RJXDk6GfTxiT0c0UmnzpMYv5NBH//a8xwxcJmij+jeS3qSJujjefeuBLBMMUBEwTYjPSKBbZNNsEsbja8EuP/QgSSPfi1fHVcy/MoUfcTq1PUpeowK7vVLaSbDetzSB4B7RU+aScvm0Rc5nLHfdQ2w3TLcCFnA3iURH39ZnktnTl4NR0cWZtCYYavgyjRm+NIPkFf4Sehn4ZctXlhl0mDMQ/nVay8l/QrP5DFvzs4lHoxls5cDmp9jMBNvIFEpGZvtTJgb0fo185MtTudcGMQ5NJaM/vchNwRBsgZ2lAxi88mHI2al2kNh6SISQfqhdaFfTCRwFGIacXSzaI1VtsO5a3USNGYgvMMjGkyA2EtSxyQTFX/+0X7V2E1vN7HAOoT5rIGFlj7ehUm8kLpp6qjX2QrvNv8luPLvpqgjkr+7SOUXnZaWrl0cSZ0EndVDQebxxZqf4zspGhIShQJt1H5VR6LmsvzsyXzWOTcsn6YTxE1gEg5HQeZBo4WoLQborNyFNpujxzCmUZGwrrt/hAEONxwl64xDXF9Uyt4B9XBnQA2GzGBpqdbiJm7ZfL0nRhPzJRR66LctrjLyY2BdJYQ3YL4izjQ6q7IPHDa666Xr6Iu397pt54HDfa/7LbwNo2zu8kc41YLBDBSJsNRES50/WBBMNp6GcOGj+aTkHz6oppOu134CGFazAjSJQCwrOc3QsV+FO+mWs5EoPx1M95ZXeeQVacglbo1ptMKVF/5RVCTEnH2D+cAbrbRfNQ5ntv34FVuhCtxbjOoY5S94Zb2GjFJdYxrFqZYXftM0Nv1MXleC7GOMZ9a/woJvfWvct3SZVsadAIxl1IKaxDIaKv3W1XZdDdzJpt27q47lTwh0zwZuUP+8pvzyqkTjekNCw+DfHvB03gM2EJdRhEPVCELTZRMr6MMXH9fP8HfcLsDw+DWkSYR8edlDFZYfoJNLx3DAA7hNnPohCktck7O4EYBp+rqu9f4J9cZ2N0Wn79cbvFW9iP38qS8CbMrbvlh/Vt/fSXV1KAh6YF2f1RqdW0sLTzNO6kPRHgjzefcH17NQOHCZz1ojIlpGIrhuivaBddhfMdRfD0m6S6pAhbuENJNtWdlpRFu/o4aRRDg/nljvSRirFTWcKNZLdH1BlJacSAz5Zya+yp6Z+BHWnbM8T4OImlxJ7Ezo0cGD89k71rIfYYqJDUOERxJYgML+uqML93DrZyskmo6VepsgiHqc8KmpWZ8oL91mgchCyVgEBwly0iSkm62jy/zLNo4/HS/9OO9bLQmb+vFE2OWGUrHNMiyTpsLBlAaUkQbVVlRaIGiJaZEPUnCGGm4tP7PCf6BBNYmvfhSXjgiK0iMu25cdnEtBZkRYlhLDwQHIjZDMQ5QahcYDyQ5r7KIpOr2idlpHAGnZMwQRTGa6hNlJ9jQiI26utZSUNhEPs9uZqnCwJcQWFgri0IJYMpsgAEgBQ88h6gtxKwE7373U735SBkAA3Et7EcAYoEKA8Q5UDIQthRIEJ7xeLnPcE3qy0BazFYcayXY1WsPACUUDeYhyMdBeKNG4iDJ0H5EQrVqi0RazFY0ayVI0Ghg40WggD1E0BtoLJRo0vBBdOZEnnjUFpF/YVky6eJbC0gODE5ke8CEKzmjbocTHdRbOpe7qsy5kKy4ljqWYVCBw4lEBHqJYSNtqLQ7kkd2H86/uvHwgWuNVX7aU6iPPAuZ3oSy5T8EAJKJH1CHuTCVNBREI0ssP3Gu2mi8+CwA0X6WVdIwQHEBwKC6Q8IhpPFQ5krQcTpbq2Gz6QsSUtFQyXbhDlJeWuD+ioDw0HqZasxBTSiQgqjNQA2O7eG1woKahFvEQVyZD7bUWi8U6eGjeL1Z/MJkpo/CItYDvLIbtzreGARCHDlmHKAwDjQWRBfbyQ0McOsXsLlR6cJa9QNCA5IIl6hBnD3FTgSaOZtNcbUS15g+usNU00kMDOwqp4MAmlT7wIaoThdbDCJDpZb+ksI0A/QD3/WI6D1GAdnHhX3HD6MZfXNZuhhJhHtKpyo9w6z/Z2UoePAhinKpH6BOW1o1TKuoZIbSt2OQgqxsJbQcpN8IWQ4hNN6ziQyeQnWmAxx6KRmQ6cS8NoNtLUg8cRq6GKNaTL9WIfCAyNsoLWEVFayEyZqap2OLaAUPH9EELfoDKiiHuD6SthEEVLaY9dTyAiVC1MktpE1cDZsOtQP8hCqQqV6YWUX2FpwEIoQKVq/tBxfTAFefO5JRoaIMzT66YUdxbyewGd/oJOOUe+unnVBsDsk9tu9Hg9JMvbHN41Uez7AsODuoMggM+xMMrhdZDGYN5jqdriV4WsTUEIyi2QkIg4IzAKNxBioO4nWAiQN56Q/NoFRUkjJWeLHTLWgsFC2etQlgsQDHp4B6kvIy0HEpw7rwzTXGhJWyFBINYigZBgBMIgnaIYiBuJVDnk6C+D1WcJe1Qwk1B9YDBUvYzeNYXZhQETDBYyg5RPqTttRaRbhwuHV9HUUm9KF+C7uBBD8MHUkDXIcrJRL6QfOvVfSLFZScQlMPxlRTSdqDiMo3PZI8Dug5y0uLQYnOAjnMyCg9RfqZ0oOvxwcyRbgQEWpwO3MFumNpDFLDpHe16PNFzuJMUhharA3PEE1N3iOIznUNejwc6R3PCotAic0BHdiLKDlFYpjq667ff5AhvGANceA75aG+Q1oOUq6mP+Hoc0TjqE5WEFqaDOQIU0HWI4mJ6FFgH6MSVFH6UoKyfpYkAWn1pfuf1B9L1WFBK4WjLecETWvuUCfnGD1BpNYfX/nlB3ph89HNUZjk+wi1/jkKU4ZUbeZP7HUl/R//rxBEikUnrHAs/iZYoL27Tbyj5dPyXd385PprFkZ+TARMvj4++r+Mk/yXY5kW69pMkLWjTPx0/FcXml5OTnNaYv1tHQZbm6bJ4F6TrEz9MTz68P/3zyenpCQrXJ/3iFawSyvu/1Sh5HsaskDDRaRvDQhrrnYy1KtxPt/f+gThhqIXkBi2PZPL08aRf8KNAJgkdn46jpD6k/RUl5NUNFLp+UaAsIbkQpfj4iIgdMetuRO9kEJ6JQlzWEmLcIiLPI7gZCmjs90/H77Vxu+GI+9D9XvvlMgnR90/H//vov23r7UTQL+uN02RVoO8FC1ZkfCReQRtQbAvCxpT6dJyv/TimHanZLm/7uI7yMpQyKw+63b3KEFrTcVqCLLHKHINhIwcPDhLR5dHbyJh+ZCjJ4QZX4Md0v72JEV6zkFAIxDPHRp66T2CUOI9pGv/447Z9+MIOp3z6wmLEVgf+DIJcRkiRX44u/9dDWepPR9cZnol/OXpPpEeP7vbkWLtmWs6m7k5EN73qmaI2FHTOPfUoYIraUCA4GNOjgwOwoYY5Z9GjoiloU3uzcderuypmVTO3tdMkoVfehpZ636BHQVlKvV7lyZ6Lnf3DzvRlweULq+of4/RRf8oQuLnq9ZYAYoKuk3qy/vBdSLajtt3o+AnphtnM8WRLGh2Y+aULAXMLAnPmzABQnA9uirsRZTkE2OISAiXN8OKYWNNvH4MnPMbaFSAs6n1UPDkfALDnzhkEyhxCSOcgfUAPIpMlfRqYWTlbIF7gQrfXDgDS5zmMnF35LygjGjqgasq+heSQ7Tbzg294c/erv4EgEf+5hOA+AbreFgBIdKq5nEMheSiLfIjx7c4gZMu9gJAsdwGhmt1/gipAFg5M87k3EPy6uQdtKQsH1tIbFKRZSIrByIi38TM0y5APq2YtVWzt1ltBbIsoeekddSjteCGPgKjCyQn/V0n0LxTK2qd2OIXRtmv2JMe4jQ0S+X0QB12Vt2f++Wp+691SqfV/n3+1UtY15pdzhy6j5nMr3VbDuVjcEcomhFx4FyCoMe6IFJbQFhKufwja6XswJCuV2UH6GQoJDKhe88GRBrGK7OBJlZw+0iJfwoFheQWlDBDvCitNuB4laDZYTRDXnyHOMRq00/cQcF4aRyFxo0Gsf7M90+Zr/+rRB0S7QUX2AggJCAVOGu5LYDhIEj2EvsH2LUb76a+AHQsHNl+DyzCo1EGBVRfH4CIHJW8A26EoWV3S001EDS7AzlMEuJbHKzyZEJpeQCQELH2GIfd+a3fr0cpgC0VhPLynY5AMYIjgQUGdzapRYY3z0195JDM2XaWrKPDjWRytEmLwwwCKjJBUIL+k6yjx45vq+uoGLwUAUN2nl5xQCtQZd9XJSIHCM/cWgL4OoAcASLclEAOq3L2BIX0AQwJrHV2eg7WwXOxDoVUDFRiOzoVQmHghAQgFShpee0FB1StWwKbCokETSNetsK2FwyODDBILVurK/RI4fUCYt2kAAUNvTWGgZkW0gcBx4TSRE8IhLfIlHBhhOyhpUID0evnUzdDKB+lMuJ0G4O6itUkBkVfm3hOkT+9h8QSGKdDNLi9BoRsPhyq1zQFhxDKCgJmvQWAcGJj5c3gWgOhhjDTzA5CRhqHmIRSS54Mwys1AYM7Xj2meoxBImGYhzFw8Dx4hYD6HcGJJrapgzpi2QCKOkYDkEiMBySWhCQrI9UEWiOxNdxiCcJ69kp8GEmjZ9wUFoET2b/hBRmnPqgNkOvrsmXjm0FJWbkFbPOMnhWH1bGErx6jCN3GLoqWsHIKql/v06i1LWbnA1I8w6VVcFZvAe8F5yl+J14LzEkeYcZ3TfmMP4c94jIMA8TcQilDKPdiEe3sd3QhpuIh/htugsIXpvu5mZfz4FSVhml3O5dcySjBVwzRxlEUK6zkvfCXy5LSW8sZTtGcNce3cWJsM2UOcfy+w/KFQu0HKkuMG6+DV+ME5l5616KTrTRz5SWvhZWyeDK8XyQ9IskicG4ArXeJhbQSlLKX88x8/rIxeJr9tI5g7ndrwpzWctJrqODi5bbQ+3vZx46+Q1HBKNXbI4RqINnAm2xSmLEzUBOaxFk1SeAgbivbtFC5a3wsetNHc3PEQE2z0iM5z8Zh5JXqPDP+6ApH/kBJIXqqRIRwVGXj24y2y1r47OhkQ10xUhmHtVdGJRHbBvdT7w4osnOPbfRYVCH8r6JWd3ay6QS2CKT1n2+USZSiknWWLFfvJN+cJBd/OE1LKrnlz99pPwos7qdeYzTb5jBhZzlEeZNEGy8orEVMFB1QlnDNAC+UrhHcnT3a2rAer5hbr4JWITrPw/DADMb1CPtlXmqzymKLT9FhdwSvpORKf5yvK2Bh9pgp89uvlPLeeBaKEeHh8SZMAlYoEZo66IzcE2Ta5yBC6TAYcf9VUnADTm12DY95aYjp+MtuGUeoFvtT1RhXo/L9Qe6JuDJKRKMj0asQa6vsGz/Bn85vzJp6DLeQFdVGAQSGEEUuqdFtQ+mBQHZQB0XdxI/XR1wP6JxxNNzcLW6BaNbJ6xBbzKvXtFqMYY7EtsNxjQcC0OaWdnd0hFsa8fkbZ72RHgFUPtU4FA7wFAnRj/8WZUxVkDZWjbZg2FOLhZYtIA8LF8Xzrx6BY9xBgZ3YTVIMC0jKiy06hgKThLTSBrq11BQWKtwPR/HSQHJAec+YLGAFy3JvFw+If0uh4OljzOUzjbJddLYwbb3MgRlVoIAOlxppfQaKBNvMeiLYsekZk80Bm/2gZBXheg8D9PAcSEgoE0qkl0gxE3ZROH878lt642uNdx1A6vkQ6h4OC0c86sdrUccl9IpXg4RiIeoAKQRVVAUloYXrWSzSvdfe2aPZDq8Gy3/B20QC2unebVebTF3fWvwPsuO7LdSYQjHUv1jj2K7EGyXopViJt8/MkyF42xLe/c2RjBQuyEqqQAIGc2VcgLIDxUyEBjJ0SyfMWfuKvEMRKDU5/tUgw3Qi3fmThgJoJtoLswMG2FGANWeOBcQ2QY0DcglmBMlD2S1AKBrNmZKCsF43ltbYffGPdUEGWBBSZ9ZwFWbYIUMFolUdl1MWhJlheGYAKChO0yRhohbLL3ItCVP6g9lmx5cqthPXitBi8O9ICq0wQSWx+N0M58/SbGY3uzQLo1g3P2UBI87OFnQrFOorKHNm3WQGdrx8ReTeu4r4dVpYRb8AgfUbZi8sYfRmh1XuLOXPcMf6inVqkMRraboHI+IpyEHOhq5SoVDtbWZAOxYx5xmPm79v1xrI765E49K6MFlC7e7FVkzWiPOa9HoxreRvWAHkwnJrPpG/n6OFQY1fM95fzZ1tF2oRdf3nMIvp0it3mk7U1J8ri1LF7kLHGu/Y86eMAWkDuPUwnePcuEBB5m40wHgitvCL9Sl56tlPVNeRXx4WR/+qg6il6jIqBZ4f0Md3SoHPgGRU1A5Io8WEcQspTHLd09SfF7pIIIvRlFU3zDCZGZR3ykgZaXfoB8go/Cf0s/LLF64fMDrwUwCs8bcVjPrw2hs75a7EAbPr018xPtrGfgTxl8h3MCHQRJYZY6p1ZjmkU1oa0r6Nn3SxaY73ijJh4q6k9vA4nQxQGjShP6+3ifLuJ7W8v52jp45Vyz4TaCOo6W+ENwL86N12mTprkb1uM2s4dgJyzqCCzymJt6QV/H4WdMWwcpIEaOYGEe6ifIbFsGZ4QTMzUc9vwJOVbpq1DGr3LNKBEhjOFk1AeNBr3NT3CquYt9EdXJWAqgFsQmEd8eRu7qmO3micdQx+/cvWgO27ZNcckI5fTSGbiwGFM9nZ1r69fiQKFfeP07VlGLboO7FnGgw71sJsJQ1kn3OWPr0QDvO5QYq3jcW4rgYKoZMbLH1cQmgw65J2TrvHgeC0RyiC0pJNumSsUztHahtnlPQ15q/CV8Bt0DoaYnW4wh3OIc5Vtbk8KWXMahdWpCk4wI11EMcpf8Ep1/Uok8MBHPOY3buAbr3fBa7oOqByO3xi+K4a/ElazuzVzjW/rpzJdX11vCKeiZOW9af/+ij2DWDFM2Heun+EvhMa3XtsBu+82ceqHKCzXYa+E53Wj7p9QI+rjZpaKWmu9wXuAi9jP7Uy7Xu1ugp1cTA4CZrczk6cdaCmrJyVuZ+6lWc20nE3ddSx+k4hVbVGYmK0kjLJVxNYKwIYa11k4lyZi0BS0CmzpeCaCUBWziwobYH0wxxq+8GOjkLDd8ja03HlnBhSUpaY5Xq7PUl/HJFUfeKqy+L9Na7BV6LNwmqkUz1rRMpJBDzLCqt7q1BqK7zoSXFb9SgRYk4+X+V0S/bbFauIWC52BOFfM+0NLs7Kw1Ru9VyJq/UjZ+91FzfI8DSLakR2DiNLiwvns9dh+noRHNymphDybVVHgoXj5jv6mSydiRoqrwiLw7t0p15QWgampg9T53kX8Nw4OdzbKStMNJ03yIvMxM3jJiJIg2vgxQ3svj6L8EE42aP2UOdqQx2WSQtBAlerql+j4KhvknjCPtf7jCdPBGv3ePG731v077P7ue4R7kQLyrmD/fQipDBj04IhMzIouEv09iQzodo6lLJCGqFQjfN5jj5LA2mrIBUGh2w5WGaj2zI6VQf0s6F76vnqFZXY7m7DLy0o6IPWnH7mjqzYo9XF1PrjnPnYv33p52l6uTmP32c9OeL1c5qh/5MQs6MrrAOLAXOXsLO/41IMWA57ewxKKujv2LheSt3PbnmsysH3XfjxoKRA3bu+d37kj2Wfnd286pCJQPobL9lr15aA7X/CE7957XnA3tc/+L++YpP1ePWXL9lj96aB7XvQE7967nrkI3EuX02fyzr+6c5c+GyrrK/owLNtT5Qet/m4eWuzjlB8n6XP+Qdtpelz8iKSkruZFw731OH2zq/dK23Dnsy/YNR1XftQSgv7TcCwklzaZSPCPJ04jFoMP4Q1IR/Mc234lpI7ytBvR2Jd+2JUwaOuI/UtB+2LyziRgdJb5QXtebSHYedx6L92O18cPkjf8Okv/Jk9vA9B+1+p68tZjD2m6DYC4fdP0PfeIpaSazpuOe+t56Xm0Xlcd7LG+am/s+FifsH7Pir73Hv2Evb9LLb+j/lZX8D0277nX93inu0sp2PGtrrI0HM61biUNave6EIcB+5sCdnUkoCt0ez4VyIOHXoDGIX3g5d1ZgP7WG//9aJAdOC5xGlHohxedRhKGA1/KxCHf55KAi7LERKQalIpeyLmejPRTNc+L26BY3UNj5vtUcjIUSm8aqZHGAJMLjCC61v6VCaWFdNek2sRO8n4wfWIkjntVKOLYeRoTjjggG79y4HL8cJOSQui5icTKZJqSB1c8RDlT0EU7ErSD0Ff7EzUjDXZgskYUqsp5mf3sBiSTP9YsZy6c+106k21cS/XIaRrAymeXdyY7Wt+o7tD7bN675QzxkJ702GTXNjO7OizRsJhpnNf32tGsH/qbhdz0nc7FDdhn7995Z9I+J1Fi2a6ivw+6v7m4tnvv7Toywx77mIT1fBDGDDLoKKUOp4FEeazy8yQdr9EjIH3Ph0qV1MYE29yLCHRjRk3s8NQLUNXRHb2kH9k1ZigOl6TGvTpC8TIwqUPUmxQMSME+HaV6crBTx5h9C8UuHWUMJGP/DjM94dip48y+hWNn2wQDyTgUh5qefOzIsWbfkrE7RxsD0di3w01PJCY/Mdq3MOzqBMlAFPZ7ktQXhB2eKO1bJg556jiQk6aedEx74rRvedjRCZSBNOz1JKqJp/hQBbqU31q3oRd7klB/7fbbab/xH6+TOYpRgY5mQUED9Tl+HviiZwRxpQNU9EJy1mQ0n6eSH1HgyYmkSBKnVVJbG0RyBzJ0TqP54TIFLoGyJi5giPBeKS/Io2yPvsCZi5TyUNHk56J6nDdhAj9JI394wRNa+5+Ow8cUd38Zc5DLlgvUULf2+giVq7JOENVTpo2D04MZDpl+FcHihHHMjskyh91JFdXBZBivi8bT4zuDfBWy/2kcsj2b4HDbJBF4nTpeRbVG4fCr7yJwmjSOXO+POOg6QYRdpo2Dl6ttDrr8LAImKWqwpUurELpMksGX7rgqVZT+l8IqyiRZFQtq4ztWBeeszdXE5RBVyDmhK8iSWJKkcqSE2botirDbVEkdbYaxnslF5NOvwv7IFcjnDRP5Crgswtp4e0yF9vRN1USt6+eRtLWbTWWuYEy/BRMGkyqeNRijdjU1z5lYSRQ+l0+u+ntZxymhC3yuXvpVVAtOUJhYqpcjhTN9mSKZ30mi6qxeXmZKZvYyUT67k3SV6ax5E080obWJ4imtTleqiDwGJ6yEJkgqwGkKGol5/UygkdhUoUZqMyjWJatlAH8UuP9KFV8Fl0NUWS+TwqKgeWFJsC5o04RLgzpZYRT2dsb8gOxlEI7NTh6lod9spUQaoEmUKIJmI6lQUb11FNVTp0mqKZPHa2le6+LqaFJENVSJPD6zLRKuz2no8iMmF79I56Obd7a4zAIc1yBcYXfyCzYHtFzne3+L3W2GbhPbKN1jLZXE8/4BGiwMSC1o7njgalviO+WZ7SUtR38DNbbrmytt64ALry6pe+hXJsSwoIWyAMRWDeueN9Ai9SfA5riXww3qG5ccepOawLHyVoljy3aVi+ykqVQ1fOp+G92eh0gbLTOZEFqIMKS2H/fbxJ4Jg7yhQ7YOoisrhubqy34bWt3FyxsouqzvENk9e6JE1p/21LReMEdB24bCPQqunhkiyw8DDesfazWlyo8gjRPHLZS0UyHIIdcA9tCsaUD5caDpkrMwCsClwTGiDc83xAFJED+gpu+i15kodDKRlsSpA2zk6GAwaFwn1pqgafJYbH0N2z++rPWs7FyyX75fDqhxncWhuH0DYVL0SNzDalUcOUsqo4MhtqyaO5WAioNEyRq4w43WxA0e3WuNx0uynE13JMDiqD+iBivEB+o2Oe+KMP091KOSS4yyMJcI0fShEDdiFigHxemzQnxHUjOmnzq4fORuPKo1JPMdVi6YoAljgiGLr2AnGXbsMz5OU4hWIj1g0410Ihj7kpsmRgtwOQ5oeKkH4tDnoZKUTcLEnUtiP8aEZACqLaJ0Bx4QC02nYS6IgmweHo62YKd7JlpnsPEC5EcQvHG45apiB+cqXTvmgbbJ7Z1/hOMjYpArbxxnrtshj7m/p7TR33ttDuvtLG2V1CXajFhBKdY8gClZfrZuqsCrV9DWMd9fq4N58Z1xKQS9pAmaK76DGHd0/VGbPHRcr+TWCXRsv0cWjB/na7gwWuvlPTJCftyv4KMHcOy/x6bLFhmjnmiWi419NnlsEaLufPUjC71kkTLmW2S1WNlpc3kHGVFzR9xo+s3t2j3Vja6/DjWdM86qCzeflZtM/GyKiPHlaNI+npQmUdUH/LNIM3+FyC1GnNOvH09utrj0GpW/5iiPVi3ER4yZoKDjO9LkuUyWae3E0qOozlInN+aDhR/6hT/LimjpBwVODlCeR8nq+OirH29xlvP1Iwovk+ttsdkWuMlo/Rh3DhmIK8xQ/R9POJo/Xm+onR5EEzCZEW4Cuk7OtlEcNnRf+HHem9plEOTg7VeUUEtF3JcF/hetXhqkL2miCFSxr3ENukXrTYzB8uvE85+RCW13ObpCKz94wd+fo5DYpspAxjuiy/aP88hfZf46rzDa8vgnluFw/f0//j+EnG02wF8DAA== - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs b/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs deleted file mode 100644 index 6a8bc447a..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddChangeableScsiModes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddChangeableScsiModes)); - - string IMigrationMetadata.Id - { - get { return "201901081359499_AddChangeableScsiModes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs b/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs deleted file mode 100644 index b1900d284..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddChangeableScsiModes : DbMigration - { - public override void Up() - { - AddColumn("dbo.Scsis", "ModeSense6CurrentData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense10CurrentData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense6ChangeableData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense10ChangeableData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.Scsis", "ModeSense10ChangeableData"); - DropColumn("dbo.Scsis", "ModeSense6ChangeableData"); - DropColumn("dbo.Scsis", "ModeSense10CurrentData"); - DropColumn("dbo.Scsis", "ModeSense6CurrentData"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx b/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx deleted file mode 100644 index 992a39a7b..000000000 --- a/Server/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs b/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs deleted file mode 100644 index 34fb94d11..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class IdForDensityCode : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(IdForDensityCode)); - - string IMigrationMetadata.Id - { - get { return "201905252122267_IdForDensityCode"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs b/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs deleted file mode 100644 index 91b8896f7..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class IdForDensityCode : DbMigration - { - public override void Up() - { - RenameTable("DensityCodes", "DensityCodes_old"); - - CreateTable("dbo.DensityCodes", - c => new {Code = c.Int(false), SscSupportedMedia_Id = c.Int(), Id = c.Int(false, true)}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - Sql("INSERT INTO DensityCodes (Code, SscSupportedMedia_Id) SELECT Code, SscSupportedMedia_Id FROM DensityCodes_old"); - - DropTable("DensityCodes_old"); - } - - public override void Down() - { - RenameTable("DensityCodes", "DensityCodes_old"); - - CreateTable("dbo.DensityCodes", c => new {Code = c.Int(false, true), SscSupportedMedia_Id = c.Int()}) - .PrimaryKey(t => t.Code).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - Sql("INSERT INTO DensityCodes (Code, SscSupportedMedia_Id) SELECT Code, SscSupportedMedia_Id FROM DensityCodes_old"); - - DropTable("DensityCodes_old"); - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx b/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx deleted file mode 100644 index 42e2995b7..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs b/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs deleted file mode 100644 index af2763284..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MakeEntityFrameworkHappy : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MakeEntityFrameworkHappy)); - - string IMigrationMetadata.Id - { - get { return "201905252245072_MakeEntityFrameworkHappy"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs b/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs deleted file mode 100644 index 597b4f775..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class MakeEntityFrameworkHappy : DbMigration - { - public override void Up() { } - - public override void Down() { } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx b/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx deleted file mode 100644 index 3974ce03f..000000000 --- a/Server/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -text/microsoft-resx1.3System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=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 - dbo - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Migrations/Configuration.cs b/Server/DiscImageChef.Server/Migrations/Configuration.cs deleted file mode 100644 index db98de2a7..000000000 --- a/Server/DiscImageChef.Server/Migrations/Configuration.cs +++ /dev/null @@ -1,53 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Configuration.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Provides database context configuration. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Data.Entity.Migrations; -using DiscImageChef.Server.Models; - -namespace DiscImageChef.Server.Migrations -{ - public sealed class Configuration : DbMigrationsConfiguration - { - public Configuration() - { - AutomaticMigrationsEnabled = false; - } - - protected override void Seed(DicServerContext context) - { - // This method will be called after migrating to the latest version. - - // You can use the DbSet.AddOrUpdate() helper extension method - // to avoid creating duplicate seed data. - } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/CdOffset.cs b/Server/DiscImageChef.Server/Models/CdOffset.cs deleted file mode 100644 index b17c858a1..000000000 --- a/Server/DiscImageChef.Server/Models/CdOffset.cs +++ /dev/null @@ -1,70 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : CdOffset.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing Compact Disc read offsets in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using DiscImageChef.CommonTypes.Metadata; - -namespace DiscImageChef.Server.Models -{ - public class CompactDiscOffset : CdOffset - { - public CompactDiscOffset() { } - - public CompactDiscOffset(string manufacturer, string model, short offset, int submissions, float agreement) - { - Manufacturer = manufacturer; - Model = model; - Offset = offset; - Submissions = submissions; - Agreement = agreement; - AddedWhen = ModifiedWhen = DateTime.UtcNow; - } - - public CompactDiscOffset(CdOffset offset) - { - Manufacturer = offset.Manufacturer; - Model = offset.Model; - Offset = offset.Offset; - Submissions = offset.Submissions; - Agreement = offset.Agreement; - AddedWhen = ModifiedWhen = DateTime.UtcNow; - } - - public int Id { get; set; } - public DateTime AddedWhen { get; set; } - [Index] - public DateTime ModifiedWhen { get; set; } - public virtual ICollection Devices { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Command.cs b/Server/DiscImageChef.Server/Models/Command.cs deleted file mode 100644 index fc756d9cc..000000000 --- a/Server/DiscImageChef.Server/Models/Command.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Command.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing command statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Command - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Context.cs b/Server/DiscImageChef.Server/Models/Context.cs deleted file mode 100644 index d174b09bb..000000000 --- a/Server/DiscImageChef.Server/Models/Context.cs +++ /dev/null @@ -1,56 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Context.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Entity framework database context. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Data.Entity; -using MySql.Data.EntityFramework; - -namespace DiscImageChef.Server.Models -{ - [DbConfigurationType(typeof(MySqlEFConfiguration))] - public sealed class DicServerContext : DbContext - { - public DbSet Devices { get; set; } - public DbSet Reports { get; set; } - public DbSet Commands { get; set; } - public DbSet DeviceStats { get; set; } - public DbSet Filesystems { get; set; } - public DbSet Filters { get; set; } - public DbSet Medias { get; set; } - public DbSet MediaFormats { get; set; } - public DbSet OperatingSystems { get; set; } - public DbSet Partitions { get; set; } - public DbSet Versions { get; set; } - public DbSet UsbVendors { get; set; } - public DbSet UsbProducts { get; set; } - public DbSet CdOffsets { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Device.cs b/Server/DiscImageChef.Server/Models/Device.cs deleted file mode 100644 index 68fcf333b..000000000 --- a/Server/DiscImageChef.Server/Models/Device.cs +++ /dev/null @@ -1,73 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Device.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing processed device reports in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations.Schema; -using DiscImageChef.CommonTypes.Metadata; - -namespace DiscImageChef.Server.Models -{ - public class Device : DeviceReportV2 - { - public Device() - { - AddedWhen = DateTime.UtcNow; - } - - public Device(DeviceReportV2 report) - { - ATA = report.ATA; - ATAPI = report.ATAPI; - CompactFlash = report.CompactFlash; - FireWire = report.FireWire; - AddedWhen = DateTime.UtcNow; - ModifiedWhen = DateTime.UtcNow; - MultiMediaCard = report.MultiMediaCard; - PCMCIA = report.PCMCIA; - SCSI = report.SCSI; - SecureDigital = report.SecureDigital; - USB = report.USB; - Manufacturer = report.Manufacturer; - Model = report.Model; - Revision = report.Revision; - Type = report.Type; - } - - public DateTime AddedWhen { get; set; } - [Index] - public DateTime? ModifiedWhen { get; set; } - public virtual CompactDiscOffset CdOffset { get; set; } - [DefaultValue(0)] - public int OptimalMultipleSectorsRead { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/DeviceItem.cs b/Server/DiscImageChef.Server/Models/DeviceItem.cs deleted file mode 100644 index 2be4ec8bf..000000000 --- a/Server/DiscImageChef.Server/Models/DeviceItem.cs +++ /dev/null @@ -1,43 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : DeviceItem.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for showing device statistics. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -namespace DiscImageChef.Server.Models -{ - public class DeviceItem - { - public string Manufacturer { get; set; } - public string Model { get; set; } - public string Revision { get; set; } - public string Bus { get; set; } - public int ReportId { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/DeviceStat.cs b/Server/DiscImageChef.Server/Models/DeviceStat.cs deleted file mode 100644 index 215006178..000000000 --- a/Server/DiscImageChef.Server/Models/DeviceStat.cs +++ /dev/null @@ -1,47 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : DeviceStat.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing device statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class DeviceStat - { - [Key] - public int Id { get; set; } - public string Manufacturer { get; set; } - public string Model { get; set; } - public string Revision { get; set; } - public string Bus { get; set; } - public virtual Device Report { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Filesystem.cs b/Server/DiscImageChef.Server/Models/Filesystem.cs deleted file mode 100644 index 9bcfb7443..000000000 --- a/Server/DiscImageChef.Server/Models/Filesystem.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Filesystem.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing filesystem statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Filesystem - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Filter.cs b/Server/DiscImageChef.Server/Models/Filter.cs deleted file mode 100644 index 1d150e663..000000000 --- a/Server/DiscImageChef.Server/Models/Filter.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Filter.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing filter statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Filter - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Media.cs b/Server/DiscImageChef.Server/Models/Media.cs deleted file mode 100644 index 3fc7d3934..000000000 --- a/Server/DiscImageChef.Server/Models/Media.cs +++ /dev/null @@ -1,45 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Media.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing media type statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Media - { - [Key] - public int Id { get; set; } - public string Type { get; set; } - public bool Real { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/MediaFormat.cs b/Server/DiscImageChef.Server/Models/MediaFormat.cs deleted file mode 100644 index 83342b81a..000000000 --- a/Server/DiscImageChef.Server/Models/MediaFormat.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : MediaFormat.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing media image format statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class MediaFormat - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/MediaItem.cs b/Server/DiscImageChef.Server/Models/MediaItem.cs deleted file mode 100644 index 3063e3a67..000000000 --- a/Server/DiscImageChef.Server/Models/MediaItem.cs +++ /dev/null @@ -1,41 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : MediaItem.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for showing media type statistics. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -namespace DiscImageChef.Server.Models -{ - public class MediaItem - { - public string Type { get; set; } - public string SubType { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/OperatingSystem.cs b/Server/DiscImageChef.Server/Models/OperatingSystem.cs deleted file mode 100644 index 3c2b8be88..000000000 --- a/Server/DiscImageChef.Server/Models/OperatingSystem.cs +++ /dev/null @@ -1,45 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : OperatingSystem.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing operating system statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class OperatingSystem - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public string Version { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Partition.cs b/Server/DiscImageChef.Server/Models/Partition.cs deleted file mode 100644 index 83e64ef3b..000000000 --- a/Server/DiscImageChef.Server/Models/Partition.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Partition.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing partition statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Partition - { - [Key] - public int Id { get; set; } - public string Name { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/UploadedReport.cs b/Server/DiscImageChef.Server/Models/UploadedReport.cs deleted file mode 100644 index 3e818be64..000000000 --- a/Server/DiscImageChef.Server/Models/UploadedReport.cs +++ /dev/null @@ -1,65 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UploadedReport.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing uploaded device reports in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using DiscImageChef.CommonTypes.Metadata; - -namespace DiscImageChef.Server.Models -{ - public class UploadedReport : DeviceReportV2 - { - public UploadedReport() - { - UploadedWhen = DateTime.UtcNow; - } - - public UploadedReport(DeviceReportV2 report) - { - ATA = report.ATA; - ATAPI = report.ATAPI; - CompactFlash = report.CompactFlash; - FireWire = report.FireWire; - UploadedWhen = DateTime.UtcNow; - MultiMediaCard = report.MultiMediaCard; - PCMCIA = report.PCMCIA; - SCSI = report.SCSI; - SecureDigital = report.SecureDigital; - USB = report.USB; - Manufacturer = report.Manufacturer; - Model = report.Model; - Revision = report.Revision; - Type = report.Type; - } - - public DateTime UploadedWhen { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/UsbProduct.cs b/Server/DiscImageChef.Server/Models/UsbProduct.cs deleted file mode 100644 index 5ac8948d9..000000000 --- a/Server/DiscImageChef.Server/Models/UsbProduct.cs +++ /dev/null @@ -1,65 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UsbProduct.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing USB product identifiers in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Newtonsoft.Json; - -namespace DiscImageChef.Server.Models -{ - public class UsbProduct - { - public UsbProduct() { } - - public UsbProduct(UsbVendor vendor, ushort id, string product) - { - ProductId = id; - Product = product; - AddedWhen = ModifiedWhen = DateTime.UtcNow; - Vendor = vendor; - } - - [Key] - public int Id { get; set; } - [Index] - public int ProductId { get; set; } - public string Product { get; set; } - public DateTime AddedWhen { get; set; } - [Index] - public DateTime ModifiedWhen { get; set; } - [Index] - public int VendorId { get; set; } - [JsonIgnore] - public virtual UsbVendor Vendor { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/UsbVendor.cs b/Server/DiscImageChef.Server/Models/UsbVendor.cs deleted file mode 100644 index 3ad9766c1..000000000 --- a/Server/DiscImageChef.Server/Models/UsbVendor.cs +++ /dev/null @@ -1,64 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : UsbVendor.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing USB vendor identifiers in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Newtonsoft.Json; - -namespace DiscImageChef.Server.Models -{ - public class UsbVendor - { - public UsbVendor() { } - - public UsbVendor(ushort id, string vendor) - { - VendorId = id; - Vendor = vendor; - AddedWhen = ModifiedWhen = DateTime.UtcNow; - } - - [Key] - public int Id { get; set; } - [Index(IsUnique = true)] - public int VendorId { get; set; } - public string Vendor { get; set; } - public DateTime AddedWhen { get; set; } - [Index] - public DateTime ModifiedWhen { get; set; } - - [JsonIgnore] - public virtual ICollection Products { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Models/Version.cs b/Server/DiscImageChef.Server/Models/Version.cs deleted file mode 100644 index c94b67efe..000000000 --- a/Server/DiscImageChef.Server/Models/Version.cs +++ /dev/null @@ -1,44 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Version.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Model for storing version statistics in database. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.ComponentModel.DataAnnotations; - -namespace DiscImageChef.Server.Models -{ - public class Version - { - [Key] - public int Id { get; set; } - public string Value { get; set; } - public long Count { get; set; } - } -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Properties/AssemblyInfo.cs b/Server/DiscImageChef.Server/Properties/AssemblyInfo.cs deleted file mode 100644 index 2eaab14ac..000000000 --- a/Server/DiscImageChef.Server/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DiscImageChef.Server")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DiscImageChef.Server")] -[assembly: AssemblyCopyright("Copyright © 2011-2019 Natalia Portillo")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("A893FA0E-6952-4517-B4AA-658E421737C1")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.5.99.1693")] -[assembly: AssemblyFileVersion("4.5.99.1693")] \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Reports/.htaccess b/Server/DiscImageChef.Server/Reports/.htaccess deleted file mode 100644 index 4114709ce..000000000 --- a/Server/DiscImageChef.Server/Reports/.htaccess +++ /dev/null @@ -1 +0,0 @@ -IndexIgnore * \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml b/Server/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml deleted file mode 100644 index 6b6bda170..000000000 --- a/Server/DiscImageChef.Server/Views/Home/CODE_OF_CONDUCT.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : CODE_OF_CONDUCT.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders code of conduct. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef's code of conduct: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml b/Server/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml deleted file mode 100644 index 65d756876..000000000 --- a/Server/DiscImageChef.Server/Views/Home/CONTRIBUTING.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : CONTRIBUTING.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders contributing guidelines. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- How to contribute to DiscImageChef: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/Changelog.cshtml b/Server/DiscImageChef.Server/Views/Home/Changelog.cshtml deleted file mode 100644 index 82cd302b1..000000000 --- a/Server/DiscImageChef.Server/Views/Home/Changelog.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : Changelog.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders changelog. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef list of changes: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/DONATING.cshtml b/Server/DiscImageChef.Server/Views/Home/DONATING.cshtml deleted file mode 100644 index 185383404..000000000 --- a/Server/DiscImageChef.Server/Views/Home/DONATING.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : DONATING.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders list of needed donations. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef list of things to be donated: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml b/Server/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml deleted file mode 100644 index c29d744d6..000000000 --- a/Server/DiscImageChef.Server/Views/Home/ISSUE_TEMPLATE.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : ISSUE_TEMPLATE.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders issue's template. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef's template for issue reports: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/Index.cshtml b/Server/DiscImageChef.Server/Views/Home/Index.cshtml deleted file mode 100644 index 9b98e8abd..000000000 --- a/Server/DiscImageChef.Server/Views/Home/Index.cshtml +++ /dev/null @@ -1,47 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : Index.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders readme. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -
- Welcome to - - - DiscImageChef - - Server version @ViewBag.lblVersion -
-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml b/Server/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml deleted file mode 100644 index b613a6295..000000000 --- a/Server/DiscImageChef.Server/Views/Home/PULL_REQUEST_TEMPLATE.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : PULL_REQUEST_TEMPLATE.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders pull request's template. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef's template for pull requests: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Home/TODO.cshtml b/Server/DiscImageChef.Server/Views/Home/TODO.cshtml deleted file mode 100644 index db382d341..000000000 --- a/Server/DiscImageChef.Server/Views/Home/TODO.cshtml +++ /dev/null @@ -1,42 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : TODO.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders todo list. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -

- @Html.ActionLink("Return to main page.", "Index")
- DiscImageChef list of things to do: -

-
@Html.Raw(ViewBag.Markdown)
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Report/View.cshtml b/Server/DiscImageChef.Server/Views/Report/View.cshtml deleted file mode 100644 index 03c594b54..000000000 --- a/Server/DiscImageChef.Server/Views/Report/View.cshtml +++ /dev/null @@ -1,265 +0,0 @@ -@using DiscImageChef.CommonTypes.Metadata -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; - ViewBag.Title = "DiscImageChef Device Report"; -} -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : View.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders device report. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -
-DiscImageChef Report for -@ViewBag.lblManufacturer -@ViewBag.lblModel -@ViewBag.lblRevision - -@if(ViewBag.UsbItem != null) -{ -
-
- USB characteristics:
- Manufacturer: @ViewBag.UsbItem.Manufacturer
- Product: @ViewBag.UsbItem.Product
- Vendor ID: @ViewBag.UsbItem.VendorDescription
- Product ID: @ViewBag.UsbItem.ProductDescription -
-} - -@if(ViewBag.FireWireItem != null) -{ -
-
- FireWire characteristics:
- Manufacturer: @ViewBag.FireWire.Manufacturer
- Product: @ViewBag.FireWire.Product
- Vendor ID: @ViewBag.FireWire.VendorDescription
- Product ID: @ViewBag.FireWire.ProductDescription -
-} - -@if(ViewBag.PcmciaItem != null) -{ -
-
- PCMCIA characteristics:
- Manufacturer: @ViewBag.PcmciaItem.Manufacturer
- Product: @ViewBag.PcmciaItem.ProductName
- Manufacturer code: @ViewBag.PcmciaItem.VendorDescription
- Card code: @ViewBag.PcmciaItem.CardCode
- Compliance: @ViewBag.PcmciaItem.Compliance
- @if(ViewBag.repPcmciaTuples != null) - { - foreach(KeyValuePair kvp in ViewBag.repPcmciaTuples) - { - @kvp.Key: @kvp.Value
- } - } -
-} - -@if(ViewBag.AtaItem != null) -{ -
-
- - @ViewBag.AtaItem characteristics: -
- @ViewBag.lblAtaDeviceType
- @foreach(KeyValuePair kvp in ViewBag.repAtaTwo) - { - @kvp.Key: @kvp.Value
- } -
- @foreach(string item in ViewBag.repAtaOne) - { - @Html.Raw(item)
- } -
-} -@if(ViewBag.repScsi != null) -{ -
-
- SCSI characteristics:
- Vendor: @ViewBag.lblScsiVendor
- Product: @ViewBag.lblScsiProduct
- Revision: @ViewBag.lblScsiRevision
- @foreach(string item in ViewBag.repScsi) - { - @Html.Raw(item)
- } - @if(ViewBag.repModeSense != null) - { -
-
SCSI mode sense pages: - - - - - - @foreach(KeyValuePair kvp in ViewBag.repModeSense) - { - - - - - } -
ModeContents
- @kvp.Key - - @Html.Raw(kvp.Value) -
-
- } - @if(ViewBag.repEvpd != null) - { -
-
SCSI extended vital product data pages: - - - - - - @foreach(KeyValuePair kvp in ViewBag.repEvpd) - { - - - - - } -
EVPDContents
- @kvp.Key - - @Html.Raw(kvp.Value) -
-
- } - @if(ViewBag.repScsiMmcMode != null) - { -
-
SCSI CD-ROM capabilities:
- @foreach(string item in ViewBag.repScsiMmcMode) - { - @Html.Raw(item)
- } -
- } - @if(ViewBag.repScsiMmcFeatures != null) - { -
-
SCSI MMC features:
- @foreach(string item in ViewBag.repScsiMmcFeatures) - { - @Html.Raw(item)
- } -
- } - @if(ViewBag.divScsiSscVisible == true) - { -
-
SCSI Streaming device capabilities:
- Block size granularity: @ViewBag.lblScsiSscGranularity
- Maximum block length: @ViewBag.lblScsiSscMaxBlock bytes
- Minimum block length: @ViewBag.lblScsiSscMinBlock bytes
- @if(ViewBag.repScsiSscDensities != null) - { - foreach(SupportedDensity density in ViewBag.repScsiSscDensities) - { - -
- - Information for supported density with primary code @($"{density.PrimaryCode:X2h}") and secondary code @($"{density.SecondaryCode:X2h}") -
- Drive can write this density: @density.Writable
- Duplicate density: @density.Duplicate
- Default density: @density.DefaultDensity
- Density has @density.BitsPerMm bits per mm, with @density.Tracks tracks in a @density.Width mm width tape - Name: @density.Name
- Organization: @density.Organization
- Description: @density.Description
- Maximum capacity: @density.Capacity megabytes
-
- } - } - @if(ViewBag.repScsiSscMedias != null) - { - foreach(SscSupportedMedia media in ViewBag.repScsiSscMedias) - { - -
- - Information for supported media with type code @($"{media.MediumType:X2h}") -
- Media is @media.Length m long in a @media.Width mm width tape - Name: @media.Name
- Organization: @media.Organization
- Description: @media.Description
-
- } - } -
- } -
-} -@if(ViewBag.repTestedMedia != null) -{ -
-
Tested media:
- @foreach(string item in ViewBag.repTestedMedia) - { - @Html.Raw(item)
- } -
-} -@if(ViewBag.repMMC != null) -{ -
-
- MultiMediaCard device:
- @foreach(string item in ViewBag.repMMC) - { - @Html.Raw(item)
- } -
-} -@if(ViewBag.repSD != null) -{ -
-
- SecureDigital device:
- @foreach(string item in ViewBag.repSD) - { - @Html.Raw(item)
- } -
-} -
\ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Shared/_Layout.cshtml b/Server/DiscImageChef.Server/Views/Shared/_Layout.cshtml deleted file mode 100644 index 37f16ec9c..000000000 --- a/Server/DiscImageChef.Server/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,110 +0,0 @@ -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : _Layout.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Contains layout. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} - - - - - @switch(DateTime.UtcNow.DayOfYear) - { - // 24th January, Macintosh launch - case 24: - - - break; - default: - - - break; - } - - @ViewBag.Title - - - - - -@RenderBody() - - - - - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Stats/Index.cshtml b/Server/DiscImageChef.Server/Views/Stats/Index.cshtml deleted file mode 100644 index 201becc78..000000000 --- a/Server/DiscImageChef.Server/Views/Stats/Index.cshtml +++ /dev/null @@ -1,706 +0,0 @@ -@using System.Collections -@using DiscImageChef.CommonTypes.Metadata -@using DiscImageChef.Server.Models -@using Highsoft.Web.Mvc.Charts -@using Chart = Highsoft.Web.Mvc.Charts.Chart -@using Filter = DiscImageChef.Server.Models.Filter -@{ - // /*************************************************************************** - // The Disc Image Chef - // ---------------------------------------------------------------------------- - // - // Filename : Index.cshtml - // Author(s) : Natalia Portillo - // - // Component : DiscImageChef Server. - // - // --[ Description ] ---------------------------------------------------------- - // - // Renders statistics. - // - // --[ License ] -------------------------------------------------------------- - // - // This library is free software; you can redistribute it and/or modify - // it under the terms of the GNU Lesser General Public License as - // published by the Free Software Foundation; either version 2.1 of the - // License, or (at your option) any later version. - // - // This library is distributed in the hope that it will be useful, but - // WITHOUT ANY WARRANTY; without even the implied warranty of - // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - // Lesser General Public License for more details. - // - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, see . - // - // ---------------------------------------------------------------------------- - // Copyright © 2011-2019 Natalia Portillo - // ****************************************************************************/ -} -@{ - ViewBag.Title = "DiscImageChef Statistics"; - Layout = "~/Views/Shared/_Layout.cshtml"; -} -
- Welcome to - - - DiscImageChef - - Server version @ViewBag.Version -
-
-@if(ViewBag.repOperatingSystems != null) -{ -
- -
-
-
-

- -

-
- -
-
- - @foreach(NameValueStats os in ViewBag.repOperatingSystems) - { - - - - } -
- DiscImageChef has run on @os.name @os.Value times. -
-
-
-
-
-
-
-} -@if(ViewBag.repVersions != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - @foreach(NameValueStats version in ViewBag.repVersions) - { - - - - } -
- DiscImageChef version @version.name has been used @version.Value times. -
-
-
-
-
-
-
-} -@if(ViewBag.repCommands != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - @foreach(Command command in ViewBag.repCommands) - { - - - - } -
- @command.Name has been run @command.Count times. -
-
-
-
-
-
-
-} -@if(ViewBag.repFilters != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - @foreach(Filter filter in ViewBag.repFilters) - { - - - - - } -
FilterTimes
- @filter.Name - - @($"{filter.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repMediaImages != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - @foreach(MediaFormat format in ViewBag.repMediaImages) - { - - - - - } -
Media image formatTimes
- @format.Name - - @($"{format.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repPartitions != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - @foreach(Partition partition in ViewBag.repPartitions) - { - - - - - } -
Partitioning schemeTimes
- @partition.Name - - @($"{partition.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repFilesystems != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - @foreach(Filesystem filesystem in ViewBag.repFilesystems) - { - - - - - } -
Filesystem nameTimes
- @filesystem.Name - - @($"{filesystem.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repVirtualMedia != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - - @foreach(MediaItem media in ViewBag.repVirtualMedia) - { - - - - - - } -
Physical typeLogical typeTimes
- @media.Type - - @media.SubType - - @($"{media.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repRealMedia != null) -{ -
-
-
-
-
-
-

- -

-
- -
-
- - - - - - - @foreach(MediaItem media in ViewBag.repRealMedia) - { - - - - - - } -
Physical typeLogical typeTimes
- @media.Type - - @media.SubType - - @($"{media.Count}") -
-
-
-
-
-
-} -@if(ViewBag.repDevices != null) -{ -
- -
-
-

-

- All devices found... -

- -
-
- - - - - - - - - @foreach(DeviceItem device in ViewBag.repDevices) - { - - - - - - - - } -
ManufacturerModelRevisionBusReport
- @device.Manufacturer - - @device.Model - - @device.Revision - - @device.Bus - - @if(device.ReportId != 0) - { - @Html.ActionLink("Yes", "View", "Report", new {id = device.ReportId}, new {target = "_blank"}) - } - else - { No } -
-
-
-
-} -
- - -@{ - string highChartsTitleColor; - string highChartsDataLabelColor; - - switch(DateTime.UtcNow.DayOfYear) - { - // 24th January, Macintosh launch - case 24: - highChartsTitleColor = "#000000"; - highChartsDataLabelColor = "#000000"; - break; - default: - highChartsTitleColor = "#AAAAAA"; - highChartsDataLabelColor = "#FFFFFF"; - break; - } - - Hashtable highChartsTitleStyle = new Hashtable {{"color", highChartsTitleColor}}; - PlotOptionsPieDataLabelsStyle highChartsDataLabelStyle = new PlotOptionsPieDataLabelsStyle {Color = highChartsDataLabelColor, TextOutline = "0px"}; - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Operating system usage", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["osPieData"] as List}}}, "osChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Linux versions", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["linuxPieData"] as List}}}, "linuxChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "macOS versions", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["macosPieData"] as List}}}, "macosChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Windows versions", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["windowsPieData"] as List}}}, "windowsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "DiscImageChef versions", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["versionsPieData"] as List}}}, "versionsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Commands run", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["commandsPieData"] as List}}}, "commandsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Filters found", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["filtersPieData"] as List}}}, "filtersChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Top 10 media image formats found", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["formatsPieData"] as List}}}, "formatsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Top 10 partitioning schemes found", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["partitionsPieData"] as List}}}, "partitionsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Top 10 filesystems found", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["filesystemsPieData"] as List}}}, "filesystemsChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Top 10 media types found in images", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["virtualMediaPieData"] as List}}}, "virtualMediaChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Top 10 media types found in real devices", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["realMediaPieData"] as List}}}, "realMediaChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Devices found by bus", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["devicesBusPieData"] as List}}}, "devicesBusChart", false)) - - @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Devices found by manufacturer", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["devicesManufacturerPieData"] as List}}}, "devicesManufacturerChart", false)) -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/Views/Web.config b/Server/DiscImageChef.Server/Views/Web.config deleted file mode 100644 index 15e5a56ef..000000000 --- a/Server/DiscImageChef.Server/Views/Web.config +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Server/DiscImageChef.Server/Web.Debug.config b/Server/DiscImageChef.Server/Web.Debug.config deleted file mode 100644 index d7712aaf1..000000000 --- a/Server/DiscImageChef.Server/Web.Debug.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - diff --git a/Server/DiscImageChef.Server/Web.Release.config b/Server/DiscImageChef.Server/Web.Release.config deleted file mode 100644 index 28a4d5fcc..000000000 --- a/Server/DiscImageChef.Server/Web.Release.config +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - diff --git a/Server/DiscImageChef.Server/Web.config b/Server/DiscImageChef.Server/Web.config deleted file mode 100644 index 7af7836a1..000000000 --- a/Server/DiscImageChef.Server/Web.config +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/CODE_OF_CONDUCT.md b/Server/DiscImageChef.Server/docs/CODE_OF_CONDUCT.md deleted file mode 120000 index 7d5eea0c6..000000000 --- a/Server/DiscImageChef.Server/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1 +0,0 @@ -../../.github/CODE_OF_CONDUCT.md \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/CONTRIBUTING.md b/Server/DiscImageChef.Server/docs/CONTRIBUTING.md deleted file mode 120000 index f939e75f2..000000000 --- a/Server/DiscImageChef.Server/docs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -../../CONTRIBUTING.md \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/Changelog.md b/Server/DiscImageChef.Server/docs/Changelog.md deleted file mode 100644 index 235150633..000000000 --- a/Server/DiscImageChef.Server/docs/Changelog.md +++ /dev/null @@ -1,857 +0,0 @@ -# [4.5.1.1692] - 2018-07-19 -## Fixed -### - Alcohol 120% disc image -- Correct writing images of Compact Disc >= 60 min -- Correct writing MODE2 tracks to image -- Correct writing TOC to image -- Generation of multisession images -- Generation of pregaps changing tracks - -# [4.5.0.1663] - 2018-06-24 -## Added -### - Alcohol 120% disc image -- 010editor template. -- Support for creating images. - -### - Apple New Disk Image Format -- Support RLE compressed images. - -### - Blindwrite 4 disc image -- 010editor template. -- Information about why this format cannot support writing. - -### - Blindwrite 5 disc image -- 010editor template. -- Information about why this format cannot support writing. - -### - DART disk image -- Support RLE compressed images. - -### - Decoders -- Added Blu-ray DI decoders. -- Support decoding 2048 bytes PFI. - -### - Devices -- On Linux try to open in read/write and exclusive mode, if not retry in readonly. -- On Linux use direct SG_IO. -- Workaround some Blu-ray drives not reporting correct size on READ DISC STRUCTURE. - -### - DiscJuggler disc image -- Information about why this format cannot support writing. - -### - Dumping -- Added support for CD drives that don't return a TOC. -- Added support for CD drives that don't support READ CD command. -- Added support for Compact Disc that don't report tracks. -- Add support for dumping media in any of the now supported writable formats. -- Dump ISRC. -- Dump MCN. -- Fix reading PW subchannels. -- Separate trimming from error retry. -- When dumping CDs in persistent mode, try disabling L-EC check if drive doesn't support TB bit, or doesn't return data with TB bit enabled. -- When dumping, print bad sectors to dump log. - -### - FAT filesystem -- Add list of known boot sector hashes. -- Support Human68k FAT16 BPB. - -### - Filesystems -- Detecting High Performance Optical File System (HPOFS). -- Detecting Microsoft Resilient filesystem (ReFS). -- Detecting PC-FX executable tracks. -- Detecting Xia filesystem. - -### - Apple 2IMG disk image -- Support for creating images. - -### - Anex86 disk image -- Support for creating images. - -### - Apple II interleaved disk image -- Support for creating images. - -### - Apple Universal Disk Image Format -- Support for creating images. -- Support RLE compressed images. - -### - Apridisk disk image -- Support for creating images. - -### - Basic Lisa Utility disk image -- Support for creating images. - -### - cdrdao disc image -- Support for creating images. - -### - CDRWin cuesheet disc image -- Support for creating images. - -### - CisCopy disk image -- Support for creating images. - -### - CloneCD disc image -- Support for creating images. - -### - Digital Research DISKCOPY disk image -- Support for creating images. - -### - DiskCopy 4.2 disk image -- Support for creating images. - -### - IBM SaveDskF disk image -- Support for creating images. - -### - MaxiDisk disk image -- Support for creating images. - -### - NHDr0 disk image -- Support for creating images. - -### - Parallels disk image -- Support for creating images. - -### - QEMU Copy-On-Write disk image -- Support for creating images. - -### - QEMU Copy-On-Write v2 disk image -- Support for creating images. - -### - QEMU Enhanced Disk image -- Support for creating images. - -### - RAW (sector by sector) disk image -- Added geometry and size for ZIP100 and ZIP250. -- Support 2448 bytes/sector and 2352 bytes/sector CD images. -- Support media tags. - -### - Ray Arachelian's disk image -- Support for creating images. - -### - RS-IDE disk image -- Support for creating images. - -### - T98 Hard Disk Image -- Support for creating images. - -### - Virtual98 disk image -- Support for creating images. - -### - VirtualBox disk image -- Added image type and flags. -- Support for creating images. - -### - VirtualPC disk image -- Support for creating images. - -### - VMware disk image -- Support for creating images. - -## Fixes -### - Apple DOS filesystem -- Use Apple II character set encoding. - -### - Apple ProDOS filesystem -- Use Apple IIc character set encoding. - -### - BlindWrite 4 disc image -- Fix incorrect pregap calculation preventing images from showing correct data. - -### - CICM metadata -- Can now get dump hardware information from images. - -### - cdrdao disc image -- Fix audio track endian. -- Fix when disc catalog number uses whole ASCII and not only numeric digits. - -### - CDRWin disc image -- Fix when disc catalog number uses whole ASCII and not only numeric digits. - -### - CloneCD disc image -- Fix when disc catalog number uses whole ASCII and not only numeric digits. - -### - Checksums -- Correct CD ECC. -- Correct CD EDC. -- Fix CRC16 returning a 32-bit value. -- Fix CRC64 endian. -- Fix Fletcher-16. -- Fix Fletcher-32. - -### - Create sidecar -- Add filesystems only to the appropriate partition and track. -- Fix CD Lead-in, TOC and XGD tags. -- Fix diameter setting. -- Fix SCSI MODE SENSE. -- Fix USB descriptors. - -### - DART disk image -- Fixed endian. - -### - Devices -- Fix sending READ LONG commands to ATA devices. -- Fixed crashing with some rogue SCSI MMC firmwares. - -### - Dumping -- Correctly detect CD-i, CD+ and CD-ROM XA. -- Correctly detect Mode 2 Form 1 and Form 2. -- Do not retry when retry passes are zero. -- Do not try to read multisession lead-out/lead-in as they result in errors that are not really there. -- Get correct track flags. -- Retry only the number of times requested. -- Return drive to previous error correction status. -- Send error recovery MODE before retrying sectors. - -### - HDCopy disk image -- Fix sector calculation. - -### - Image comparison -- Fix when sessions are null. - -### - Image verification -- Corrected status printing. - -### - ISO9660 filesystem -- Do not try to read past partition if El Torito indicates image goes beyond limits. -- Fix when root directory is outside of device. -- Skip null terminated strings in ISO9660 fields. - -### - Lisa filesystem -- Corrected character set encoding. - -### - Macintosh filesystem -- Corrected character set encoding. - -### - PC-98 Partition Table -- Prevent some FAT BPBs to false positive as PC-98 partition tables. - -### - RT-11 filesystem -- Use Radix-50 character set encoding. - -### - System V filesystem -- Fix partition bounds. - -### - VirtualPC disk image -- Corrected reading non-allocated blocks. - -## Changes -- Added command to convert disc images. -- Added command to get information about an image and its contents. -- Added D/CAS-25, D/CAS-85 and D/CAS-103 formats. -- Added IRC notifications for Travis CI. -- Added measured dimensions from an UMD. -- Added media types for NEO GEO CD, PC-FX. -- Added new image format designed to store as much information about media as a drive returns: dicformat. -- Added numeric values to media types. -- Added project to create test filesystems on 16-bit OS/2. -- Added project to create test filesystems on 32-bit OS/2. -- Added project to create test filesystems on DOS. -- Added project to create test filesystems on Mac OS. -- Added size of 640MiB magneto-optical disk. -- Added support for writing disc images. -- Compliant with GDPR. -- Corrected floptical geometry to data according to IRIX. -- Do not assume pointers are 32-bit in several Windows device calls. -- Fixed when statistics settings are null. -- Minimum .NET Framework version is now 4.6.1. -- Sort verbs list. -- Support newest XDG Base Directory Specification for Linux. - -# [4.0.1.0] - 2018-01-06 -## Fixes -### Apple DOS and ProDOS interleaved disk images -- Fixed interleaving values. - -### Apple Nibble disk image -- Fixed detection of DOS vs ProDOS sector order. - -### Apple 2IMG disk image -- Fixed deinterleaving of DOS and ProDOS sector order. -- Fixed denibblizing images. - -### Apple ProDOS filesystem -- Fixed detection on Apple II disks. - -### UCSD Pascal filesystem -- Added support for Apple II variants (two physical sectors per logical sector and little endian fields). - -# [4.0.0.0] - 2017-12-25 -## Added -### - Advanced Disc Filing System -- Added support for ADFS-S, ADFS-M, ADFS-L, ADFS-D, ADFS-E, ADFS-E+, ADFS-F, ADFS-F+ and ADFS-G. - -### - Apple Partition Map -- Added support for decoding Driver Description Map. -- Added support for maps without Driver Description Map. -- Added support for old partition table. - -### - Commands -- Added separate application to debug commands sent to devices. -- list-devices: Lists devices that can be used for device dependent commands. -- list-encodings: Lists supported character encodings. - -### - Create Sidecar command -- Added support for hashing DiscFerret flux images. -- Added support for hashing KryoFlux STREAM flux images. -- Added support for hashing SuperCardPro flux images. -- Added support for tape dumps where each tape-file is a separate dumped file. -- Calculate checksum of contents not only of image file. -- Consider each optical disc track as a separate partition. -- Store superblock modification time on sidecar. -- Support tracks. -- Use dump drive information from images that support it. - -### - Decoders -- Xbox DMI. -- Xbox Security Sectors. - -### - Devices -- MMC. -- PCMCIA block devices. -- SCSI Streaming Devices (aka "tapes"). -- SecureDigital. - -### - Device commands -- Add ATA and SCSI commands support for FreeBSD. -- Add ATA commands support for Windows. -- Add retrieval of USB information on Windows. -- Add SecureDigital/MMC commands support for Windows. - -### - Disc images. -- Alcohol 120%. -- Anex86. -- Apple DOS interleaved (.do). -- Apple New Disk Image Format (aka NDIF, aka img, aka DiskCopy 6). -- Apple Nibble (aka NIB). -- Apple ProDOS interleaved (.po). -- Apple Universal Disk Image Format (aka UDIF, aka dmg). -- BlindWrite 4. -- BlindWrite 5. -- CisCopy (aka DC-File or DCF). -- CloneCD. -- CopyQM. -- CPCEMU Disk File. -- CPCEMU Extended Disk File. -- D64. -- D71. -- D81. -- Digital Research's DiskCopy. -- DiscJuggler. -- HD-Copy. -- IBM SaveDskF. -- IMD. -- MAME Compressed Hunks of Data (aka CHD). -- Parallels Hard Disk Image (aka HDD). -- Partclone disk images -- Partimage disk images -- QEMU Copy-On-Write (aka QCOW). -- QEMU Copy-On-Write v2. -- QEMU Enhanced Disk (aka QED). -- Quasi88 (.D77/.D88). -- Ray Arachelian's Disk IMage (.DIM). -- RS-IDE hard disk images. -- Spectrum floppy disk image (.FDI) -- T98. -- VHDX. -- Virtual98. -- VMware. -- X68k .DIM. - -### - DiskCopy 4.2 disk image -- Added support for invalid images that use little-endian values. -- Added support for images created by macOS that don't have a format byte set. -- Use resource fork to get DiskCopy version used to create them. - -### - Dumping -- Added the ability to resume a partially done dump, even on a separate drive. -- Added the ability to skip dumping the Lead-in. -- Allow creation of a separate subchannel file. -- Create dump log. -- Dumping optical media creates an Alcohol 120% descriptor file. -- Raw dump of DVD with Matshita recorders. -- XGD with Kreon drives. - -### - ext2/3/4 filesystem -- Added new superblock fields. -- Added support for devices with sectors bigger than 512 bytes. - -### - FAT filesystem -- Added DEC Rainbow's hard-wired BPB. -- Added support for volumes with 256 bytes/sector. -- Added support for ACT Apricot BPB. -- Gets volume label, creation time and modification time from root directory if available. - -### - Filesystems -- Apple DOS. -- CP/M. -- Detecting AO-DOS. -- Detecting AtheOS. -- Detecting CD-i. -- Detecting Commodore 1540/1541/1571/1581. -- Detecting cram. -- Detecting Cray UNICOS. -- Detecting dump(8) (Old historic BSD, AIX, UFS and UFS2 types). -- Detecting ECMA-67. -- Detecting exFAT. -- Detecting Extent File System (aka SGI EFS). -- Detecting F2FS. -- Detecting FAT+. -- Detecting fossil. -- Detecting HAMMER. -- Detecting High Sierra Format. -- Detecting HP Logical Interchange Format. -- Detecting IBM JFS. -- Detecting Locus. -- Detecting MicroDOS file system. -- Detecting NILFS2. -- Detecting OS-9 Random Block File (aka RBF). -- Detecting Professional File System (aka PFS). -- Detecting QNX 4. -- Detecting QNX 6. -- Detecting Reiser. -- Detecting Reiser4. -- Detecting RT-11. -- Detecting SmartFileSystem (aka SFS, aka Standard File System). -- Detecting Squash. -- Detecting Universal Disk Format (aka UDF). -- Detecting Veritas. -- Detecting VMware. -- Detecting Xbox. -- Detecting XFS. -- Detecting Zettabyte File System (aka ZFS). -- UCSD Pascal. - -### - Filters -- AppleDouble. -- Apple PCExchange. -- AppleSingle. -- BZIP2. -- GZIP. -- LZIP. -- MacBinary. -- XZ. - -### - GUID Partition Table -- New type GUIDs. - -### - ISO9660 filesystem -- Added detection of AAIP extensions. -- Added detection of Apple extensions. -- Added detection of EFI Platform ID for El Torito. -- Added detection of RRIP extensions. -- Added detection of SUSP extensions. -- Added detection of XA extensions. -- Added detection of ziso extensions. - -### - Lisa filesystem -- Full read-only support. - -### - Media types -- DDS, DDS-2, DDS-3, DDS-4. -- HiFD. -- IOMEGA Clik! (aka PocketZip). -- IOMEGA JAZ. -- LS-120, LS-240, FD32MB. -- NEC floppies. -- Old DEC hard disks -- SHARP floppies. -- XGD3. - -### - Partitions -- Acorn FileCore. -- ACT Apricot. -- BSD disklabels. -- DEC disklabels. -- DragonFly BSD. -- Human68k. -- MINIX subpartitions. -- NEC PC-9800. -- Plan9 partition table. -- Rio Karma. -- SGI Disk Volume Headers. -- UNIX hardwired partition tables. -- UNIX VTOC. -- XENIX partition table. - -### - SCSI decoding -- Handling of EVPDs smaller than length field. -- Handling of modes 02h, 04h and 1Ch smaller than expected. -- Prettyfying of mode 0Bh. - -### - SmartFileSystem -- Added support for version 2. - -### - Statistics -- Added version and operating system statistics. - -### - Sun disklabel -- Added bound checks. -- Added support for 16-entries VTOC. -- Added support for pre-VTOC disklabels. -- Corrected structures for 8-entries VTOC. - -### - System V filesystem -- Added COHERENT offsets. -- Check for it starting on second cylinder. -- Corrected cluster size calculation. -- Corrected detection between Release 2 and Release 4. -- Corrected Release 2 superblock parameters. -- Enlarged NICFREE for Version 7. - -### TeleDisk images -- Added support for Advanced Compression. -- Added support for floppy lead-out. -- Added variable sectors per track support. - -## Fixes -### - AmigaDOS filesystem -- Corrected checksum calculation. -- Corrected cluster size calculation. -- Corrected root block location. -- Corrected support for AROS i386 variant that has a PC bootblock before the AmigaDOS bootblock itself. -- Detection on hard disks or with clusters bigger than 1 sector. -- Tested FFS2. - -### - Apple Partition Map -- Added bound checks. -- Added support for decoding Driver Description Map. -- Added support for maps without Driver Description Map. -- Added support for old partition table. -- Corrected partition start when map it's not on start of device. -- Corrected support for misaligned maps, like on CDs. -- Cut partitions that span outside the device. - -### - cdrdao -- Audio track matching. -- Corrected images that start with comments. -- Prevent reading binary files. - -### - CDRWin -- CD-Text detection. -- CD+G data return. -- Fixed composer parsing. -- Prevent reading binary files. - -### - CP/M filesystem -- Corrected cluster count calculation. -- Corrected directory location on CP/M-86. -- Corrected sector reading. -- Skip media types that were never used as a CP/M disk. - -### - Create Sidecar command -- Corrected creation when path is absolute. - -### - Device commands -- Do not send SCSI INQUIRY to non-SCSI paths on Linux. - -### - Device reports -- Call ATA READ LONG last, as it confuses some drives. -- Try SCSI READ LONG (10) until max block size (65535). - -### - DiskCopy 4.2 -- Corrected track order for Lisa and Macintosh Twiggy. - -### - Dreamcast GDI images -- Prevent reading binary files. - -### - Dumping -- Calculation of streaming device dumping speed. -- Corrected dumping CD-R and CD-RW. -- Optical media with 2048 bytes/sector now get ".iso" file extension. -- Retry when SCSI devices return reset status. -- Streaming Devices now store block size changes in metadata sidecar. -- Wait for SCSI devices to exit ASC 28h (MEDIUM CHANGE) status. - -### - ext2/3/4 filesystem -- Use os type as XML system identifier. - -### - FAT filesystem -- Behaviour with some non-compliant media descriptors. -- Corrected 5.25" MD1DD detection. -- Corrected boot code detection. -- Corrected misaligned volumes on optical media. -- Rewritten to better detect Atari, MSX, *-DOS and ANDOS variants. -- Use OEM name as XML system identifier. - -### - Guid Partition Table -- Added bound checks. -- Corrected misaligned tables on optical media. -- Corrected when table is smaller than one sector. - -### - HFS filesystem -- Corrected detection of a PowerPC only bootable volume (no boot sector). -- Corrected misaligned volumes on optical media. -- Corrected volume serial number case. - -### - HFS+ filesystem -- Corrected misaligned volumes on optical media. -- Corrected misalignment of fields in Volume Header. -- Use last mount version as XML system identifier. - -### - HPFS filesystem -- Corrected cluster size. -- Detect boot code. -- Show NT flags. -- Use OEM name as XML system identifier. - -### - ISO9660 filesystem -- Complete rewrite. -- Check that date fields start with a number. - -### - Master Boot Record partitioning scheme -- Check real presence of a GPT. -- Corrected infinite looping on extended partitions. -- Remove disklabels support. -- Support misaligned MBRs on optical media. -- Support NEC extensions. -- Support OnTrack extensions. - -### - MINIX filesystem -- Added support for v1 and v2 created on MINIX 3. -- Corrected misaligned volumes on optical media. - -### - Nero Burning ROM -- Corrected track handling. -- Corrected typo on parsing v2 images. -- Disc types. -- Do not identify positively if footer version is unknown. -- Lead-In handling. -- Mode2 RAW sectors. -- Session count. - -### - NeXT partition table -- Added missing fields. -- Corrected offsets. -- Cut partitions that span outside the device. - -### - ODS filesystem -- Corrected cluster size calculation. -- Corrected misaligned volumes on optical media. - -### - ProDOS filesystem -- Corrected cluster size calculation. -- Corrected misaligned volumes on optical media. -- Volume size. - -### - Rigid Disk Block partition scheme -- Corrected AMIX mappings. - -### - SCSI decoding -- Handling of EVPDs smaller than length field. -- Handling of modes 02h, 04h and 1Ch smaller than expected. -- Prevented overflow on MMC FEATURES decoding. -- Prevented overflow on SCSI MODE PAGE decoding. - -### - SmartFileSystem -- Added support for version 2. - -### - Sun disklabel -- Added bound checks. -- Corrected structures for 8-entries VTOC. - -### - System V filesystem -- Check for it starting on second cylinder. -- Corrected cluster size calculation. -- Corrected detection between Release 2 and Release 4. -- Corrected Release 2 superblock parameters. -- Enlarged NICFREE for Version 7. - -### - UFS filesystem -- Corrected superblock locations. -- Move superblock to a single structure and marshal it, corrects detection of several variants. - -## Changes -- Added a public changelog. -- Added a side application to create device reports under Linux without a .NET environment. -- Added operating system version statistics. -- Added partitioning scheme name to partition structures. -- Added several internal tests to prevent regression on changes. -- Added support for different character encodings. -- Added support for filters. -- Added support for nested partitioning schemes. -- Added support for propagating disk geometry, needed by PC-98 partitions and old MBRs. -- Better support for decoding multibyte encodings from C, Pascal and space-padded strings. -- Changed handling of compressed files, using temporary files and caching. -- Corrected casting on big-endian marshalling that was failing on some .NET Framework versions. -- Corrected filter list reuse. -- Disabled EDC check on CDs because it is not working (TODO). -- Filesystems now have access to full partition structure. -- Filters no longer return their own extension when requested for filename. -- Moved Claunia.RsrcFork to NuGet. -- Priam tags. -- Support drive firmware inside disc images. -- Support subchannel with only Q channel. - -# [3.0.0.0] - 2016-07-19 -## Added -### - Commands -- benchmark: Tests speed for checksum algorithms. -- create-sidecar: Creates an XML sidecar with metadata. -- decode: Decodes and prints a disk tag present on the image. -- device-info: Prints device information. -- dump-media: Dumps media to a disk image. -- entropy: Calculates disk entropy. -- media-info: Prints media information. -- scan-media: Scans media for errors. - -### - Checksums -- Adler-32 -- SpamSum - -### - Devices -- ATA on Linux. -- ATA on Windows (untested). -- FireWire on Linux. -- SCSI on Linux. -- SCSI on Windows (untested). -- USB on Linux. - -### - Disc images -- Apple 2IMG. -- CDRDAO. -- Dreamcast GDI. -- VirtualPC. - -### - Fast File System (FFS) -- Atari UNIX variant. - -### - Filesystems -- Acorn ADFS. -- AmigaDOS. -- Apple File System, aka APFS. -- Apple ProDOS. -- btrfs. -- Nintendo Gamecube. -- Nintendo Wii. - -### - Partitions -- Amiga Rigid Disk Block (aka RDB). -- Atari. -- Sun. -- (U)EFI GPT. - -## Changes -### - PrintHex command -- Allow to print several sectors. - -## Fixes -### - Be filesystem -- Endianness. -- Support for Be CDs. - -### - CDRWin disk image -- Behaviour on .NET Framework. -- Detection of CD-ROM XA. -- Flags. -- Partition calculations. - -### - Fast File System (FFS) -- False positives with 7th Edition. - -### - ISO9660 -- Dreamcast IP.BIN decoding. -- Sega CD IP.BIN decoding. - -### - System V Filesystem -- Big endian support - -# [2.20] - 2014-08-28 -## Added -### - Checksums -- Reed Solomon. - -## Fixes -### - Apple Partition Map -- Disks with 2048 bytes/sector but a 512 bytes/sector map. - -### - HFS -- Disks with 2048 bytes/sector but a 512 bytes/sector filesystem. - -# [2.10] - 2014-08-25 -## Added -### - Checksums -- CD EDC and ECC. -- CRC16. - -### - Commands -- Verify: Verifies disk image contents, if supported. - -### - Disc images -- Nero Burning ROM. - -# [2.0] - 2014-07-03 -## Added -### - Commands -- analyze: Gives informatio about disk image contents as well as detecting partitions and filesystems. -- checksum: Generates CRC32, CRC64, RIPEMD160, MD5, SHA1, SHA256, SHA384 and SHA512 checksums of disk image contents. -- compare: Compares two media images. -- printhex: Prints a hexadecimal output of a sector. - -### - Disc images -- RAW (sector by sector). - -### - Media types -- BD-R. -- BD-RE XL. -- FDFORMAT. - -## Fixes -### - FAT filesystem -- Workaround FAT12 without BIOS Parameter Block. - -### - MBR partitions -- Do not search for them on disks with less than 512 bytes/sector. - -### - ODS-11 filesystem -- Do not search for them on disks with less than 512 bytes/sector. - -# [1.10] - 2014-04-21 -## Added -### - Disc images -- Sydex TeleDisk. - -# [1.0] - 2014-04-17 -## Added -### - Filesystems -- Detecting BeFS. -- Detecting ext. -- Detecting ext2. -- Detecting ext3. -- Detecting ext4. -- Detecting FAT12. -- Detecting FAT16. -- Detecting FAT32. -- Detecting FFS. -- Detecting HFS+. -- Detecting HFS. -- Detecting HPFS. -- Detecting ISO9660. -- Detecting LisaFS. -- Detecting MFS. -- Detecting MinixFS. -- Detecting NTFS. -- Detecting ODS-11. -- Detecting Opera. -- Detecting PCEngine. -- Detecting SolarFS. -- Detecting System V. -- Detecting UFS. -- Detecting UFS2. -- Detecting UnixWare boot. - -### - Disc images -- Apple DiskCopy 4.2. -- CDRWin. - -### - Partitions -- Apple Partition Map (aka APM). -- Master Boot Record (aka MBR). -- NeXT disklabels. - -[4.5.1.1692]: https://github.com/claunia/DiscImageChef/releases/tag/v4.5.1.1692 -[4.5.0.1663]: https://github.com/claunia/DiscImageChef/releases/tag/v4.5.0.1663 -[4.0.1.0]: https://github.com/claunia/DiscImageChef/releases/tag/v4.0.1.0 -[4.0.0.0]: https://github.com/claunia/DiscImageChef/releases/tag/v4.0.0.0 -[3.0.0.0]: https://github.com/claunia/DiscImageChef/releases/tag/v3.0.0.0 -[2.20]: https://github.com/claunia/DiscImageChef/releases/tag/v2.2 -[2.10]: https://github.com/claunia/DiscImageChef/releases/tag/v2.1 -[2.0]: https://github.com/claunia/DiscImageChef/releases/tag/v2.0 diff --git a/Server/DiscImageChef.Server/docs/DONATING.md b/Server/DiscImageChef.Server/docs/DONATING.md deleted file mode 100644 index 0349792f6..000000000 --- a/Server/DiscImageChef.Server/docs/DONATING.md +++ /dev/null @@ -1,174 +0,0 @@ -Hardware donations -================== - -This is a list of hardware that I'm searching but is too rare or too expensive for me to get them. -The reason I want this hardware is because having it is the only way to add enhanced support for them (e.g. media detection, ECC support, raw dumping, etc.). -After adding enhanced support all drives will be given to the Canary Islands Computer Museum. - -- 3.5" magneto-optical media: 540MiB, 1.3GiB -- 5.25" magneto-optical drive and media -- 8" shugart drive -- ADR drive and tapes -- AIT drive and tapes -- Apple twiggy and media -- Caleb UHD144 drive -- Castlewood Orb 2.2 and 5.7 -- DLT drive and tapes -- DiscFerret -- HD-DVD media -- Host-aware and host-controller SAS and SATA zoned hard disks -- Insite floptical drive -- Iomega Bernoulli -- Iomega Ditto drive and tapes -- Iomega JAZ and JAZ 2 -- Iomega REV -- Iomega ZIP750 drive -- LD-ROM drive and media -- LTO drive and tapes -- LV-ROM drive and media -- Mammoth drive and tapes -- Panasonic Blu-ray recorder -- Plasmon UDO and UDO2 drives and media -- SCSI floppy drive (e.g. Teac FD235JS806-U) -- SLR drive and tapes -- Sony Hi-MD and media -- Sony HiFD -- Sony MD-DATA and media -- Sony Professional Disc for DATA -- Stringy floppy -- Syquest EZ135 drive and media -- Syquest EZFlyer drive and media -- Syquest Quest drive and media -- Syquest SQ2542 drive and media -- Syquest SQ306RD drive and SQ100 media -- Syquest SQ3105 drive and SQ310 media -- Syquest SQ312RD drive and SQ200 media -- Syquest SQ319RD drive and SQ300 media -- Syquest SQ3270 drive and SQ327 media -- Syquest SQ5110 drive and SQ800 media -- Syquest SQ5200C drive and SQ2000 media -- Syquest SQ555 drive and SQ400 media -- Syquest SparQ drive and media -- Syquest SyJet drive and media -- T9840, T9940, T10000 drive and tapes -- Travan drive and tapes -- Triton drive and media -- VXA drive and tapes - - -Software donations -================== -This is a list of software whose physical media has some characteristics that needs -to be investigated to allow correct dumping of such characteristics. Usually those -are copy protections. - -- CD-V -- CD-i Ready - - A Christmas Songbook - - Accelerator - - Alien Gate - - Beyond Limits - - Escape - - Lucky Luke - - Louis Armstrong - - Dark Fables of Aesop - - More Dark Fables of Aesop - - Mozart - - Opera Imaginaire - - Pavarotti - - Steel Machine - - The Apprentice - - Dimo's Quest - - The Worlds of... -- SafeDisc - - Age of Wonders II: The Wizard's Throne - - Beowulf - - Black & White 2 - - Brothers in Arms: Road to Hill 30 - - Call of Duty: World at War - - Carmageddon II: Carpocalypse Now - - Close Combat: Invasion Normandy - - Codename: Eagle - - Command & Conquer: Generals - - FIFA Football 2002 - - Football Manager 2007 -- SecuROM - - Arabian Nights - - Arcania: Gothic 4 - - Boiling Point: Road to Hell - - Caesar IV - - Cars 2 - - Clive Barker's Jericho - - Colin McRae Rally 04 - - Colin McRae Rally 2.0 - - Colin McRae Rally 3 - - Command & Conquer: Red Alert 3 - Uprising - - Commandos: Strike Force - - Devil May Cry 4 - - Die Hard: Nakatomi Plaza - - Disney Planes - - Divinity II: Developer's Cut -- StarForce - - Anno 1701 - - Black Mirror 3 - - BloodRayne 2 - - Chronostorm: Siberian Border - - Codename: Outbreak - - Dead to Rights - - Disciples III: Renaissance - - Game of Thrones - - Gothic 3 - - Gothic 3: Forsaken Gods - - Mass Effect - - Mount & Blade - - Pac-Man World 2 -- Tages - - Act of War: High Treason - - Anno 1701 - - Beyond Good & Evil - - Codename: Panzers - Cold War - - Darkstar One - - Desperados 2: Cooper's Revenge - - Driver: Parallel Lines - - Faery: Legends of Avalon - - Fahrenheit - - Fantasy Wars - - Glory of the Roman Empire - - Gothic 3 - - Hard to Be a God - - Helldorado - - Moto Racer 3 - - Nail'd - - Nostradamus: The Last Prophecy - - Rag Doll Kung Fu - - Rayman Origins - - RoboCop (2003) - - Runaway 2: The Dream of the Turtle - - S.T.A.L.K.E.R.: Shadow of Chernobyl - - Secret Files: Tunguska - - Silverfall - - SpellForce 2: Shadow Wars - - Still Life 2 - - The Chronicles of Riddick: Assault on Dark Athena - - War Front: Turning Point - - XIII -- Solidshield - - A-Train 8 - - Anno 2070 - - Assassin's Creed: Brotherhood - - Crysis 2 - - Dead Mountaineer's Hotel - - Dead Space 2 - - Hard to Be a God - - Helldorado - - I Am Alive - - Jack Keane - - James Cameron's Avatar: The Game - - Medal of Honor: Airborne - - Need for Speed: Hot Pursuit - - ObsCure II - - Risen - - Shift 2 Unleashed - - Still Life 2 - - Warfare - - X3: Terran Conflict \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/ISSUE_TEMPLATE.md b/Server/DiscImageChef.Server/docs/ISSUE_TEMPLATE.md deleted file mode 120000 index cc358d41f..000000000 --- a/Server/DiscImageChef.Server/docs/ISSUE_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ -../../.github/ISSUE_TEMPLATE.md \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/NEEDINFO.md b/Server/DiscImageChef.Server/docs/NEEDINFO.md deleted file mode 120000 index 2765be7e2..000000000 --- a/Server/DiscImageChef.Server/docs/NEEDINFO.md +++ /dev/null @@ -1 +0,0 @@ -../../NEEDINFO.md \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/PULL_REQUEST_TEMPLATE.md b/Server/DiscImageChef.Server/docs/PULL_REQUEST_TEMPLATE.md deleted file mode 120000 index 2a7462063..000000000 --- a/Server/DiscImageChef.Server/docs/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ -../../.github/PULL_REQUEST_TEMPLATE.md \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/README.md b/Server/DiscImageChef.Server/docs/README.md deleted file mode 100644 index e3d58cbbf..000000000 --- a/Server/DiscImageChef.Server/docs/README.md +++ /dev/null @@ -1,254 +0,0 @@ -DiscImageChef v4.5.99.1693 - -Disc Image Chef (because "swiss-army-knife" is used too much) - -Copyright © 2011-2018 Natalia Portillo - -[![Build status](https://dev.azure.com/DiscImageChef/DiscImageChef/_apis/build/status/DiscImageChef-.NET%20Desktop-CI)](https://dev.azure.com/DiscImageChef/DiscImageChef/_build/latest?definitionId=4) -[![Build Status](https://travis-ci.org/claunia/DiscImageChef.svg?branch=master)](https://travis-ci.org/claunia/DiscImageChef) -[![Build status](https://ci.appveyor.com/api/projects/status/vim4c8h028pn5oys?svg=true)](https://ci.appveyor.com/project/claunia/discimagechef) -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef?ref=badge_shield) - -You can see statistics and device reports [here](https://www.discimagechef.app/Statistics.aspx) - -DiscImageChef is a fully featured media dump management solution. You usually know media dumps -as disc images, disk images, tape images, etc. - -With DiscImageChef you can analyze a media dump, extract files from it (for supported -filesystems), compare two of them, create them from real media using the appropriate drive, -create a sidecar metadata with information about the media dump, and a lot of other features -that commonly would require you to use separate applications. - -To see last changes, check the [changelog](Changelog.md). -To see list of pending things to do, check the [TODO list](TODO.md). - -If you want to contribute in any way please read the [contributing guide](CONTRIBUTING.md). - -System requirements -=================== -DiscImageChef should work under any operating system where there is [Mono](http://www.mono-project.com/) -or [.NET Framework](https://www.microsoft.com/net/download). -It has been tested using Mono 5.0 and .NET Framework 4.6.1. However recommended versions are -Mono 5.8 and .NET Framework 4.7.1. .NET Core is unsupported. - -Usage -===== - -DiscImageChef.exe - -And read help. - -Or read the [wiki](https://github.com/claunia/DiscImageChef/wiki). - -Features -======== -* Analyzes a disk image getting information about the disk itself and analyzes partitions and filesystems inside them -* Can checksum the disks (and if optical disc, separate tracks) user-data (tags and metadata coming soon) -* Can compare two disk images, even different formats, for different sectors and/or metadata -* Can list and extract contents from filesystems that support that -* Can read several disk image formats. -* Can read several known sector by sector formats with variable bytes per sector. -* Can read standard sector by sector copies for optical and magnetic discs with constant bytes per sector. -* Can verify sectors or disk images if supported by the underlying format - -Supported disk image formats (read-only) -======================================== -* Apple Disk Archival/Retrieval Tool (DART) -* Apple II nibble images (NIB) -* BlindWrite 4 TOC files (.BWT/.BWI/.BWS) -* BlindWrite 5/6 TOC files (.B5T/.B5I and .B6T/.B6I) -* CopyQM -* CPCEMU Disk file and Extended Disk File -* Dave Dunfield IMD -* DiscJuggler images -* Dreamcast GDI -* HD-Copy disk images -* MAME Compressed Hunks of Data (CHD) -* Microsoft VHDX -* Nero Burning ROM (both image formats) -* Partclone disk images -* Partimage disk images -* Quasi88 disk images (.D77/.D88) -* Spectrum floppy disk image (.FDI) -* TeleDisk -* X68k DIM disk image files (.DIM) - -Supported disk image formats (read and write) -============================================= -* Alcohol 120% Media Descriptor Structure (.MDS/.MDF) -* Anex86 disk images (.FDI for floppies, .HDI for hard disks) -* Any 512 bytes/sector disk image format (sector by sector copy, aka raw) -* Apple 2IMG (used with Apple // emulators) -* Apple DiskCopy 4.2 -* Apple ][ Interleaved Disk Image -* Apple Universal Disk Image Format (UDIF), including obsolete (previous than DiskCopy 6) versions -* Apridisk disk image formats (for ACT Apricot disks) -* Basic Lisa Utility -* CDRDAO TOC sheets -* CDRWin cue/bin cuesheets, including ones with ISOBuster extensions -* CisCopy disk image (aka DC-File, .DCF) -* CloneCD -* DataPackRat's d2f/f2d disk image format ("WC DISK IMAGE") -* Digital Research DiskCopy -* DiscImageChef format -* IBM SaveDskF -* MAXI Disk disk images (HDK) -* Most known sector by sector copies of floppies with 128, 256, 319 and 1024 bytes/sector. -* Most known sector by sector copies with different bytes/sector on track 0. -* Parallels Hard Disk Image (HDD) version 2 -* QEMU Copy-On-Write versions 1, 2 and 3 (QCOW and QCOW2) -* QEMU Enhanced Disk (QED) -* Ray Arachelian's Disk IMage (.DIM) -* RS-IDE hard disk images -* Sector by sector copies of Microsoft's DMF floppies -* T98 hard disk images (.THD) -* T98-Next hard disk images (.NHD) -* Virtual98 disk images -* VirtualBox Disk Image (VDI) -* Virtual PC fixed size, dynamic size and differencing (undo) disk images -* VMware VMDK and COWD images -* XDF disk images (as created by IBM's XDFCOPY) - -Supported partitioning schemes -============================== -* Acorn Linux and RISCiX partitions -* ACT Apricot partitions -* Amiga Rigid Disk Block (RDB) -* Apple Partition Map -* Atari AHDI and ICDPro -* BSD disklabels -* BSD slices inside MBR -* DEC disklabels -* DragonFly BSD 64-bit disklabel -* EFI GUID Partition Table (GPT) -* Human68k (Sharp X68000) partitions table -* Microsoft/IBM/Intel Master Boot Record (MBR) -* Minix subpartitions inside MBR -* NEC PC9800 partitions -* NeXT disklabel -* Plan9 partition table -* Rio Karma partitions -* SGI volume headers -* Solaris slices inside MBR -* Sun disklabel -* UNIX VTOC and disklabel -* UNIX VTOC inside MBR -* Xbox 360 hard coded partitions -* XENIX partition table - -Supported file systems for read-only operations -=============================================== -* Apple DOS file system -* Apple Lisa file system -* Apple Macintosh File System (MFS) -* CP/M file system -* U.C.S.D Pascal file system - -Supported file systems for identification and information only -============================================================== -* 3DO Opera file system -* Acorn Advanced Disc Filing System -* Alexander Osipov DOS (AO-DOS for Electronika BK-0011) file system -* Amiga Fast File System v2, untested -* Amiga Fast File System, with international characters, directory cache and multi-user patches -* Amiga Original File System, with international characters, directory cache and multi-user patches -* Apple File System (preliminary detection until on-disk layout is stable) -* Apple Hierarchical File System (HFS) -* Apple Hierarchical File System+ (HFS+) -* Apple ProDOS / SOS file system -* AtheOS file system -* BeOS filesystem -* BSD Fast File System (FFS) / Unix File System (UFS) -* BSD Unix File System 2 (UFS2) -* B-tree file system (btrfs) -* CD-i file system -* Coherent UNIX file system -* Commodore 1540/1541/1571/1581 filesystems -* Cram file system -* DEC Files-11 (only checked with On Disk Structure 2, ODS-2) -* DEC RT-11 file system -* dump(8) (Old historic BSD, AIX, UFS and UFS2 types) -* ECMA-67: 130mm Flexible Disk Cartridge Labelling and File Structure for Information Interchange -* Flash-Friendly File System (F2FS) -* Fossil file system (from Plan9) -* HAMMER file system -* High Performance Optical File System (HPOFS) -* High Sierra Format -* HP Logical Interchange Format -* IBM Journaling File System (JFS) -* ISO9660 -* Linux extended file system -* Linux extended file system 2 -* Linux extended file system 3 -* Linux extended file system 4 -* Locus file system -* MicroDOS file system -* Microsoft 12-bit File Allocation Table (FAT12), including Atari ST extensions -* Microsoft 16-bit File Allocation Table (FAT16) -* Microsoft 32-bit File Allocation Table (FAT32), including FAT+ extension -* Microsoft Extended File Allocation Table (exFAT) -* Microsoft/IBM High Performance File System (HPFS) -* Microsoft New Technology File System (NTFS) -* Microsoft Resilient File System (ReFS) -* Minix v2 file system -* Minix v3 file system -* NEC PC-Engine executable -* NEC PC-FX executable -* NILFS2 -* Nintendo optical filesystems (GameCube and Wii) -* OS-9 Random Block File -* Professional File System -* QNX4 and QNX6 filesystems -* Reiser file systems -* SGI Extent File System (EFS) -* SGI XFS -* SmartFileSystem -* SolarOS file system -* Squash file system -* UNICOS file system -* Universal Disk Format (UDF) -* UNIX System V file system -* UNIX Version 7 file system -* UnixWare boot file system -* Veritas file system -* VMware file system (VMFS) -* Xbox filesystems -* Xenix file system -* Xia filesystem -* Zettabyte File System (ZFS) - -Supported checksums -=================== -* Adler-32 -* CRC-16 -* CRC-32 -* CRC-64 -* Fletcher-16 -* Fletcher-32 -* MD5 -* RMD160 -* SHA-1 -* SHA-2 (256, 384 and 512 bits) -* SpamSum (fuzzy hashing) - -Supported filters -================= -* Apple PCExchange (FINDER.DAT & RESOURCE.FRK) -* AppleDouble -* AppleSingle -* BZip2 -* GZip -* LZip -* MacBinary I, II, III -* XZ - -Partially supported disk image formats -====================================== -These disk image formats cannot be read, but their contents can be checksummed on sidecar creation -* DiscFerret -* KryoFlux STREAM -* SuperCardPro - - -## License -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef?ref=badge_large) \ No newline at end of file diff --git a/Server/DiscImageChef.Server/docs/TODO.md b/Server/DiscImageChef.Server/docs/TODO.md deleted file mode 100644 index 1a4f4fb34..000000000 --- a/Server/DiscImageChef.Server/docs/TODO.md +++ /dev/null @@ -1,83 +0,0 @@ -* Add checksum support for Apple NIB images. (https://github.com/claunia/DiscImageChef/issues/105) -* Add checksum support for NDIF images. (https://github.com/claunia/DiscImageChef/issues/88) -* Add checksum support for partclone images. (https://github.com/claunia/DiscImageChef/issues/89) -* Add checksum support for partimage images. (https://github.com/claunia/DiscImageChef/issues/90) -* Add detection of bootable UDF filesystems. (https://github.com/claunia/DiscImageChef/issues/91) -* Add filter for 7-Zip archives. (https://github.com/claunia/DiscImageChef/issues/92) -* Add filter for ZIP archives. (https://github.com/claunia/DiscImageChef/issues/93) -* Add flux decoding for DiscFerret images. (https://github.com/claunia/DiscImageChef/issues/49) -* Add flux decoding for KryoFlux images. (https://github.com/claunia/DiscImageChef/issues/50) -* Add flux decoding for SuperCardPro images. (https://github.com/claunia/DiscImageChef/issues/99) -* Add interface for floppy bitstream decoding. (https://github.com/claunia/DiscImageChef/issues/94) -* Add raw dump for Plextor recorders. (https://github.com/claunia/DiscImageChef/issues/100) -* Add support for 82077 floppy controllers. (https://github.com/claunia/DiscImageChef/issues/101) -* Add support for AIX partitioning scheme. (https://github.com/claunia/DiscImageChef/issues/7) -* Add support for CD-Text in Nero images. (https://github.com/claunia/DiscImageChef/issues/104) -* Add support for compressed Ciscopy images. (https://github.com/claunia/DiscImageChef/issues/127) -* Add support for compressed DART images. (https://github.com/claunia/DiscImageChef/issues/68) -* Add support for compressed MAME CHD version 5 images. (https://github.com/claunia/DiscImageChef/issues/106) -* Add support for compressed MAME CompactDisc images. (https://github.com/claunia/DiscImageChef/issues/107) -* Add support for compressed NDIF images. (https://github.com/claunia/DiscImageChef/issues/68) -* Add support for compressed SaveDskF images. (https://github.com/claunia/DiscImageChef/issues/108) -* Add support for compressed UDIF images. (https://github.com/claunia/DiscImageChef/issues/70) -* Add support for compressed VMware images. (https://github.com/claunia/DiscImageChef/issues/109) -* Add support for CSS encrypted DVD dumping. (https://github.com/claunia/DiscImageChef/issues/110) -* Add support for decoding Apple GCR bitstreams. (https://github.com/claunia/DiscImageChef/issues/95) -* Add support for decoding Commodore GCR bitstreams. (https://github.com/claunia/DiscImageChef/issues/96) -* Add support for decoding FM bitstreams. (https://github.com/claunia/DiscImageChef/issues/97) -* Add support for decoding MFM bitstreams. (https://github.com/claunia/DiscImageChef/issues/98) -* Add support for detecting FireWire devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/111) -* Add support for detecting FireWire devices in Windows. (https://github.com/claunia/DiscImageChef/issues/125) -* Add support for detecting USB devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/112) -* Add support for differencing QCOW2 images. (https://github.com/claunia/DiscImageChef/issues/142) -* Add support for differencing QCOW images. (https://github.com/claunia/DiscImageChef/issues/143) -* Add support for differencing QED images. (https://github.com/claunia/DiscImageChef/issues/144) -* Add support for DiscFerret devices. (https://github.com/claunia/DiscImageChef/issues/140) -* Add support for dumping CD Lead-In in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/113) -* Add support for encrypted NDIF images. (https://github.com/claunia/DiscImageChef/issues/149) -* Add support for encrypted QCOW2 images. (https://github.com/claunia/DiscImageChef/issues/145) -* Add support for encrypted QCOW images. (https://github.com/claunia/DiscImageChef/issues/146) -* Add support for encrypted VMware images. (https://github.com/claunia/DiscImageChef/issues/147) -* Add support for KryoFlux devices. (https://github.com/claunia/DiscImageChef/issues/141) -* Add support for Linear Media PCMCIA devices. (https://github.com/claunia/DiscImageChef/issues/148) -* Add support for MAME CHD images of PCMCIA devices. (https://github.com/claunia/DiscImageChef/issues/150) -* Add support for NetApp WAFL filesystem. (https://github.com/claunia/DiscImageChef/issues/61) -* Add support for NetWare 286 filesystem. (https://github.com/claunia/DiscImageChef/issues/117) -* Add support for NetWare 386 filesystem. (https://github.com/claunia/DiscImageChef/issues/118) -* Add support for Novell Storage Services filesystem. (https://github.com/claunia/DiscImageChef/issues/119) -* Add support for NVMe devices. (https://github.com/claunia/DiscImageChef/issues/151) -* Add support for OCFS2 filesystem. (https://github.com/claunia/DiscImageChef/issues/153) -* Add support for packed subchannel in BlindWrite 4 images. (https://github.com/claunia/DiscImageChef/issues/154) -* Add support for packed subchannel in BlindWrite 5 images. (https://github.com/claunia/DiscImageChef/issues/155) -* Add support for Parallel ATA devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/114) -* Add support for PCMCIA devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/115) -* Add support for PCMCIA devices in Windows. (https://github.com/claunia/DiscImageChef/issues/126) -* Add support for reading resource fork in macOS. (https://github.com/claunia/DiscImageChef/issues/156) -* Add support for reading resource fork in Windows. (https://github.com/claunia/DiscImageChef/issues/157) -* Add support for SecureDigital and MultiMediaCard devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/116) -* Add support for SuperCardPro devices. (https://github.com/claunia/DiscImageChef/issues/139) -* Add support for XPACK images. (https://github.com/claunia/DiscImageChef/issues/45) -* Checksum disk tags -* Checksum long sectors -* Checksum sector tags -* Compare sector tags -* Finish support for reading sectors of variable bytes/sector images -* Graphical User Interface -* Handle UDIF image comments. (https://github.com/claunia/DiscImageChef/issues/137) -* Implement Apple KenCode compression algorithm. (https://github.com/claunia/DiscImageChef/issues/122) -* Implement Apple LZFSE compression algorithm. (https://github.com/claunia/DiscImageChef/issues/124) -* Implement Apple LZH compression algorithm. (https://github.com/claunia/DiscImageChef/issues/121) -* Implement COLUMBIA ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/133) -* Implement CYLINDERS ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/132) -* Implement dumping GameCube discs. (https://github.com/claunia/DiscImageChef/issues/135) -* Implement dumping Wii discs. (https://github.com/claunia/DiscImageChef/issues/136) -* Implement EAGLE ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/131) -* Implement ODS checksum. (https://github.com/claunia/DiscImageChef/issues/130) -* Implement StuffIt compression algorithm. (https://github.com/claunia/DiscImageChef/issues/123) -* Offer the option to see differing values -* Optimize and multithread image comparison -* Optimize current checksum multithreading -* Support AAP extensions in MBR. (https://github.com/claunia/DiscImageChef/issues/159) -* Support IBM boot manager in MBR. (https://github.com/claunia/DiscImageChef/issues/128) -* Support MMC feature codes FF33h -* Support SCSI mode pages 18h, 1Dh, 20h, 31h, 32h \ No newline at end of file diff --git a/Server/DiscImageChef.Server/fonts/.htaccess b/Server/DiscImageChef.Server/fonts/.htaccess deleted file mode 100644 index 4114709ce..000000000 --- a/Server/DiscImageChef.Server/fonts/.htaccess +++ /dev/null @@ -1 +0,0 @@ -IndexIgnore * \ No newline at end of file diff --git a/Server/DiscImageChef.Server/fonts/ChicagoFLF.eot b/Server/DiscImageChef.Server/fonts/ChicagoFLF.eot deleted file mode 100644 index d4b6a6efd..000000000 Binary files a/Server/DiscImageChef.Server/fonts/ChicagoFLF.eot and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/ChicagoFLF.ttf b/Server/DiscImageChef.Server/fonts/ChicagoFLF.ttf deleted file mode 100644 index b77813c76..000000000 Binary files a/Server/DiscImageChef.Server/fonts/ChicagoFLF.ttf and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff b/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff deleted file mode 100644 index f72060262..000000000 Binary files a/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff2 b/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff2 deleted file mode 100644 index bb1dd4b36..000000000 Binary files a/Server/DiscImageChef.Server/fonts/ChicagoFLF.woff2 and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/vga_squarepx.eot b/Server/DiscImageChef.Server/fonts/vga_squarepx.eot deleted file mode 100644 index 3d7446101..000000000 Binary files a/Server/DiscImageChef.Server/fonts/vga_squarepx.eot and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/vga_squarepx.ttf b/Server/DiscImageChef.Server/fonts/vga_squarepx.ttf deleted file mode 100644 index 9fe3e4aec..000000000 Binary files a/Server/DiscImageChef.Server/fonts/vga_squarepx.ttf and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/vga_squarepx.woff b/Server/DiscImageChef.Server/fonts/vga_squarepx.woff deleted file mode 100644 index 20ea3254c..000000000 Binary files a/Server/DiscImageChef.Server/fonts/vga_squarepx.woff and /dev/null differ diff --git a/Server/DiscImageChef.Server/fonts/vga_squarepx.woff2 b/Server/DiscImageChef.Server/fonts/vga_squarepx.woff2 deleted file mode 100644 index a7a5b60ae..000000000 Binary files a/Server/DiscImageChef.Server/fonts/vga_squarepx.woff2 and /dev/null differ diff --git a/Server/DiscImageChef.Server/package-lock.json b/Server/DiscImageChef.Server/package-lock.json deleted file mode 100644 index 7699daa2f..000000000 --- a/Server/DiscImageChef.Server/package-lock.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "bootstrap": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.2.1.tgz", - "integrity": "sha512-tt/7vIv3Gm2mnd/WeDx36nfGGHleil0Wg8IeB7eMrVkY0fZ5iTaBisSh8oNANc2IBsCc6vCgCNTIM/IEN0+50Q==", - "dev": true - } - } -} diff --git a/Server/DiscImageChef.Server/package.json b/Server/DiscImageChef.Server/package.json deleted file mode 100644 index efc3d42fe..000000000 --- a/Server/DiscImageChef.Server/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "bootstrap": "4.2.1" - } -} diff --git a/Server/DiscImageChef.Server/packages.config b/Server/DiscImageChef.Server/packages.config deleted file mode 100644 index e678a9766..000000000 --- a/Server/DiscImageChef.Server/packages.config +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Server/DiscImageChef.Server/styles/_highcharts.scss b/Server/DiscImageChef.Server/styles/_highcharts.scss deleted file mode 100644 index c3f6b965e..000000000 --- a/Server/DiscImageChef.Server/styles/_highcharts.scss +++ /dev/null @@ -1,788 +0,0 @@ -/** - * @license Highcharts - * - * (c) 2009-2016 Torstein Honsi - * - * License: www.highcharts.com/license - */ - -// Colors for data series and points. -$colors: #7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1 !default; - -// Chart background, point stroke for markers and columns etc -$background-color: #ffffff !default; - -// Neutral colors, grayscale by default. The default colors are defined by mixing the -// background-color with neutral, with a weight corresponding to the number in the name. -$neutral-color-100: #000000 !default; // Strong text. -$neutral-color-80: #333333 !default; // Main text and some strokes. -$neutral-color-60: #666666 !default; // Axis labels, axis title, connector fallback. -$neutral-color-40: #999999 !default; // Credits text, export menu stroke. -$neutral-color-20: #cccccc !default; // Disabled texts, button strokes, crosshair etc. -$neutral-color-10: #e6e6e6 !default; // Grid lines etc. -$neutral-color-5: #f2f2f2 !default; // Minor grid lines etc. -$neutral-color-3: #f7f7f7 !default; // Tooltip backgroud, button fills, map null points. - -// Colored, shades of blue by default -$highlight-color-100: #003399 !default; // Drilldown clickable labels, color axis max color. -$highlight-color-80: #335cad !default; // Selection marker, menu hover, button hover, chart border, navigator series. -$highlight-color-60: #6685c2 !default; // Navigator mask fill. -$highlight-color-20: #ccd6eb !default; // Ticks and axis line. -$highlight-color-10: #e6ebf5 !default; // Pressed button, color axis min color. - -// Fonts -$font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif !default; -$title-font-size: 1.5em !default; -$subtitle-font-size: 1em !default; -$legend-font-size: 1em !default; -$axis-labels-font-size: 0.9em !default; - -// Tooltip -$tooltip-border: 1px !default; -$tooltip-background: $neutral-color-3 !default; - -// Axes -$xaxis-grid-line: 0px !default; - -// Range-selector -$range-selector-button-border: 0px !default; -$range-selector-input-text: $neutral-color-80 !default; -$range-selector-input-border: $neutral-color-20 !default; - -// Data-labels -$data-label-color: $neutral-color-80 !default; - -// Buttons -$context-button-background: $background-color !default; - -$highcharts-button-background: $neutral-color-3 !default; -$highcharts-button-border: $neutral-color-20 !default; -$highcharts-button-text: $neutral-color-80 !default; - -$highcharts-button-pressed-background: $highlight-color-10 !default; -$highcharts-button-pressed-border: $neutral-color-20 !default; -$highcharts-button-pressed-text: $neutral-color-80 !default; - -$highcharts-button-hover-background: $neutral-color-10 !default; -$highcharts-button-hover-border: $neutral-color-20 !default; -$highcharts-button-hover-text: $neutral-color-80 !default; - -// Navigator -$navigator-series-fill: $highlight-color-80 !default; -$navigator-series-border: $highlight-color-80 !default; - -// Scrollbar -$scrollbar-track-background: $neutral-color-5 !default; -$scrollbar-track-border: $neutral-color-5 !default; - -// Indicators -$indicator-positive-line: #06B535; -$indicator-negative-line: #F21313; - -.highcharts-container { - position: relative; - overflow: hidden; - width: 100%; - height: 100%; - text-align: left; - line-height: normal; - z-index: 0; /* #1072 */ - -webkit-tap-highlight-color: rgba(0,0,0,0); - font-family: $font-family; - font-size: 12px; -} -.highcharts-root { - display: block; -} -.highcharts-root text { - stroke-width: 0; -} -.highcharts-strong { - font-weight: bold; -} -.highcharts-emphasized { - font-style: italic; -} -.highcharts-anchor { - cursor: pointer; -} -.highcharts-background { - fill: $background-color; -} -.highcharts-plot-border, .highcharts-plot-background { - fill: none; -} -.highcharts-label-box { - fill: none; -} -.highcharts-button-box { - fill: inherit; -} -.highcharts-tracker-line { - stroke-linejoin: round; - stroke: rgba(192, 192, 192, 0.0001); - stroke-width: 22; - fill: none; -} -.highcharts-tracker-area { - fill: rgba(192, 192, 192, 0.0001); - stroke-width: 0; -} - -/* Titles */ -.highcharts-title { - fill: $neutral-color-80; - font-size: $title-font-size; -} -.highcharts-subtitle { - fill: $neutral-color-60; -} - -/* Axes */ -.highcharts-axis-line { - fill: none; - stroke: $highlight-color-20; -} -.highcharts-yaxis .highcharts-axis-line { - stroke-width: 0; -} -.highcharts-axis-title { - fill: $neutral-color-60; -} -.highcharts-axis-labels { - fill: $neutral-color-60; - cursor: default; - font-size: $axis-labels-font-size; -} -.highcharts-grid-line { - fill: none; - stroke: $neutral-color-10; -} -.highcharts-xaxis-grid .highcharts-grid-line { - stroke-width: $xaxis-grid-line; -} -.highcharts-tick { - stroke: $highlight-color-20; -} -.highcharts-yaxis .highcharts-tick { - stroke-width: 0; -} -.highcharts-minor-grid-line { - stroke: $neutral-color-5; -} -.highcharts-crosshair-thin { - stroke-width: 1px; - stroke: $neutral-color-20; -} -.highcharts-crosshair-category { - stroke: $highlight-color-20; - stroke-opacity: 0.25; -} - - -/* Credits */ -.highcharts-credits { - cursor: pointer; - fill: $neutral-color-40; - font-size: 0.7em; - transition: fill 250ms, font-size 250ms; -} -.highcharts-credits:hover { - fill: black; - font-size: 1em; -} - -/* Tooltip */ -.highcharts-tooltip { - cursor: default; - pointer-events: none; - white-space: nowrap; - transition: stroke 150ms; -} -.highcharts-tooltip text { - fill: $neutral-color-80; -} -.highcharts-tooltip .highcharts-header { - font-size: 0.85em; -} -.highcharts-tooltip-box { - stroke-width: $tooltip-border; - fill: $tooltip-background; - fill-opacity: 0.85; -} -.highcharts-tooltip-box .highcharts-label-box { - fill: $tooltip-background; - fill-opacity: 0.85; -} - -.highcharts-selection-marker { - fill: $highlight-color-80; - fill-opacity: 0.25; -} - -.highcharts-graph { - fill: none; - stroke-width: 2px; - stroke-linecap: round; - stroke-linejoin: round; -} -.highcharts-state-hover .highcharts-graph { - stroke-width: 3; -} -.highcharts-state-hover path { - transition: stroke-width 50; /* quick in */ -} -.highcharts-state-normal path { - transition: stroke-width 250ms; /* slow out */ -} - -/* Legend hover affects points and series */ -g.highcharts-series, -.highcharts-point, -.highcharts-markers, -.highcharts-data-labels { - transition: opacity 250ms; -} -.highcharts-legend-series-active g.highcharts-series:not(.highcharts-series-hover), -.highcharts-legend-point-active .highcharts-point:not(.highcharts-point-hover), -.highcharts-legend-series-active .highcharts-markers:not(.highcharts-series-hover), -.highcharts-legend-series-active .highcharts-data-labels:not(.highcharts-series-hover) { - opacity: 0.2; -} - -/* Series options */ - -/* Default colors */ -@for $i from 1 through length($colors) { - $color: nth($colors, $i); - .highcharts-color-#{$i - 1} { - fill: $color; - stroke: $color; - } -} - -.highcharts-area { - fill-opacity: 0.75; - stroke-width: 0; -} -.highcharts-markers { - stroke-width: 1px; - stroke: $background-color; -} -.highcharts-point { - stroke-width: 1px; -} -.highcharts-dense-data .highcharts-point { - stroke-width: 0; -} - -.highcharts-data-label { - font-size: 0.9em; - font-weight: bold; -} -.highcharts-data-label-box { - fill: none; - stroke-width: 0; -} -.highcharts-data-label text, text.highcharts-data-label { - fill: $data-label-color; -} -.highcharts-data-label-connector { - fill: none; -} -.highcharts-halo { - fill-opacity: 0.25; - stroke-width: 0; -} -.highcharts-series:not(.highcharts-pie-series) .highcharts-point-select, -.highcharts-markers .highcharts-point-select { - fill: $neutral-color-20; - stroke: $neutral-color-100; -} -.highcharts-column-series rect.highcharts-point { - // rect to prevent stroke on 3D columns - stroke: $background-color; -} -.highcharts-column-series .highcharts-point { - transition: fill-opacity 250ms; -} -.highcharts-column-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} -.highcharts-pie-series .highcharts-point { - stroke-linejoin: round; - stroke: $background-color; -} -.highcharts-pie-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} -.highcharts-funnel-series .highcharts-point { - stroke-linejoin: round; - stroke: $background-color; -} -.highcharts-funnel-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} -.highcharts-funnel-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} -.highcharts-pyramid-series .highcharts-point { - stroke-linejoin: round; - stroke: $background-color; -} -.highcharts-pyramid-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} -.highcharts-pyramid-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} -.highcharts-solidgauge-series .highcharts-point { - stroke-width: 0; -} -.highcharts-treemap-series .highcharts-point { - stroke-width: 1px; - stroke: $neutral-color-10; - transition: stroke 250ms, fill 250ms, fill-opacity 250ms; -} -.highcharts-treemap-series .highcharts-point-hover { - stroke: $neutral-color-40; - transition: stroke 25ms, fill 25ms, fill-opacity 25ms; -} - -.highcharts-treemap-series .highcharts-above-level { - display: none; -} -.highcharts-treemap-series .highcharts-internal-node { - fill: none; -} -.highcharts-treemap-series .highcharts-internal-node-interactive { - fill-opacity: 0.15; - cursor: pointer; -} -.highcharts-treemap-series .highcharts-internal-node-interactive:hover { - fill-opacity: 0.75; -} - - - -/* Legend */ -.highcharts-legend-box { - fill: none; - stroke-width: 0; -} -.highcharts-legend-item > text { - fill: $neutral-color-80; - font-weight: bold; - font-size: $legend-font-size; - cursor: pointer; - stroke-width: 0; -} -.highcharts-legend-item:hover text { - fill: $neutral-color-100; -} -.highcharts-legend-item-hidden * { - fill: $neutral-color-20 !important; - stroke: $neutral-color-20 !important; - transition: fill 250ms; -} -.highcharts-legend-nav-active { - fill: $highlight-color-100; - cursor: pointer; -} -.highcharts-legend-nav-inactive { - fill: $neutral-color-20; -} -.highcharts-legend-title-box { - fill: none; - stroke-width: 0; -} - -/* Bubble legend */ -.highcharts-bubble-legend-symbol { - stroke-width: 2; - fill-opacity: 0.5; -} -.highcharts-bubble-legend-connectors { - stroke-width: 1; -} -.highcharts-bubble-legend-labels { - fill: $neutral-color-80; -} - -/* Loading */ -.highcharts-loading { - position: absolute; - background-color: $background-color; - opacity: 0.5; - text-align: center; - z-index: 10; - transition: opacity 250ms; -} -.highcharts-loading-hidden { - height: 0 !important; - opacity: 0; - overflow: hidden; - transition: opacity 250ms, height 250ms step-end; -} -.highcharts-loading-inner { - font-weight: bold; - position: relative; - top: 45%; -} - -/* Plot bands and polar pane backgrounds */ -.highcharts-plot-band, .highcharts-pane { - fill: $neutral-color-100; - fill-opacity: 0.05; -} -.highcharts-plot-line { - fill: none; - stroke: $neutral-color-40; - stroke-width: 1px; -} - -/* Highcharts More and modules */ -.highcharts-boxplot-box { - fill: $background-color; -} -.highcharts-boxplot-median { - stroke-width: 2px; -} -.highcharts-bubble-series .highcharts-point { - fill-opacity: 0.5; -} -.highcharts-errorbar-series .highcharts-point { - stroke: $neutral-color-100; -} -.highcharts-gauge-series .highcharts-data-label-box { - stroke: $neutral-color-20; - stroke-width: 1px; -} -.highcharts-gauge-series .highcharts-dial { - fill: $neutral-color-100; - stroke-width: 0; -} -.highcharts-polygon-series .highcharts-graph { - fill: inherit; - stroke-width: 0; -} -.highcharts-waterfall-series .highcharts-graph { - stroke: $neutral-color-80; - stroke-dasharray: 1, 3; -} -.highcharts-sankey-series .highcharts-point { - stroke-width: 0; -} -.highcharts-sankey-series .highcharts-link { - transition: fill 250ms, fill-opacity 250ms; - fill-opacity: 0.5; -} -.highcharts-sankey-series .highcharts-point-hover.highcharts-link { - transition: fill 50ms, fill-opacity 50ms; - fill-opacity: 1; -} -.highcharts-venn-series .highcharts-point { - fill-opacity: 0.75; - stroke: $neutral-color-20; - transition: stroke 250ms, fill-opacity 250ms; -} -.highcharts-venn-series .highcharts-point-hover { - fill-opacity: 1; - stroke: $neutral-color-20; -} - -/* Highstock */ -.highcharts-navigator-mask-outside { - fill-opacity: 0; -} -.highcharts-navigator-mask-inside { - fill: $highlight-color-60; /* navigator.maskFill option */ - fill-opacity: 0.25; - cursor: ew-resize; -} -.highcharts-navigator-outline { - stroke: $neutral-color-20; - fill: none; -} -.highcharts-navigator-handle { - stroke: $neutral-color-20; - fill: $neutral-color-5; - cursor: ew-resize; -} -.highcharts-navigator-series { - fill: $navigator-series-fill; - stroke: $navigator-series-border; -} -.highcharts-navigator-series .highcharts-graph { - stroke-width: 1px; -} -.highcharts-navigator-series .highcharts-area { - fill-opacity: 0.05; -} -.highcharts-navigator-xaxis .highcharts-axis-line { - stroke-width: 0; -} -.highcharts-navigator-xaxis .highcharts-grid-line { - stroke-width: 1px; - stroke: $neutral-color-10; -} -.highcharts-navigator-xaxis.highcharts-axis-labels { - fill: $neutral-color-40; -} -.highcharts-navigator-yaxis .highcharts-grid-line { - stroke-width: 0; -} -.highcharts-scrollbar-thumb { - fill: $neutral-color-20; - stroke: $neutral-color-20; - stroke-width: 1px; -} -.highcharts-scrollbar-button { - fill: $neutral-color-10; - stroke: $neutral-color-20; - stroke-width: 1px; -} -.highcharts-scrollbar-arrow { - fill: $neutral-color-60; -} -.highcharts-scrollbar-rifles { - stroke: $neutral-color-60; - stroke-width: 1px; -} -.highcharts-scrollbar-track { - fill: $scrollbar-track-background; - stroke: $scrollbar-track-border; - stroke-width: 1px; -} -.highcharts-button { - fill: $highcharts-button-background; - stroke: $highcharts-button-border; - cursor: default; - stroke-width: 1px; - transition: fill 250ms; -} -.highcharts-button text { - fill: $highcharts-button-text; -} -.highcharts-button-hover { - transition: fill 0ms; - fill: $highcharts-button-hover-background; - stroke: $highcharts-button-hover-border; -} -.highcharts-button-hover text { - fill: $highcharts-button-hover-text; -} -.highcharts-button-pressed { - font-weight: bold; - fill: $highcharts-button-pressed-background; - stroke: $highcharts-button-pressed-border; -} -.highcharts-button-pressed text { - fill: $highcharts-button-pressed-text; - font-weight: bold; -} -.highcharts-button-disabled text { - fill: $highcharts-button-text; -} -.highcharts-range-selector-buttons .highcharts-button { - stroke-width: $range-selector-button-border; -} -.highcharts-range-label rect { - fill: none; -} -.highcharts-range-label text { - fill: $neutral-color-60; -} -.highcharts-range-input rect { - fill: none; -} -.highcharts-range-input text { - fill: $range-selector-input-text; -} -.highcharts-range-input { - stroke-width:1px; - stroke: $range-selector-input-border; -} -input.highcharts-range-selector { - position: absolute; - border: 0; - width: 1px; /* Chrome needs a pixel to see it */ - height: 1px; - padding: 0; - text-align: center; - left: -9em; /* #4798 */ -} -.highcharts-crosshair-label text { - fill: $background-color; - font-size: 1.1em; -} -.highcharts-crosshair-label .highcharts-label-box { - fill: inherit; -} - - -.highcharts-candlestick-series .highcharts-point { - stroke: $neutral-color-100; - stroke-width: 1px; -} -.highcharts-candlestick-series .highcharts-point-up { - fill: $background-color; -} -.highcharts-ohlc-series .highcharts-point-hover { - stroke-width: 3px; -} -.highcharts-flags-series .highcharts-point .highcharts-label-box { - stroke: $neutral-color-40; - fill: $background-color; - transition: fill 250ms; -} -.highcharts-flags-series .highcharts-point-hover .highcharts-label-box { - stroke: $neutral-color-100; - fill: $highlight-color-20; -} -.highcharts-flags-series .highcharts-point text { - fill: $neutral-color-100; - font-size: 0.9em; - font-weight: bold; -} - -/* Highmaps */ -.highcharts-map-series .highcharts-point { - transition: fill 500ms, fill-opacity 500ms, stroke-width 250ms; - stroke: $neutral-color-20; -} -.highcharts-map-series .highcharts-point-hover { - transition: fill 0ms, fill-opacity 0ms; - fill-opacity: 0.5; - stroke-width: 2px; -} -.highcharts-mapline-series .highcharts-point { - fill: none; -} -.highcharts-heatmap-series .highcharts-point { - stroke-width: 0; -} -.highcharts-map-navigation { - font-size: 1.3em; - font-weight: bold; - text-align: center; -} -.highcharts-coloraxis { - stroke-width: 0; -} -.highcharts-coloraxis-marker { - fill: $neutral-color-40; -} -.highcharts-null-point { - fill: $neutral-color-3; -} - -/* 3d charts */ -.highcharts-3d-frame { - fill: transparent; -} - -/* Exporting module */ -.highcharts-contextbutton { - fill: $context-button-background; /* needed to capture hover */ - stroke: none; - stroke-linecap: round; -} -.highcharts-contextbutton:hover { - fill: $neutral-color-10; - stroke: $neutral-color-10; -} -.highcharts-button-symbol { - stroke: $neutral-color-60; - stroke-width: 3px; -} -.highcharts-menu { - border: 1px solid $neutral-color-40; - background: $background-color; - padding: 5px 0; - box-shadow: 3px 3px 10px #888; -} -.highcharts-menu-item { - padding: 0.5em 1em; - background: none; - color: $neutral-color-80; - cursor: pointer; - transition: background 250ms, color 250ms; -} -.highcharts-menu-item:hover { - background: $highlight-color-80; - color: $background-color; -} - -/* Drilldown module */ -.highcharts-drilldown-point { - cursor: pointer; -} -.highcharts-drilldown-data-label text, -text.highcharts-drilldown-data-label, -.highcharts-drilldown-axis-label { - cursor: pointer; - fill: $highlight-color-100; - font-weight: bold; - text-decoration: underline; -} - -/* No-data module */ -.highcharts-no-data text { - font-weight: bold; - font-size: 12px; - fill: $neutral-color-60; -} - -/* Drag-panes module */ -.highcharts-axis-resizer { - cursor: ns-resize; - stroke: black; - stroke-width: 2px; -} - -/* Bullet type series */ -.highcharts-bullet-target { - stroke-width: 0; -} - -/* Lineargauge type series */ -.highcharts-lineargauge-target { - stroke-width: 1px; - stroke: $neutral-color-80; -} -.highcharts-lineargauge-target-line { - stroke-width: 1px; - stroke: $neutral-color-80; -} - -/* Annotations module */ -.highcharts-annotation-label-box { - stroke-width: 1px; - stroke: $neutral-color-100; - fill: $neutral-color-100; - fill-opacity: 0.75; -} -.highcharts-annotation-label text { - fill: $neutral-color-10; -} - -/* Gantt */ -.highcharts-treegrid-node-collapsed, .highcharts-treegrid-node-expanded { - cursor: pointer; -} -.highcharts-point-connecting-path { - fill: none; -} -.highcharts-grid-axis .highcharts-tick { - stroke-width: 1px; -} -.highcharts-grid-axis .highcharts-axis-line { - stroke-width: 1px; -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/styles/dos/_colors.scss b/Server/DiscImageChef.Server/styles/dos/_colors.scss deleted file mode 100644 index 81d0f7256..000000000 --- a/Server/DiscImageChef.Server/styles/dos/_colors.scss +++ /dev/null @@ -1,90 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _colors.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets colors for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -/* Sets the grayscale for Bootstrap */ -$white: #AAAAAA; -$darkgray: #555555; -$gray-100: #AAAAAA; -$gray-200: #AAAAAA; -$gray-300: #AAAAAA; -$gray-400: #AAAAAA; -$gray-500: #555555; -$gray-600: #555555; -$gray-700: #555555; -$gray-800: #555555; -$gray-900: #555555; -$black: #000; - -/* Sets color palette, using EGA colors */ -$blue: #0000AA; -$indigo: #AA55AA; -$purple: #AA00FF; -$pink: #FF55FF; -$red: #AA0000; -$orange: #FF5555; -$yellow: #FFFF55; -$green: #00AA00; -$teal: #55FFFF; -$cyan: #00AAAA; -$brown: #AA5500; -$brightwhite: #FFFFFF; - -/* Bootstrap color aliases */ -$primary: $blue; -$secondary: $gray-600; -$success: $green; -$info: $cyan; -$warning: $yellow; -$danger: $red; -$light: $gray-100; -$dark: $gray-800; - -/* Colors for */ -$body-bg: $black; -$body-color: $white; - -/* Colors for */ -$link-color: $teal; -$link-hover-color: $yellow; - -/* Colors for cards */ -$card-border-color: rgba($darkgray, .125); -$card-cap-bg: rgba($darkgray, .03); -$card-cap-color: inherit; -$card-bg: $blue; - -/* Colors for tables */ -$table-dark-bg: $cyan; -$table-dark-accent-bg: rgba($white, .05) !default; -$table-dark-hover-bg: rgba($white, .075) !default; -$table-dark-border-color: lighten($yellow, 7.5%) !default; -$table-dark-color: $yellow !default; diff --git a/Server/DiscImageChef.Server/styles/dos/_font.scss b/Server/DiscImageChef.Server/styles/dos/_font.scss deleted file mode 100644 index 5bc8a8396..000000000 --- a/Server/DiscImageChef.Server/styles/dos/_font.scss +++ /dev/null @@ -1,51 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _font.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets font for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -/* Sets font to VGA square */ -@font-face -{ - font-family: 'VGAsquarePx'; - src: url(../../fonts/vga_squarepx.eot); - src: url(../../fonts/vga_squarepx.eot?#iefix) format('embedded-opentype'), - url(../../fonts/vga_squarepx.woff2) format('woff2'), - url(../../fonts/vga_squarepx.woff) format('woff'), - url(../../fonts/vga_squarepx.ttf) format('truetype'); - font-weight: normal; - font-style: normal; -} - -$font-family-sans-serif: 'VGAsquarePx'; -$font-family-monospace: 'VGAsquarePx'; -$font-family-base: 'VGAsquarePx'; -$font-size-base: 1.75rem; - -$line-height-base: 1; diff --git a/Server/DiscImageChef.Server/styles/dos/_fontstyles.scss b/Server/DiscImageChef.Server/styles/dos/_fontstyles.scss deleted file mode 100644 index b03387848..000000000 --- a/Server/DiscImageChef.Server/styles/dos/_fontstyles.scss +++ /dev/null @@ -1,51 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _fontstyles.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets font styles for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; - -/* Sets the style for emphasis/italics */ -em, i -{ - color: $green; - font-style: normal; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong -{ - color: $brightwhite; - font-size: 1em; - font-style: normal; - font-weight: normal; - margin: 0; -} diff --git a/Server/DiscImageChef.Server/styles/dos/dicserver.css b/Server/DiscImageChef.Server/styles/dos/dicserver.css deleted file mode 100644 index b26517b6a..000000000 --- a/Server/DiscImageChef.Server/styles/dos/dicserver.css +++ /dev/null @@ -1,9596 +0,0 @@ -@charset "UTF-8"; -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using EGA colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets font to VGA square */ -@font-face { - font-family: "VGAsquarePx"; - src: url(../../fonts/vga_squarepx.eot); - src: url(../../fonts/vga_squarepx.eot?#iefix) format("embedded-opentype"), url(../../fonts/vga_squarepx.woff2) format("woff2"), url(../../fonts/vga_squarepx.woff) format("woff"), url(../../fonts/vga_squarepx.ttf) format("truetype"); - font-weight: normal; - font-style: normal; -} -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using EGA colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets the style for emphasis/italics */ -em, i { - color: #00AA00; - font-style: normal; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong { - color: #FFFFFF; - font-size: 1em; - font-style: normal; - font-weight: normal; - margin: 0; -} - -/*! - * Bootstrap v4.2.1 (https://getbootstrap.com/) - * Copyright 2011-2018 The Bootstrap Authors - * Copyright 2011-2018 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -:root { - --blue: #0000AA; - --indigo: #AA55AA; - --purple: #AA00FF; - --pink: #FF55FF; - --red: #AA0000; - --orange: #FF5555; - --yellow: #FFFF55; - --green: #00AA00; - --teal: #55FFFF; - --cyan: #00AAAA; - --white: #AAAAAA; - --gray: #555555; - --gray-dark: #555555; - --primary: #0000AA; - --secondary: #555555; - --success: #00AA00; - --info: #00AAAA; - --warning: #FFFF55; - --danger: #AA0000; - --light: #AAAAAA; - --dark: #555555; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: "VGAsquarePx"; - --font-family-monospace: "VGAsquarePx"; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; -} - -body { - margin: 0; - font-family: "VGAsquarePx"; - font-size: 1.75rem; - font-weight: 400; - line-height: 1; - color: #AAAAAA; - text-align: left; - background-color: #000; -} - -[tabindex="-1"]:focus { - outline: 0 !important; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0.5rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: #55FFFF; - text-decoration: none; - background-color: transparent; -} -a:hover { - color: #FFFF55; - text-decoration: underline; -} - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; -} -a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; -} -a:not([href]):not([tabindex]):focus { - outline: 0; -} - -pre, -code, -kbd, -samp { - font-family: "VGAsquarePx"; - font-size: 1em; -} - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; -} - -figure { - margin: 0 0 1rem; -} - -img { - vertical-align: middle; - border-style: none; -} - -svg { - overflow: hidden; - vertical-align: middle; -} - -table { - border-collapse: collapse; -} - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #555555; - text-align: left; - caption-side: bottom; -} - -th { - text-align: inherit; -} - -label { - display: inline-block; - margin-bottom: 0.5rem; -} - -button { - border-radius: 0; -} - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - padding: 0; - border-style: none; -} - -input[type=radio], -input[type=checkbox] { - box-sizing: border-box; - padding: 0; -} - -input[type=date], -input[type=time], -input[type=datetime-local], -input[type=month] { - -webkit-appearance: listbox; -} - -textarea { - overflow: auto; - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; -} - -progress { - vertical-align: baseline; -} - -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: none; -} - -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -summary { - display: list-item; - cursor: pointer; -} - -template { - display: none; -} - -[hidden] { - display: none !important; -} - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.5rem; - font-family: inherit; - font-weight: 500; - line-height: 1.2; - color: inherit; -} - -h1, .h1 { - font-size: 4.375rem; -} - -h2, .h2 { - font-size: 3.5rem; -} - -h3, .h3 { - font-size: 3.0625rem; -} - -h4, .h4 { - font-size: 2.625rem; -} - -h5, .h5 { - font-size: 2.1875rem; -} - -h6, .h6 { - font-size: 1.75rem; -} - -.lead { - font-size: 2.1875rem; - font-weight: 300; -} - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} - -small, -.small { - font-size: 80%; - font-weight: 400; -} - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; -} - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline-item { - display: inline-block; -} -.list-inline-item:not(:last-child) { - margin-right: 0.5rem; -} - -.initialism { - font-size: 90%; - text-transform: uppercase; -} - -.blockquote { - margin-bottom: 1rem; - font-size: 2.1875rem; -} - -.blockquote-footer { - display: block; - font-size: 80%; - color: #555555; -} -.blockquote-footer::before { - content: "— "; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.img-thumbnail { - padding: 0.25rem; - background-color: #000; - border: 1px solid #AAAAAA; - border-radius: 0.25rem; - max-width: 100%; - height: auto; -} - -.figure { - display: inline-block; -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; -} - -.figure-caption { - font-size: 90%; - color: #555555; -} - -code { - font-size: 87.5%; - color: #FF55FF; - word-break: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #AAAAAA; - background-color: #555555; - border-radius: 0.2rem; -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; -} - -pre { - display: block; - font-size: 87.5%; - color: #555555; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} -.no-gutters > .col, -.no-gutters > [class*=col-] { - padding-right: 0; - padding-left: 0; -} - -.col-xl, -.col-xl-auto, .col-xl-12, .col-xl-11, .col-xl-10, .col-xl-9, .col-xl-8, .col-xl-7, .col-xl-6, .col-xl-5, .col-xl-4, .col-xl-3, .col-xl-2, .col-xl-1, .col-lg, -.col-lg-auto, .col-lg-12, .col-lg-11, .col-lg-10, .col-lg-9, .col-lg-8, .col-lg-7, .col-lg-6, .col-lg-5, .col-lg-4, .col-lg-3, .col-lg-2, .col-lg-1, .col-md, -.col-md-auto, .col-md-12, .col-md-11, .col-md-10, .col-md-9, .col-md-8, .col-md-7, .col-md-6, .col-md-5, .col-md-4, .col-md-3, .col-md-2, .col-md-1, .col-sm, -.col-sm-auto, .col-sm-12, .col-sm-11, .col-sm-10, .col-sm-9, .col-sm-8, .col-sm-7, .col-sm-6, .col-sm-5, .col-sm-4, .col-sm-3, .col-sm-2, .col-sm-1, .col, -.col-auto, .col-12, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; -} - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; -} - -.col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; -} - -.col-3 { - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; -} - -.col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; -} - -.col-6 { - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; -} - -.col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; -} - -.col-9 { - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; -} - -.col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; -} - -.col-12 { - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - order: -1; -} - -.order-last { - order: 13; -} - -.order-0 { - order: 0; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.offset-1 { - margin-left: 8.3333333333%; -} - -.offset-2 { - margin-left: 16.6666666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.3333333333%; -} - -.offset-5 { - margin-left: 41.6666666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.3333333333%; -} - -.offset-8 { - margin-left: 66.6666666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.3333333333%; -} - -.offset-11 { - margin-left: 91.6666666667%; -} - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-sm-first { - order: -1; - } - - .order-sm-last { - order: 13; - } - - .order-sm-0 { - order: 0; - } - - .order-sm-1 { - order: 1; - } - - .order-sm-2 { - order: 2; - } - - .order-sm-3 { - order: 3; - } - - .order-sm-4 { - order: 4; - } - - .order-sm-5 { - order: 5; - } - - .order-sm-6 { - order: 6; - } - - .order-sm-7 { - order: 7; - } - - .order-sm-8 { - order: 8; - } - - .order-sm-9 { - order: 9; - } - - .order-sm-10 { - order: 10; - } - - .order-sm-11 { - order: 11; - } - - .order-sm-12 { - order: 12; - } - - .offset-sm-0 { - margin-left: 0; - } - - .offset-sm-1 { - margin-left: 8.3333333333%; - } - - .offset-sm-2 { - margin-left: 16.6666666667%; - } - - .offset-sm-3 { - margin-left: 25%; - } - - .offset-sm-4 { - margin-left: 33.3333333333%; - } - - .offset-sm-5 { - margin-left: 41.6666666667%; - } - - .offset-sm-6 { - margin-left: 50%; - } - - .offset-sm-7 { - margin-left: 58.3333333333%; - } - - .offset-sm-8 { - margin-left: 66.6666666667%; - } - - .offset-sm-9 { - margin-left: 75%; - } - - .offset-sm-10 { - margin-left: 83.3333333333%; - } - - .offset-sm-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-md-first { - order: -1; - } - - .order-md-last { - order: 13; - } - - .order-md-0 { - order: 0; - } - - .order-md-1 { - order: 1; - } - - .order-md-2 { - order: 2; - } - - .order-md-3 { - order: 3; - } - - .order-md-4 { - order: 4; - } - - .order-md-5 { - order: 5; - } - - .order-md-6 { - order: 6; - } - - .order-md-7 { - order: 7; - } - - .order-md-8 { - order: 8; - } - - .order-md-9 { - order: 9; - } - - .order-md-10 { - order: 10; - } - - .order-md-11 { - order: 11; - } - - .order-md-12 { - order: 12; - } - - .offset-md-0 { - margin-left: 0; - } - - .offset-md-1 { - margin-left: 8.3333333333%; - } - - .offset-md-2 { - margin-left: 16.6666666667%; - } - - .offset-md-3 { - margin-left: 25%; - } - - .offset-md-4 { - margin-left: 33.3333333333%; - } - - .offset-md-5 { - margin-left: 41.6666666667%; - } - - .offset-md-6 { - margin-left: 50%; - } - - .offset-md-7 { - margin-left: 58.3333333333%; - } - - .offset-md-8 { - margin-left: 66.6666666667%; - } - - .offset-md-9 { - margin-left: 75%; - } - - .offset-md-10 { - margin-left: 83.3333333333%; - } - - .offset-md-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-lg-first { - order: -1; - } - - .order-lg-last { - order: 13; - } - - .order-lg-0 { - order: 0; - } - - .order-lg-1 { - order: 1; - } - - .order-lg-2 { - order: 2; - } - - .order-lg-3 { - order: 3; - } - - .order-lg-4 { - order: 4; - } - - .order-lg-5 { - order: 5; - } - - .order-lg-6 { - order: 6; - } - - .order-lg-7 { - order: 7; - } - - .order-lg-8 { - order: 8; - } - - .order-lg-9 { - order: 9; - } - - .order-lg-10 { - order: 10; - } - - .order-lg-11 { - order: 11; - } - - .order-lg-12 { - order: 12; - } - - .offset-lg-0 { - margin-left: 0; - } - - .offset-lg-1 { - margin-left: 8.3333333333%; - } - - .offset-lg-2 { - margin-left: 16.6666666667%; - } - - .offset-lg-3 { - margin-left: 25%; - } - - .offset-lg-4 { - margin-left: 33.3333333333%; - } - - .offset-lg-5 { - margin-left: 41.6666666667%; - } - - .offset-lg-6 { - margin-left: 50%; - } - - .offset-lg-7 { - margin-left: 58.3333333333%; - } - - .offset-lg-8 { - margin-left: 66.6666666667%; - } - - .offset-lg-9 { - margin-left: 75%; - } - - .offset-lg-10 { - margin-left: 83.3333333333%; - } - - .offset-lg-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-xl-first { - order: -1; - } - - .order-xl-last { - order: 13; - } - - .order-xl-0 { - order: 0; - } - - .order-xl-1 { - order: 1; - } - - .order-xl-2 { - order: 2; - } - - .order-xl-3 { - order: 3; - } - - .order-xl-4 { - order: 4; - } - - .order-xl-5 { - order: 5; - } - - .order-xl-6 { - order: 6; - } - - .order-xl-7 { - order: 7; - } - - .order-xl-8 { - order: 8; - } - - .order-xl-9 { - order: 9; - } - - .order-xl-10 { - order: 10; - } - - .order-xl-11 { - order: 11; - } - - .order-xl-12 { - order: 12; - } - - .offset-xl-0 { - margin-left: 0; - } - - .offset-xl-1 { - margin-left: 8.3333333333%; - } - - .offset-xl-2 { - margin-left: 16.6666666667%; - } - - .offset-xl-3 { - margin-left: 25%; - } - - .offset-xl-4 { - margin-left: 33.3333333333%; - } - - .offset-xl-5 { - margin-left: 41.6666666667%; - } - - .offset-xl-6 { - margin-left: 50%; - } - - .offset-xl-7 { - margin-left: 58.3333333333%; - } - - .offset-xl-8 { - margin-left: 66.6666666667%; - } - - .offset-xl-9 { - margin-left: 75%; - } - - .offset-xl-10 { - margin-left: 83.3333333333%; - } - - .offset-xl-11 { - margin-left: 91.6666666667%; - } -} -.table { - width: 100%; - margin-bottom: 1rem; - background-color: transparent; -} -.table th, -.table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #AAAAAA; -} -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #AAAAAA; -} -.table tbody + tbody { - border-top: 2px solid #AAAAAA; -} -.table .table { - background-color: #000; -} - -.table-sm th, -.table-sm td { - padding: 0.3rem; -} - -.table-bordered { - border: 1px solid #AAAAAA; -} -.table-bordered th, -.table-bordered td { - border: 1px solid #AAAAAA; -} -.table-bordered thead th, -.table-bordered thead td { - border-bottom-width: 2px; -} - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); -} - -.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #7a7aaa; -} -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #5252aa; -} - -.table-hover .table-primary:hover { - background-color: #6a6aa0; -} -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #6a6aa0; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #929292; -} -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #7e7e7e; -} - -.table-hover .table-secondary:hover { - background-color: #858585; -} -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #858585; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #7aaa7a; -} -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #52aa52; -} - -.table-hover .table-success:hover { - background-color: #6aa06a; -} -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #6aa06a; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #7aaaaa; -} -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #52aaaa; -} - -.table-hover .table-info:hover { - background-color: #6aa0a0; -} -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #6aa0a0; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #c2c292; -} -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #d6d67e; -} - -.table-hover .table-warning:hover { - background-color: #b9b982; -} -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #b9b982; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #aa7a7a; -} -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #aa5252; -} - -.table-hover .table-danger:hover { - background-color: #a06a6a; -} -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #a06a6a; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #aaaaaa; -} -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #aaaaaa; -} - -.table-hover .table-light:hover { - background-color: #9d9d9d; -} -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #9d9d9d; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #929292; -} -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #7e7e7e; -} - -.table-hover .table-dark:hover { - background-color: #858585; -} -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #858585; -} - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); -} -.table-hover .table-active:hover > td, -.table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); -} - -.table .thead-dark th { - color: #FFFF55; - background-color: #00AAAA; - border-color: #ffff7b; -} -.table .thead-light th { - color: #555555; - background-color: #AAAAAA; - border-color: #AAAAAA; -} - -.table-dark { - color: #FFFF55; - background-color: #00AAAA; -} -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #ffff7b; -} -.table-dark.table-bordered { - border: 0; -} -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(170, 170, 170, 0.05); -} -.table-dark.table-hover tbody tr:hover { - background-color: rgba(170, 170, 170, 0.075); -} - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-sm > .table-bordered { - border: 0; - } -} -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-md > .table-bordered { - border: 0; - } -} -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-lg > .table-bordered { - border: 0; - } -} -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-xl > .table-bordered { - border: 0; - } -} -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; -} -.table-responsive > .table-bordered { - border: 0; -} - -.form-control { - display: block; - width: 100%; - height: calc(2.5rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1.75rem; - font-weight: 400; - line-height: 1; - color: #555555; - background-color: #AAAAAA; - background-clip: padding-box; - border: 1px solid #AAAAAA; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .form-control { - transition: none; - } -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control:focus { - color: #555555; - background-color: #AAAAAA; - border-color: #2b2bff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.form-control::placeholder { - color: #555555; - opacity: 1; -} -.form-control:disabled, .form-control[readonly] { - background-color: #AAAAAA; - opacity: 1; -} - -select.form-control:focus::-ms-value { - color: #555555; - background-color: #AAAAAA; -} - -.form-control-file, -.form-control-range { - display: block; - width: 100%; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 2.1875rem; - line-height: 1.5; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 1.53125rem; - line-height: 1.5; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1; - color: #AAAAAA; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} -.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm { - height: calc(2.796875rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 1.53125rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.form-control-lg { - height: calc(4.28125rem + 2px); - padding: 0.5rem 1rem; - font-size: 2.1875rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -select.form-control[size], select.form-control[multiple] { - height: auto; -} - -textarea.form-control { - height: auto; -} - -.form-group { - margin-bottom: 1rem; -} - -.form-text { - display: block; - margin-top: 0.25rem; -} - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; -} -.form-row > .col, -.form-row > [class*=col-] { - padding-right: 5px; - padding-left: 5px; -} - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; -} - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; -} -.form-check-input:disabled ~ .form-check-label { - color: #555555; -} - -.form-check-label { - margin-bottom: 0; -} - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; -} -.form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #00AA00; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 1.53125rem; - line-height: 1; - color: #AAAAAA; - background-color: rgba(0, 170, 0, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #00AA00; - padding-right: 2.5rem; - background-repeat: no-repeat; - background-position: center right calc(2.5rem / 4); - background-size: calc(2.5rem / 2) calc(2.5rem / 2); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300AA00' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); -} -.was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #00AA00; - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.25); -} -.was-validated .form-control:valid ~ .valid-feedback, -.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, -.form-control.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: 2.5rem; - background-position: top calc(2.5rem / 4) right calc(2.5rem / 4); -} - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #00AA00; - padding-right: 3.625rem; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23555555' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300AA00' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/1.25rem 1.25rem; -} -.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #00AA00; - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.25); -} -.was-validated .custom-select:valid ~ .valid-feedback, -.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, -.custom-select.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #00AA00; -} -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #00AA00; -} -.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #00AA00; -} -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; -} -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #00dd00; - background-color: #00dd00; -} -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.25); -} -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #00AA00; -} - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #00AA00; -} -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; -} -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #00AA00; - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.25); -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #AA0000; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 1.53125rem; - line-height: 1; - color: #AAAAAA; - background-color: rgba(170, 0, 0, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #AA0000; - padding-right: 2.5rem; - background-repeat: no-repeat; - background-position: center right calc(2.5rem / 4); - background-size: calc(2.5rem / 2) calc(2.5rem / 2); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23AA0000' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); -} -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #AA0000; - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.25); -} -.was-validated .form-control:invalid ~ .invalid-feedback, -.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, -.form-control.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: 2.5rem; - background-position: top calc(2.5rem / 4) right calc(2.5rem / 4); -} - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #AA0000; - padding-right: 3.625rem; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23555555' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23AA0000' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/1.25rem 1.25rem; -} -.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #AA0000; - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.25); -} -.was-validated .custom-select:invalid ~ .invalid-feedback, -.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, -.custom-select.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #AA0000; -} -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #AA0000; -} -.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #AA0000; -} -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; -} -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #dd0000; - background-color: #dd0000; -} -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.25); -} -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #AA0000; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #AA0000; -} -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; -} -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #AA0000; - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.25); -} - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; -} -.form-inline .form-check { - width: 100%; -} -@media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; - } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-plaintext { - display: inline-block; - } - .form-inline .input-group, -.form-inline .custom-select { - width: auto; - } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; - } - .form-inline .form-check-input { - position: relative; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; - } - .form-inline .custom-control { - align-items: center; - justify-content: center; - } - .form-inline .custom-control-label { - margin-bottom: 0; - } -} - -.btn { - display: inline-block; - font-weight: 400; - color: #AAAAAA; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1.75rem; - line-height: 1; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .btn { - transition: none; - } -} -.btn:hover { - color: #AAAAAA; - text-decoration: none; -} -.btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.btn.disabled, .btn:disabled { - opacity: 0.65; -} -.btn:not(:disabled):not(.disabled) { - cursor: pointer; -} -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; -} - -.btn-primary { - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} -.btn-primary:hover { - color: #AAAAAA; - background-color: #000084; - border-color: #000077; -} -.btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(26, 26, 170, 0.5); -} -.btn-primary.disabled, .btn-primary:disabled { - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} -.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #AAAAAA; - background-color: #000077; - border-color: #00006a; -} -.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(26, 26, 170, 0.5); -} - -.btn-secondary { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-secondary:hover { - color: #AAAAAA; - background-color: #424242; - border-color: #3c3c3c; -} -.btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(98, 98, 98, 0.5); -} -.btn-secondary.disabled, .btn-secondary:disabled { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #AAAAAA; - background-color: #3c3c3c; - border-color: #353535; -} -.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(98, 98, 98, 0.5); -} - -.btn-success { - color: #AAAAAA; - background-color: #00AA00; - border-color: #00AA00; -} -.btn-success:hover { - color: #AAAAAA; - background-color: #008400; - border-color: #007700; -} -.btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(26, 170, 26, 0.5); -} -.btn-success.disabled, .btn-success:disabled { - color: #AAAAAA; - background-color: #00AA00; - border-color: #00AA00; -} -.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #AAAAAA; - background-color: #007700; - border-color: #006a00; -} -.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(26, 170, 26, 0.5); -} - -.btn-info { - color: #AAAAAA; - background-color: #00AAAA; - border-color: #00AAAA; -} -.btn-info:hover { - color: #AAAAAA; - background-color: #008484; - border-color: #007777; -} -.btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(26, 170, 170, 0.5); -} -.btn-info.disabled, .btn-info:disabled { - color: #AAAAAA; - background-color: #00AAAA; - border-color: #00AAAA; -} -.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #AAAAAA; - background-color: #007777; - border-color: #006a6a; -} -.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(26, 170, 170, 0.5); -} - -.btn-warning { - color: #555555; - background-color: #FFFF55; - border-color: #FFFF55; -} -.btn-warning:hover { - color: #555555; - background-color: #ffff2f; - border-color: #ffff22; -} -.btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(230, 230, 85, 0.5); -} -.btn-warning.disabled, .btn-warning:disabled { - color: #555555; - background-color: #FFFF55; - border-color: #FFFF55; -} -.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #555555; - background-color: #ffff22; - border-color: #ffff15; -} -.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(230, 230, 85, 0.5); -} - -.btn-danger { - color: #AAAAAA; - background-color: #AA0000; - border-color: #AA0000; -} -.btn-danger:hover { - color: #AAAAAA; - background-color: #840000; - border-color: #770000; -} -.btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(170, 26, 26, 0.5); -} -.btn-danger.disabled, .btn-danger:disabled { - color: #AAAAAA; - background-color: #AA0000; - border-color: #AA0000; -} -.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #AAAAAA; - background-color: #770000; - border-color: #6a0000; -} -.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(170, 26, 26, 0.5); -} - -.btn-light { - color: #555555; - background-color: #AAAAAA; - border-color: #AAAAAA; -} -.btn-light:hover { - color: #555555; - background-color: #979797; - border-color: #919191; -} -.btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(157, 157, 157, 0.5); -} -.btn-light.disabled, .btn-light:disabled { - color: #555555; - background-color: #AAAAAA; - border-color: #AAAAAA; -} -.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #AAAAAA; - background-color: #919191; - border-color: #8a8a8a; -} -.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(157, 157, 157, 0.5); -} - -.btn-dark { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-dark:hover { - color: #AAAAAA; - background-color: #424242; - border-color: #3c3c3c; -} -.btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(98, 98, 98, 0.5); -} -.btn-dark.disabled, .btn-dark:disabled { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #AAAAAA; - background-color: #3c3c3c; - border-color: #353535; -} -.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(98, 98, 98, 0.5); -} - -.btn-outline-primary { - color: #0000AA; - border-color: #0000AA; -} -.btn-outline-primary:hover { - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} -.btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.5); -} -.btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #0000AA; - background-color: transparent; -} -.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} -.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.5); -} - -.btn-outline-secondary { - color: #555555; - border-color: #555555; -} -.btn-outline-secondary:hover { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(85, 85, 85, 0.5); -} -.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #555555; - background-color: transparent; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(85, 85, 85, 0.5); -} - -.btn-outline-success { - color: #00AA00; - border-color: #00AA00; -} -.btn-outline-success:hover { - color: #AAAAAA; - background-color: #00AA00; - border-color: #00AA00; -} -.btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.5); -} -.btn-outline-success.disabled, .btn-outline-success:disabled { - color: #00AA00; - background-color: transparent; -} -.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #AAAAAA; - background-color: #00AA00; - border-color: #00AA00; -} -.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(0, 170, 0, 0.5); -} - -.btn-outline-info { - color: #00AAAA; - border-color: #00AAAA; -} -.btn-outline-info:hover { - color: #AAAAAA; - background-color: #00AAAA; - border-color: #00AAAA; -} -.btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(0, 170, 170, 0.5); -} -.btn-outline-info.disabled, .btn-outline-info:disabled { - color: #00AAAA; - background-color: transparent; -} -.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #AAAAAA; - background-color: #00AAAA; - border-color: #00AAAA; -} -.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(0, 170, 170, 0.5); -} - -.btn-outline-warning { - color: #FFFF55; - border-color: #FFFF55; -} -.btn-outline-warning:hover { - color: #555555; - background-color: #FFFF55; - border-color: #FFFF55; -} -.btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(255, 255, 85, 0.5); -} -.btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #FFFF55; - background-color: transparent; -} -.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #555555; - background-color: #FFFF55; - border-color: #FFFF55; -} -.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(255, 255, 85, 0.5); -} - -.btn-outline-danger { - color: #AA0000; - border-color: #AA0000; -} -.btn-outline-danger:hover { - color: #AAAAAA; - background-color: #AA0000; - border-color: #AA0000; -} -.btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.5); -} -.btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #AA0000; - background-color: transparent; -} -.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #AAAAAA; - background-color: #AA0000; - border-color: #AA0000; -} -.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(170, 0, 0, 0.5); -} - -.btn-outline-light { - color: #AAAAAA; - border-color: #AAAAAA; -} -.btn-outline-light:hover { - color: #555555; - background-color: #AAAAAA; - border-color: #AAAAAA; -} -.btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(170, 170, 170, 0.5); -} -.btn-outline-light.disabled, .btn-outline-light:disabled { - color: #AAAAAA; - background-color: transparent; -} -.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #555555; - background-color: #AAAAAA; - border-color: #AAAAAA; -} -.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(170, 170, 170, 0.5); -} - -.btn-outline-dark { - color: #555555; - border-color: #555555; -} -.btn-outline-dark:hover { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(85, 85, 85, 0.5); -} -.btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #555555; - background-color: transparent; -} -.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #AAAAAA; - background-color: #555555; - border-color: #555555; -} -.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(85, 85, 85, 0.5); -} - -.btn-link { - font-weight: 400; - color: #55FFFF; -} -.btn-link:hover { - color: #FFFF55; - text-decoration: underline; -} -.btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; -} -.btn-link:disabled, .btn-link.disabled { - color: #555555; - pointer-events: none; -} - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 2.1875rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 1.53125rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -input[type=submit].btn-block, -input[type=reset].btn-block, -input[type=button].btn-block { - width: 100%; -} - -.fade { - transition: opacity 0.15s linear; -} -@media screen and (prefers-reduced-motion: reduce) { - .fade { - transition: none; - } -} -.fade:not(.show) { - opacity: 0; -} - -.collapse:not(.show) { - display: none; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; - } -} - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; -} - -.dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1.75rem; - color: #AAAAAA; - text-align: left; - list-style: none; - background-color: #AAAAAA; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; -} - -.dropdown-menu-right { - right: 0; - left: auto; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-right { - right: 0; - left: auto; - } -} -@media (min-width: 768px) { - .dropdown-menu-md-right { - right: 0; - left: auto; - } -} -@media (min-width: 992px) { - .dropdown-menu-lg-right { - right: 0; - left: auto; - } -} -@media (min-width: 1200px) { - .dropdown-menu-xl-right { - right: 0; - left: auto; - } -} -.dropdown-menu-left { - right: auto; - left: 0; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; - } -} -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; - } -} -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; - } -} -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; - } -} -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; -} -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; -} -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} -.dropright .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropright .dropdown-toggle::after { - vertical-align: 0; -} - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; -} -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} -.dropleft .dropdown-toggle::after { - display: none; -} -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropleft .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-menu[x-placement^=top], .dropdown-menu[x-placement^=right], .dropdown-menu[x-placement^=bottom], .dropdown-menu[x-placement^=left] { - right: auto; - bottom: auto; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #AAAAAA; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #555555; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; -} -.dropdown-item:first-child { - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} -.dropdown-item:last-child { - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} -.dropdown-item:hover, .dropdown-item:focus { - color: #484848; - text-decoration: none; - background-color: #AAAAAA; -} -.dropdown-item.active, .dropdown-item:active { - color: #AAAAAA; - text-decoration: none; - background-color: #0000AA; -} -.dropdown-item.disabled, .dropdown-item:disabled { - color: #555555; - pointer-events: none; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 1.53125rem; - color: #555555; - white-space: nowrap; -} - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #555555; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover { - z-index: 1; -} -.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active { - z-index: 1; -} - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; -} -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; -} -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} -.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; -} -.dropleft .dropdown-toggle-split::before { - margin-right: 0; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - width: 100%; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; -} -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; -} -.btn-group-toggle > .btn input[type=radio], -.btn-group-toggle > .btn input[type=checkbox], -.btn-group-toggle > .btn-group > .btn input[type=radio], -.btn-group-toggle > .btn-group > .btn input[type=checkbox] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; -} -.input-group > .form-control, -.input-group > .form-control-plaintext, -.input-group > .custom-select, -.input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; -} -.input-group > .form-control + .form-control, -.input-group > .form-control + .custom-select, -.input-group > .form-control + .custom-file, -.input-group > .form-control-plaintext + .form-control, -.input-group > .form-control-plaintext + .custom-select, -.input-group > .form-control-plaintext + .custom-file, -.input-group > .custom-select + .form-control, -.input-group > .custom-select + .custom-select, -.input-group > .custom-select + .custom-file, -.input-group > .custom-file + .form-control, -.input-group > .custom-file + .custom-select, -.input-group > .custom-file + .custom-file { - margin-left: -1px; -} -.input-group > .form-control:focus, -.input-group > .custom-select:focus, -.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; -} -.input-group > .custom-file .custom-file-input:focus { - z-index: 4; -} -.input-group > .form-control:not(:last-child), -.input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .form-control:not(:first-child), -.input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group > .custom-file { - display: flex; - align-items: center; -} -.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.input-group-prepend, -.input-group-append { - display: flex; -} -.input-group-prepend .btn, -.input-group-append .btn { - position: relative; - z-index: 2; -} -.input-group-prepend .btn:focus, -.input-group-append .btn:focus { - z-index: 3; -} -.input-group-prepend .btn + .btn, -.input-group-prepend .btn + .input-group-text, -.input-group-prepend .input-group-text + .input-group-text, -.input-group-prepend .input-group-text + .btn, -.input-group-append .btn + .btn, -.input-group-append .btn + .input-group-text, -.input-group-append .input-group-text + .input-group-text, -.input-group-append .input-group-text + .btn { - margin-left: -1px; -} - -.input-group-prepend { - margin-right: -1px; -} - -.input-group-append { - margin-left: -1px; -} - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1.75rem; - font-weight: 400; - line-height: 1; - color: #555555; - text-align: center; - white-space: nowrap; - background-color: #AAAAAA; - border: 1px solid #AAAAAA; - border-radius: 0.25rem; -} -.input-group-text input[type=radio], -.input-group-text input[type=checkbox] { - margin-top: 0; -} - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(4.28125rem + 2px); -} - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 2.1875rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(2.796875rem + 2px); -} - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 1.53125rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; -} - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.custom-control { - position: relative; - display: block; - min-height: 1.75rem; - padding-left: 1.5rem; -} - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: #AAAAAA; - border-color: #0000AA; - background-color: #0000AA; -} -.custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #2b2bff; -} -.custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #AAAAAA; - background-color: #5e5eff; - border-color: #5e5eff; -} -.custom-control-input:disabled ~ .custom-control-label { - color: #555555; -} -.custom-control-input:disabled ~ .custom-control-label::before { - background-color: #AAAAAA; -} - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; -} -.custom-control-label::before { - position: absolute; - top: 0.375rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #AAAAAA; - border: #555555 solid 1px; -} -.custom-control-label::after { - position: absolute; - top: 0.375rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background-repeat: no-repeat; - background-position: center center; - background-size: 50% 50%; -} - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; -} -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23AAAAAA' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #0000AA; - background-color: #0000AA; -} -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23AAAAAA' d='M0 2h4'/%3e%3c/svg%3e"); -} -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 170, 0.5); -} -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(0, 0, 170, 0.5); -} - -.custom-radio .custom-control-label::before { - border-radius: 50%; -} -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23AAAAAA'/%3e%3c/svg%3e"); -} -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 170, 0.5); -} - -.custom-switch { - padding-left: 2.25rem; -} -.custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; -} -.custom-switch .custom-control-label::after { - top: calc(0.375rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #555555; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; - } -} -.custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #AAAAAA; - transform: translateX(0.75rem); -} -.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 170, 0.5); -} - -.custom-select { - display: inline-block; - width: 100%; - height: calc(2.5rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-weight: 400; - line-height: 1; - color: #555555; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23555555' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #AAAAAA; - border: 1px solid #AAAAAA; - border-radius: 0.25rem; - appearance: none; -} -.custom-select:focus { - border-color: #2b2bff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(43, 43, 255, 0.5); -} -.custom-select:focus::-ms-value { - color: #555555; - background-color: #AAAAAA; -} -.custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; -} -.custom-select:disabled { - color: #555555; - background-color: #AAAAAA; -} -.custom-select::-ms-expand { - opacity: 0; -} - -.custom-select-sm { - height: calc(2.796875rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 1.53125rem; -} - -.custom-select-lg { - height: calc(4.28125rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 2.1875rem; -} - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(2.5rem + 2px); - margin-bottom: 0; -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(2.5rem + 2px); - margin: 0; - opacity: 0; -} -.custom-file-input:focus ~ .custom-file-label { - border-color: #2b2bff; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.custom-file-input:disabled ~ .custom-file-label { - background-color: #AAAAAA; -} -.custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; -} -.custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(2.5rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1; - color: #555555; - background-color: #AAAAAA; - border: 1px solid #AAAAAA; - border-radius: 0.25rem; -} -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: 2.5rem; - padding: 0.375rem 0.75rem; - line-height: 1; - color: #555555; - content: "Browse"; - background-color: #AAAAAA; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; -} - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; -} -.custom-range:focus { - outline: none; -} -.custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #000, 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #000, 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #000, 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.custom-range::-moz-focus-outer { - border: 0; -} -.custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #0000AA; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; - } -} -.custom-range::-webkit-slider-thumb:active { - background-color: #5e5eff; -} -.custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #AAAAAA; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #0000AA; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; - } -} -.custom-range::-moz-range-thumb:active { - background-color: #5e5eff; -} -.custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #AAAAAA; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #0000AA; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; - } -} -.custom-range::-ms-thumb:active { - background-color: #5e5eff; -} -.custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; -} -.custom-range::-ms-fill-lower { - background-color: #AAAAAA; - border-radius: 1rem; -} -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #AAAAAA; - border-radius: 1rem; -} -.custom-range:disabled::-webkit-slider-thumb { - background-color: #555555; -} -.custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; -} -.custom-range:disabled::-moz-range-thumb { - background-color: #555555; -} -.custom-range:disabled::-moz-range-track { - cursor: default; -} -.custom-range:disabled::-ms-thumb { - background-color: #555555; -} - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-control-label::before, -.custom-file-label, -.custom-select { - transition: none; - } -} - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav-link { - display: block; - padding: 0.5rem 1rem; -} -.nav-link:hover, .nav-link:focus { - text-decoration: none; -} -.nav-link.disabled { - color: #555555; - pointer-events: none; - cursor: default; -} - -.nav-tabs { - border-bottom: 1px solid #AAAAAA; -} -.nav-tabs .nav-item { - margin-bottom: -1px; -} -.nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #AAAAAA #AAAAAA #AAAAAA; -} -.nav-tabs .nav-link.disabled { - color: #555555; - background-color: transparent; - border-color: transparent; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #555555; - background-color: #000; - border-color: #AAAAAA #AAAAAA #000; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - border-radius: 0.25rem; -} -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #AAAAAA; - background-color: #0000AA; -} - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; -} - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; -} - -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; -} -.navbar > .container, -.navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} - -.navbar-brand { - display: inline-block; - padding-top: 0.28125rem; - padding-bottom: 0.28125rem; - margin-right: 1rem; - font-size: 2.1875rem; - line-height: inherit; - white-space: nowrap; -} -.navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; -} - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} -.navbar-nav .dropdown-menu { - position: static; - float: none; -} - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 2.1875rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; -} -.navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; -} -.navbar-toggler:not(:disabled):not(.disabled) { - cursor: pointer; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; -} - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } -} -@media (max-width: 767.98px) { - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } -} -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } -} -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } -} -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; -} -.navbar-expand .navbar-nav { - flex-direction: row; -} -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} -.navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - flex-wrap: nowrap; -} -.navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; -} -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); -} -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); -} -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #AAAAAA; -} -.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #AAAAAA; -} -.navbar-dark .navbar-nav .nav-link { - color: rgba(170, 170, 170, 0.5); -} -.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(170, 170, 170, 0.75); -} -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(170, 170, 170, 0.25); -} -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #AAAAAA; -} -.navbar-dark .navbar-toggler { - color: rgba(170, 170, 170, 0.5); - border-color: rgba(170, 170, 170, 0.1); -} -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(170, 170, 170, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-dark .navbar-text { - color: rgba(170, 170, 170, 0.5); -} -.navbar-dark .navbar-text a { - color: #AAAAAA; -} -.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #AAAAAA; -} - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #0000AA; - background-clip: border-box; - border: 1px solid rgba(85, 85, 85, 0.125); - border-radius: 0.25rem; -} -.card > hr { - margin-right: 0; - margin-left: 0; -} -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; -} - -.card-title { - margin-bottom: 0.75rem; -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} -.card-link + .card-link { - margin-left: 1.25rem; -} - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - color: inherit; - background-color: rgba(85, 85, 85, 0.03); - border-bottom: 1px solid rgba(85, 85, 85, 0.125); -} -.card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; -} -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(85, 85, 85, 0.03); - border-top: 1px solid rgba(85, 85, 85, 0.125); -} -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; -} - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} - -.card-deck { - display: flex; - flex-direction: column; -} -.card-deck .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; - } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; - } -} - -.card-group { - display: flex; - flex-direction: column; -} -.card-group > .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-group { - flex-flow: row wrap; - } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; - } - .card-group > .card:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:first-child .card-img-top, -.card-group > .card:first-child .card-header { - border-top-right-radius: 0; - } - .card-group > .card:first-child .card-img-bottom, -.card-group > .card:first-child .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:last-child .card-img-top, -.card-group > .card:last-child .card-header { - border-top-left-radius: 0; - } - .card-group > .card:last-child .card-img-bottom, -.card-group > .card:last-child .card-footer { - border-bottom-left-radius: 0; - } - .card-group > .card:only-child { - border-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-top, -.card-group > .card:only-child .card-header { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-bottom, -.card-group > .card:only-child .card-footer { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { - border-radius: 0; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { - border-radius: 0; - } -} - -.card-columns .card { - margin-bottom: 0.75rem; -} -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; - } - .card-columns .card { - display: inline-block; - width: 100%; - } -} - -.accordion .card { - overflow: hidden; -} -.accordion .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; -} -.accordion .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; -} -.accordion .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.accordion .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.accordion .card .card-header { - margin-bottom: -1px; -} - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #AAAAAA; - border-radius: 0.25rem; -} - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; -} -.breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #555555; - content: "/"; -} -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; -} -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; -} -.breadcrumb-item.active { - color: #555555; -} - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; -} - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #55FFFF; - background-color: #AAAAAA; - border: 1px solid #AAAAAA; -} -.page-link:hover { - z-index: 2; - color: #FFFF55; - text-decoration: none; - background-color: #AAAAAA; - border-color: #AAAAAA; -} -.page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 170, 0.25); -} -.page-link:not(:disabled):not(.disabled) { - cursor: pointer; -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} -.page-item.active .page-link { - z-index: 1; - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} -.page-item.disabled .page-link { - color: #555555; - pointer-events: none; - cursor: auto; - background-color: #AAAAAA; - border-color: #AAAAAA; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 2.1875rem; - line-height: 1.5; -} -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 1.53125rem; - line-height: 1.5; -} -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; -} -a.badge:hover, a.badge:focus { - text-decoration: none; -} - -.badge:empty { - display: none; -} - -.btn .badge { - position: relative; - top: -1px; -} - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; -} - -.badge-primary { - color: #AAAAAA; - background-color: #0000AA; -} -a.badge-primary:hover, a.badge-primary:focus { - color: #AAAAAA; - background-color: #000077; -} - -.badge-secondary { - color: #AAAAAA; - background-color: #555555; -} -a.badge-secondary:hover, a.badge-secondary:focus { - color: #AAAAAA; - background-color: #3c3c3c; -} - -.badge-success { - color: #AAAAAA; - background-color: #00AA00; -} -a.badge-success:hover, a.badge-success:focus { - color: #AAAAAA; - background-color: #007700; -} - -.badge-info { - color: #AAAAAA; - background-color: #00AAAA; -} -a.badge-info:hover, a.badge-info:focus { - color: #AAAAAA; - background-color: #007777; -} - -.badge-warning { - color: #555555; - background-color: #FFFF55; -} -a.badge-warning:hover, a.badge-warning:focus { - color: #555555; - background-color: #ffff22; -} - -.badge-danger { - color: #AAAAAA; - background-color: #AA0000; -} -a.badge-danger:hover, a.badge-danger:focus { - color: #AAAAAA; - background-color: #770000; -} - -.badge-light { - color: #555555; - background-color: #AAAAAA; -} -a.badge-light:hover, a.badge-light:focus { - color: #555555; - background-color: #919191; -} - -.badge-dark { - color: #AAAAAA; - background-color: #555555; -} -a.badge-dark:hover, a.badge-dark:focus { - color: #AAAAAA; - background-color: #3c3c3c; -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #AAAAAA; - border-radius: 0.3rem; -} -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; -} - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 5.125rem; -} -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; -} - -.alert-primary { - color: #000058; - background-color: #8888aa; - border-color: #7a7aaa; -} -.alert-primary hr { - border-top-color: #6a6aa0; -} -.alert-primary .alert-link { - color: #000025; -} - -.alert-secondary { - color: #2c2c2c; - background-color: #999999; - border-color: #929292; -} -.alert-secondary hr { - border-top-color: #858585; -} -.alert-secondary .alert-link { - color: #131313; -} - -.alert-success { - color: #005800; - background-color: #88aa88; - border-color: #7aaa7a; -} -.alert-success hr { - border-top-color: #6aa06a; -} -.alert-success .alert-link { - color: #002500; -} - -.alert-info { - color: #005858; - background-color: #88aaaa; - border-color: #7aaaaa; -} -.alert-info hr { - border-top-color: #6aa0a0; -} -.alert-info .alert-link { - color: #002525; -} - -.alert-warning { - color: #85852c; - background-color: #bbbb99; - border-color: #c2c292; -} -.alert-warning hr { - border-top-color: #b9b982; -} -.alert-warning .alert-link { - color: #5f5f1f; -} - -.alert-danger { - color: #580000; - background-color: #aa8888; - border-color: #aa7a7a; -} -.alert-danger hr { - border-top-color: #a06a6a; -} -.alert-danger .alert-link { - color: #250000; -} - -.alert-light { - color: #585858; - background-color: #aaaaaa; - border-color: #aaaaaa; -} -.alert-light hr { - border-top-color: #9d9d9d; -} -.alert-light .alert-link { - color: #3f3f3f; -} - -.alert-dark { - color: #2c2c2c; - background-color: #999999; - border-color: #929292; -} -.alert-dark hr { - border-top-color: #858585; -} -.alert-dark .alert-link { - color: #131313; -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 1.3125rem; - background-color: #AAAAAA; - border-radius: 0.25rem; -} - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #AAAAAA; - text-align: center; - white-space: nowrap; - background-color: #0000AA; - transition: width 0.6s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(170, 170, 170, 0.15) 25%, transparent 25%, transparent 50%, rgba(170, 170, 170, 0.15) 50%, rgba(170, 170, 170, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; -} - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; -} - -.media { - display: flex; - align-items: flex-start; -} - -.media-body { - flex: 1; -} - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; -} - -.list-group-item-action { - width: 100%; - color: #555555; - text-align: inherit; -} -.list-group-item-action:hover, .list-group-item-action:focus { - color: #555555; - text-decoration: none; - background-color: #AAAAAA; -} -.list-group-item-action:active { - color: #AAAAAA; - background-color: #AAAAAA; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #AAAAAA; - border: 1px solid rgba(0, 0, 0, 0.125); -} -.list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.list-group-item:hover, .list-group-item:focus { - z-index: 1; - text-decoration: none; -} -.list-group-item.disabled, .list-group-item:disabled { - color: #555555; - pointer-events: none; - background-color: #AAAAAA; -} -.list-group-item.active { - z-index: 2; - color: #AAAAAA; - background-color: #0000AA; - border-color: #0000AA; -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px; -} -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; -} -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; -} - -.list-group-item-primary { - color: #000058; - background-color: #7a7aaa; -} -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #000058; - background-color: #6a6aa0; -} -.list-group-item-primary.list-group-item-action.active { - color: #AAAAAA; - background-color: #000058; - border-color: #000058; -} - -.list-group-item-secondary { - color: #2c2c2c; - background-color: #929292; -} -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #2c2c2c; - background-color: #858585; -} -.list-group-item-secondary.list-group-item-action.active { - color: #AAAAAA; - background-color: #2c2c2c; - border-color: #2c2c2c; -} - -.list-group-item-success { - color: #005800; - background-color: #7aaa7a; -} -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #005800; - background-color: #6aa06a; -} -.list-group-item-success.list-group-item-action.active { - color: #AAAAAA; - background-color: #005800; - border-color: #005800; -} - -.list-group-item-info { - color: #005858; - background-color: #7aaaaa; -} -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #005858; - background-color: #6aa0a0; -} -.list-group-item-info.list-group-item-action.active { - color: #AAAAAA; - background-color: #005858; - border-color: #005858; -} - -.list-group-item-warning { - color: #85852c; - background-color: #c2c292; -} -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #85852c; - background-color: #b9b982; -} -.list-group-item-warning.list-group-item-action.active { - color: #AAAAAA; - background-color: #85852c; - border-color: #85852c; -} - -.list-group-item-danger { - color: #580000; - background-color: #aa7a7a; -} -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #580000; - background-color: #a06a6a; -} -.list-group-item-danger.list-group-item-action.active { - color: #AAAAAA; - background-color: #580000; - border-color: #580000; -} - -.list-group-item-light { - color: #585858; - background-color: #aaaaaa; -} -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #585858; - background-color: #9d9d9d; -} -.list-group-item-light.list-group-item-action.active { - color: #AAAAAA; - background-color: #585858; - border-color: #585858; -} - -.list-group-item-dark { - color: #2c2c2c; - background-color: #929292; -} -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #2c2c2c; - background-color: #858585; -} -.list-group-item-dark.list-group-item-action.active { - color: #AAAAAA; - background-color: #2c2c2c; - border-color: #2c2c2c; -} - -.close { - float: right; - font-size: 2.625rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #AAAAAA; - opacity: 0.5; -} -.close:hover { - color: #000; - text-decoration: none; -} -.close:not(:disabled):not(.disabled) { - cursor: pointer; -} -.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: 0.75; -} - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; -} - -a.close.disabled { - pointer-events: none; -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(170, 170, 170, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25rem; - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; -} -.toast:not(:last-child) { - margin-bottom: 0.75rem; -} -.toast.showing { - opacity: 1; -} -.toast.show { - display: block; - opacity: 1; -} -.toast.hide { - display: none; -} - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #555555; - background-color: rgba(170, 170, 170, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.toast-body { - padding: 0.75rem; -} - -.modal-open { - overflow: hidden; -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} -.modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); -} -@media screen and (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; - } -} -.modal.show .modal-dialog { - transform: none; -} - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - (0.5rem * 2)); -} -.modal-dialog-centered::before { - display: block; - height: calc(100vh - (0.5rem * 2)); - content: ""; -} - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #AAAAAA; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #AAAAAA; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1; -} - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; -} - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #AAAAAA; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.modal-footer > :not(:first-child) { - margin-left: 0.25rem; -} -.modal-footer > :not(:last-child) { - margin-right: 0.25rem; -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - - .modal-dialog-centered { - min-height: calc(100% - (1.75rem * 2)); - } - .modal-dialog-centered::before { - height: calc(100vh - (1.75rem * 2)); - } - - .modal-sm { - max-width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg, -.modal-xl { - max-width: 800px; - } -} -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: "VGAsquarePx"; - font-style: normal; - font-weight: 400; - line-height: 1; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 1.53125rem; - word-wrap: break-word; - opacity: 0; -} -.tooltip.show { - opacity: 0.9; -} -.tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} -.tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^=top] { - padding: 0.4rem 0; -} -.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=top] .arrow { - bottom: 0; -} -.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=top] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; -} - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^=right] { - padding: 0 0.4rem; -} -.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=right] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=right] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; -} - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=bottom] { - padding: 0.4rem 0; -} -.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=bottom] .arrow { - top: 0; -} -.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=bottom] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; -} - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^=left] { - padding: 0 0.4rem; -} -.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=left] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=left] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #AAAAAA; - text-align: center; - background-color: #000; - border-radius: 0.25rem; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: "VGAsquarePx"; - font-style: normal; - font-weight: 400; - line-height: 1; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 1.53125rem; - word-wrap: break-word; - background-color: #AAAAAA; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; -} -.popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; -} -.popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-popover-top, .bs-popover-auto[x-placement^=top] { - margin-bottom: 0.5rem; -} -.bs-popover-top .arrow, .bs-popover-auto[x-placement^=top] .arrow { - bottom: calc((0.5rem + 1px) * -1); -} -.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=top] .arrow::before, -.bs-popover-top .arrow::after, -.bs-popover-auto[x-placement^=top] .arrow::after { - border-width: 0.5rem 0.5rem 0; -} -.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=top] .arrow::before { - bottom: 0; - border-top-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=top] .arrow::after { - bottom: 1px; - border-top-color: #AAAAAA; -} - -.bs-popover-right, .bs-popover-auto[x-placement^=right] { - margin-left: 0.5rem; -} -.bs-popover-right .arrow, .bs-popover-auto[x-placement^=right] .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=right] .arrow::before, -.bs-popover-right .arrow::after, -.bs-popover-auto[x-placement^=right] .arrow::after { - border-width: 0.5rem 0.5rem 0.5rem 0; -} -.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=right] .arrow::before { - left: 0; - border-right-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=right] .arrow::after { - left: 1px; - border-right-color: #AAAAAA; -} - -.bs-popover-bottom, .bs-popover-auto[x-placement^=bottom] { - margin-top: 0.5rem; -} -.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=bottom] .arrow { - top: calc((0.5rem + 1px) * -1); -} -.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=bottom] .arrow::before, -.bs-popover-bottom .arrow::after, -.bs-popover-auto[x-placement^=bottom] .arrow::after { - border-width: 0 0.5rem 0.5rem 0.5rem; -} -.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=bottom] .arrow::before { - top: 0; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=bottom] .arrow::after { - top: 1px; - border-bottom-color: #AAAAAA; -} -.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #a2a2a2; -} - -.bs-popover-left, .bs-popover-auto[x-placement^=left] { - margin-right: 0.5rem; -} -.bs-popover-left .arrow, .bs-popover-auto[x-placement^=left] .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=left] .arrow::before, -.bs-popover-left .arrow::after, -.bs-popover-auto[x-placement^=left] .arrow::after { - border-width: 0.5rem 0 0.5rem 0.5rem; -} -.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=left] .arrow::before { - right: 0; - border-left-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=left] .arrow::after { - right: 1px; - border-left-color: #AAAAAA; -} - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1.75rem; - color: inherit; - background-color: #a2a2a2; - border-bottom: 1px solid #969696; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 0.5rem 0.75rem; - color: #AAAAAA; -} - -.carousel { - position: relative; -} - -.carousel.pointer-event { - touch-action: pan-y; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner::after { - display: block; - clear: both; - content: ""; -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); -} - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; -} -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; -} -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - transition: none; - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #AAAAAA; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-control-prev, -.carousel-control-next { - transition: none; - } -} -.carousel-control-prev:hover, .carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #AAAAAA; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: transparent no-repeat center center; - background-size: 100% 100%; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23AAAAAA' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23AAAAAA' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; -} -.carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #AAAAAA; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - transition: opacity 0.6s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; - } -} -.carousel-indicators .active { - opacity: 1; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #AAAAAA; - text-align: center; -} - -@keyframes spinner-border { - to { - transform: rotate(360deg); - } -} -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border 0.75s linear infinite; -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; -} - -@keyframes spinner-grow { - 0% { - transform: scale(0); - } - 50% { - opacity: 1; - } -} -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow 0.75s linear infinite; -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.bg-primary { - background-color: #0000AA !important; -} - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #000077 !important; -} - -.bg-secondary { - background-color: #555555 !important; -} - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #3c3c3c !important; -} - -.bg-success { - background-color: #00AA00 !important; -} - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #007700 !important; -} - -.bg-info { - background-color: #00AAAA !important; -} - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #007777 !important; -} - -.bg-warning { - background-color: #FFFF55 !important; -} - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #ffff22 !important; -} - -.bg-danger { - background-color: #AA0000 !important; -} - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #770000 !important; -} - -.bg-light { - background-color: #AAAAAA !important; -} - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #919191 !important; -} - -.bg-dark { - background-color: #555555 !important; -} - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #3c3c3c !important; -} - -.bg-white { - background-color: #AAAAAA !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.border { - border: 1px solid #AAAAAA !important; -} - -.border-top { - border-top: 1px solid #AAAAAA !important; -} - -.border-right { - border-right: 1px solid #AAAAAA !important; -} - -.border-bottom { - border-bottom: 1px solid #AAAAAA !important; -} - -.border-left { - border-left: 1px solid #AAAAAA !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-right-0 { - border-right: 0 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-left-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #0000AA !important; -} - -.border-secondary { - border-color: #555555 !important; -} - -.border-success { - border-color: #00AA00 !important; -} - -.border-info { - border-color: #00AAAA !important; -} - -.border-warning { - border-color: #FFFF55 !important; -} - -.border-danger { - border-color: #AA0000 !important; -} - -.border-light { - border-color: #AAAAAA !important; -} - -.border-dark { - border-color: #555555 !important; -} - -.border-white { - border-color: #AAAAAA !important; -} - -.rounded { - border-radius: 0.25rem !important; -} - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; -} - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 50rem !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.d-none { - display: none !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; - } - - .d-sm-inline { - display: inline !important; - } - - .d-sm-inline-block { - display: inline-block !important; - } - - .d-sm-block { - display: block !important; - } - - .d-sm-table { - display: table !important; - } - - .d-sm-table-row { - display: table-row !important; - } - - .d-sm-table-cell { - display: table-cell !important; - } - - .d-sm-flex { - display: flex !important; - } - - .d-sm-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 768px) { - .d-md-none { - display: none !important; - } - - .d-md-inline { - display: inline !important; - } - - .d-md-inline-block { - display: inline-block !important; - } - - .d-md-block { - display: block !important; - } - - .d-md-table { - display: table !important; - } - - .d-md-table-row { - display: table-row !important; - } - - .d-md-table-cell { - display: table-cell !important; - } - - .d-md-flex { - display: flex !important; - } - - .d-md-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 992px) { - .d-lg-none { - display: none !important; - } - - .d-lg-inline { - display: inline !important; - } - - .d-lg-inline-block { - display: inline-block !important; - } - - .d-lg-block { - display: block !important; - } - - .d-lg-table { - display: table !important; - } - - .d-lg-table-row { - display: table-row !important; - } - - .d-lg-table-cell { - display: table-cell !important; - } - - .d-lg-flex { - display: flex !important; - } - - .d-lg-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; - } - - .d-xl-inline { - display: inline !important; - } - - .d-xl-inline-block { - display: inline-block !important; - } - - .d-xl-block { - display: block !important; - } - - .d-xl-table { - display: table !important; - } - - .d-xl-table-row { - display: table-row !important; - } - - .d-xl-table-cell { - display: table-cell !important; - } - - .d-xl-flex { - display: flex !important; - } - - .d-xl-inline-flex { - display: inline-flex !important; - } -} -@media print { - .d-print-none { - display: none !important; - } - - .d-print-inline { - display: inline !important; - } - - .d-print-inline-block { - display: inline-block !important; - } - - .d-print-block { - display: block !important; - } - - .d-print-table { - display: table !important; - } - - .d-print-table-row { - display: table-row !important; - } - - .d-print-table-cell { - display: table-cell !important; - } - - .d-print-flex { - display: flex !important; - } - - .d-print-inline-flex { - display: inline-flex !important; - } -} -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; -} -.embed-responsive::before { - display: block; - content: ""; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - -.embed-responsive-21by9::before { - padding-top: 42.8571428571%; -} - -.embed-responsive-16by9::before { - padding-top: 56.25%; -} - -.embed-responsive-3by4::before { - padding-top: 133.3333333333%; -} - -.embed-responsive-1by1::before { - padding-top: 100%; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; - } - - .flex-sm-column { - flex-direction: column !important; - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-sm-wrap { - flex-wrap: wrap !important; - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-sm-fill { - flex: 1 1 auto !important; - } - - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-sm-start { - justify-content: flex-start !important; - } - - .justify-content-sm-end { - justify-content: flex-end !important; - } - - .justify-content-sm-center { - justify-content: center !important; - } - - .justify-content-sm-between { - justify-content: space-between !important; - } - - .justify-content-sm-around { - justify-content: space-around !important; - } - - .align-items-sm-start { - align-items: flex-start !important; - } - - .align-items-sm-end { - align-items: flex-end !important; - } - - .align-items-sm-center { - align-items: center !important; - } - - .align-items-sm-baseline { - align-items: baseline !important; - } - - .align-items-sm-stretch { - align-items: stretch !important; - } - - .align-content-sm-start { - align-content: flex-start !important; - } - - .align-content-sm-end { - align-content: flex-end !important; - } - - .align-content-sm-center { - align-content: center !important; - } - - .align-content-sm-between { - align-content: space-between !important; - } - - .align-content-sm-around { - align-content: space-around !important; - } - - .align-content-sm-stretch { - align-content: stretch !important; - } - - .align-self-sm-auto { - align-self: auto !important; - } - - .align-self-sm-start { - align-self: flex-start !important; - } - - .align-self-sm-end { - align-self: flex-end !important; - } - - .align-self-sm-center { - align-self: center !important; - } - - .align-self-sm-baseline { - align-self: baseline !important; - } - - .align-self-sm-stretch { - align-self: stretch !important; - } -} -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; - } - - .flex-md-column { - flex-direction: column !important; - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-md-wrap { - flex-wrap: wrap !important; - } - - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-md-fill { - flex: 1 1 auto !important; - } - - .flex-md-grow-0 { - flex-grow: 0 !important; - } - - .flex-md-grow-1 { - flex-grow: 1 !important; - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-md-start { - justify-content: flex-start !important; - } - - .justify-content-md-end { - justify-content: flex-end !important; - } - - .justify-content-md-center { - justify-content: center !important; - } - - .justify-content-md-between { - justify-content: space-between !important; - } - - .justify-content-md-around { - justify-content: space-around !important; - } - - .align-items-md-start { - align-items: flex-start !important; - } - - .align-items-md-end { - align-items: flex-end !important; - } - - .align-items-md-center { - align-items: center !important; - } - - .align-items-md-baseline { - align-items: baseline !important; - } - - .align-items-md-stretch { - align-items: stretch !important; - } - - .align-content-md-start { - align-content: flex-start !important; - } - - .align-content-md-end { - align-content: flex-end !important; - } - - .align-content-md-center { - align-content: center !important; - } - - .align-content-md-between { - align-content: space-between !important; - } - - .align-content-md-around { - align-content: space-around !important; - } - - .align-content-md-stretch { - align-content: stretch !important; - } - - .align-self-md-auto { - align-self: auto !important; - } - - .align-self-md-start { - align-self: flex-start !important; - } - - .align-self-md-end { - align-self: flex-end !important; - } - - .align-self-md-center { - align-self: center !important; - } - - .align-self-md-baseline { - align-self: baseline !important; - } - - .align-self-md-stretch { - align-self: stretch !important; - } -} -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; - } - - .flex-lg-column { - flex-direction: column !important; - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-lg-wrap { - flex-wrap: wrap !important; - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-lg-fill { - flex: 1 1 auto !important; - } - - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-lg-start { - justify-content: flex-start !important; - } - - .justify-content-lg-end { - justify-content: flex-end !important; - } - - .justify-content-lg-center { - justify-content: center !important; - } - - .justify-content-lg-between { - justify-content: space-between !important; - } - - .justify-content-lg-around { - justify-content: space-around !important; - } - - .align-items-lg-start { - align-items: flex-start !important; - } - - .align-items-lg-end { - align-items: flex-end !important; - } - - .align-items-lg-center { - align-items: center !important; - } - - .align-items-lg-baseline { - align-items: baseline !important; - } - - .align-items-lg-stretch { - align-items: stretch !important; - } - - .align-content-lg-start { - align-content: flex-start !important; - } - - .align-content-lg-end { - align-content: flex-end !important; - } - - .align-content-lg-center { - align-content: center !important; - } - - .align-content-lg-between { - align-content: space-between !important; - } - - .align-content-lg-around { - align-content: space-around !important; - } - - .align-content-lg-stretch { - align-content: stretch !important; - } - - .align-self-lg-auto { - align-self: auto !important; - } - - .align-self-lg-start { - align-self: flex-start !important; - } - - .align-self-lg-end { - align-self: flex-end !important; - } - - .align-self-lg-center { - align-self: center !important; - } - - .align-self-lg-baseline { - align-self: baseline !important; - } - - .align-self-lg-stretch { - align-self: stretch !important; - } -} -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; - } - - .flex-xl-column { - flex-direction: column !important; - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xl-wrap { - flex-wrap: wrap !important; - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-xl-fill { - flex: 1 1 auto !important; - } - - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-xl-start { - justify-content: flex-start !important; - } - - .justify-content-xl-end { - justify-content: flex-end !important; - } - - .justify-content-xl-center { - justify-content: center !important; - } - - .justify-content-xl-between { - justify-content: space-between !important; - } - - .justify-content-xl-around { - justify-content: space-around !important; - } - - .align-items-xl-start { - align-items: flex-start !important; - } - - .align-items-xl-end { - align-items: flex-end !important; - } - - .align-items-xl-center { - align-items: center !important; - } - - .align-items-xl-baseline { - align-items: baseline !important; - } - - .align-items-xl-stretch { - align-items: stretch !important; - } - - .align-content-xl-start { - align-content: flex-start !important; - } - - .align-content-xl-end { - align-content: flex-end !important; - } - - .align-content-xl-center { - align-content: center !important; - } - - .align-content-xl-between { - align-content: space-between !important; - } - - .align-content-xl-around { - align-content: space-around !important; - } - - .align-content-xl-stretch { - align-content: stretch !important; - } - - .align-self-xl-auto { - align-self: auto !important; - } - - .align-self-xl-start { - align-self: flex-start !important; - } - - .align-self-xl-end { - align-self: flex-end !important; - } - - .align-self-xl-center { - align-self: center !important; - } - - .align-self-xl-baseline { - align-self: baseline !important; - } - - .align-self-xl-stretch { - align-self: stretch !important; - } -} -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.float-none { - float: none !important; -} - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; - } - - .float-sm-right { - float: right !important; - } - - .float-sm-none { - float: none !important; - } -} -@media (min-width: 768px) { - .float-md-left { - float: left !important; - } - - .float-md-right { - float: right !important; - } - - .float-md-none { - float: none !important; - } -} -@media (min-width: 992px) { - .float-lg-left { - float: left !important; - } - - .float-lg-right { - float: right !important; - } - - .float-lg-none { - float: none !important; - } -} -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; - } - - .float-xl-right { - float: right !important; - } - - .float-xl-none { - float: none !important; - } -} -.overflow-auto { - overflow: auto !important; -} - -.overflow-hidden { - overflow: hidden !important; -} - -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: sticky !important; -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; -} - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none { - box-shadow: none !important; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.w-auto { - width: auto !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.h-auto { - height: auto !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.min-vw-100 { - min-width: 100vw !important; -} - -.min-vh-100 { - min-height: 100vh !important; -} - -.vw-100 { - width: 100vw !important; -} - -.vh-100 { - height: 100vh !important; -} - -.m-0 { - margin: 0 !important; -} - -.mt-0, -.my-0 { - margin-top: 0 !important; -} - -.mr-0, -.mx-0 { - margin-right: 0 !important; -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} - -.ml-0, -.mx-0 { - margin-left: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.mt-3, -.my-3 { - margin-top: 1rem !important; -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.mt-5, -.my-5 { - margin-top: 3rem !important; -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0, -.py-0 { - padding-top: 0 !important; -} - -.pr-0, -.px-0 { - padding-right: 0 !important; -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} - -.pl-0, -.px-0 { - padding-left: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.pt-3, -.py-3 { - padding-top: 1rem !important; -} - -.pr-3, -.px-3 { - padding-right: 1rem !important; -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} - -.pl-3, -.px-3 { - padding-left: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.pt-5, -.py-5 { - padding-top: 3rem !important; -} - -.pr-5, -.px-5 { - padding-right: 3rem !important; -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} - -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -.m-n1 { - margin: -0.25rem !important; -} - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; -} - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; -} - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; -} - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; -} - -.m-n2 { - margin: -0.5rem !important; -} - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; -} - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; -} - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; -} - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; -} - -.m-n3 { - margin: -1rem !important; -} - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; -} - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; -} - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; -} - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; -} - -.m-n4 { - margin: -1.5rem !important; -} - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; -} - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; -} - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; -} - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; -} - -.m-n5 { - margin: -3rem !important; -} - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; -} - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; -} - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; -} - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mt-auto, -.my-auto { - margin-top: auto !important; -} - -.mr-auto, -.mx-auto { - margin-right: auto !important; -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important; -} - -.ml-auto, -.mx-auto { - margin-left: auto !important; -} - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; - } - - .mt-sm-0, -.my-sm-0 { - margin-top: 0 !important; - } - - .mr-sm-0, -.mx-sm-0 { - margin-right: 0 !important; - } - - .mb-sm-0, -.my-sm-0 { - margin-bottom: 0 !important; - } - - .ml-sm-0, -.mx-sm-0 { - margin-left: 0 !important; - } - - .m-sm-1 { - margin: 0.25rem !important; - } - - .mt-sm-1, -.my-sm-1 { - margin-top: 0.25rem !important; - } - - .mr-sm-1, -.mx-sm-1 { - margin-right: 0.25rem !important; - } - - .mb-sm-1, -.my-sm-1 { - margin-bottom: 0.25rem !important; - } - - .ml-sm-1, -.mx-sm-1 { - margin-left: 0.25rem !important; - } - - .m-sm-2 { - margin: 0.5rem !important; - } - - .mt-sm-2, -.my-sm-2 { - margin-top: 0.5rem !important; - } - - .mr-sm-2, -.mx-sm-2 { - margin-right: 0.5rem !important; - } - - .mb-sm-2, -.my-sm-2 { - margin-bottom: 0.5rem !important; - } - - .ml-sm-2, -.mx-sm-2 { - margin-left: 0.5rem !important; - } - - .m-sm-3 { - margin: 1rem !important; - } - - .mt-sm-3, -.my-sm-3 { - margin-top: 1rem !important; - } - - .mr-sm-3, -.mx-sm-3 { - margin-right: 1rem !important; - } - - .mb-sm-3, -.my-sm-3 { - margin-bottom: 1rem !important; - } - - .ml-sm-3, -.mx-sm-3 { - margin-left: 1rem !important; - } - - .m-sm-4 { - margin: 1.5rem !important; - } - - .mt-sm-4, -.my-sm-4 { - margin-top: 1.5rem !important; - } - - .mr-sm-4, -.mx-sm-4 { - margin-right: 1.5rem !important; - } - - .mb-sm-4, -.my-sm-4 { - margin-bottom: 1.5rem !important; - } - - .ml-sm-4, -.mx-sm-4 { - margin-left: 1.5rem !important; - } - - .m-sm-5 { - margin: 3rem !important; - } - - .mt-sm-5, -.my-sm-5 { - margin-top: 3rem !important; - } - - .mr-sm-5, -.mx-sm-5 { - margin-right: 3rem !important; - } - - .mb-sm-5, -.my-sm-5 { - margin-bottom: 3rem !important; - } - - .ml-sm-5, -.mx-sm-5 { - margin-left: 3rem !important; - } - - .p-sm-0 { - padding: 0 !important; - } - - .pt-sm-0, -.py-sm-0 { - padding-top: 0 !important; - } - - .pr-sm-0, -.px-sm-0 { - padding-right: 0 !important; - } - - .pb-sm-0, -.py-sm-0 { - padding-bottom: 0 !important; - } - - .pl-sm-0, -.px-sm-0 { - padding-left: 0 !important; - } - - .p-sm-1 { - padding: 0.25rem !important; - } - - .pt-sm-1, -.py-sm-1 { - padding-top: 0.25rem !important; - } - - .pr-sm-1, -.px-sm-1 { - padding-right: 0.25rem !important; - } - - .pb-sm-1, -.py-sm-1 { - padding-bottom: 0.25rem !important; - } - - .pl-sm-1, -.px-sm-1 { - padding-left: 0.25rem !important; - } - - .p-sm-2 { - padding: 0.5rem !important; - } - - .pt-sm-2, -.py-sm-2 { - padding-top: 0.5rem !important; - } - - .pr-sm-2, -.px-sm-2 { - padding-right: 0.5rem !important; - } - - .pb-sm-2, -.py-sm-2 { - padding-bottom: 0.5rem !important; - } - - .pl-sm-2, -.px-sm-2 { - padding-left: 0.5rem !important; - } - - .p-sm-3 { - padding: 1rem !important; - } - - .pt-sm-3, -.py-sm-3 { - padding-top: 1rem !important; - } - - .pr-sm-3, -.px-sm-3 { - padding-right: 1rem !important; - } - - .pb-sm-3, -.py-sm-3 { - padding-bottom: 1rem !important; - } - - .pl-sm-3, -.px-sm-3 { - padding-left: 1rem !important; - } - - .p-sm-4 { - padding: 1.5rem !important; - } - - .pt-sm-4, -.py-sm-4 { - padding-top: 1.5rem !important; - } - - .pr-sm-4, -.px-sm-4 { - padding-right: 1.5rem !important; - } - - .pb-sm-4, -.py-sm-4 { - padding-bottom: 1.5rem !important; - } - - .pl-sm-4, -.px-sm-4 { - padding-left: 1.5rem !important; - } - - .p-sm-5 { - padding: 3rem !important; - } - - .pt-sm-5, -.py-sm-5 { - padding-top: 3rem !important; - } - - .pr-sm-5, -.px-sm-5 { - padding-right: 3rem !important; - } - - .pb-sm-5, -.py-sm-5 { - padding-bottom: 3rem !important; - } - - .pl-sm-5, -.px-sm-5 { - padding-left: 3rem !important; - } - - .m-sm-n1 { - margin: -0.25rem !important; - } - - .mt-sm-n1, -.my-sm-n1 { - margin-top: -0.25rem !important; - } - - .mr-sm-n1, -.mx-sm-n1 { - margin-right: -0.25rem !important; - } - - .mb-sm-n1, -.my-sm-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-sm-n1, -.mx-sm-n1 { - margin-left: -0.25rem !important; - } - - .m-sm-n2 { - margin: -0.5rem !important; - } - - .mt-sm-n2, -.my-sm-n2 { - margin-top: -0.5rem !important; - } - - .mr-sm-n2, -.mx-sm-n2 { - margin-right: -0.5rem !important; - } - - .mb-sm-n2, -.my-sm-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-sm-n2, -.mx-sm-n2 { - margin-left: -0.5rem !important; - } - - .m-sm-n3 { - margin: -1rem !important; - } - - .mt-sm-n3, -.my-sm-n3 { - margin-top: -1rem !important; - } - - .mr-sm-n3, -.mx-sm-n3 { - margin-right: -1rem !important; - } - - .mb-sm-n3, -.my-sm-n3 { - margin-bottom: -1rem !important; - } - - .ml-sm-n3, -.mx-sm-n3 { - margin-left: -1rem !important; - } - - .m-sm-n4 { - margin: -1.5rem !important; - } - - .mt-sm-n4, -.my-sm-n4 { - margin-top: -1.5rem !important; - } - - .mr-sm-n4, -.mx-sm-n4 { - margin-right: -1.5rem !important; - } - - .mb-sm-n4, -.my-sm-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-sm-n4, -.mx-sm-n4 { - margin-left: -1.5rem !important; - } - - .m-sm-n5 { - margin: -3rem !important; - } - - .mt-sm-n5, -.my-sm-n5 { - margin-top: -3rem !important; - } - - .mr-sm-n5, -.mx-sm-n5 { - margin-right: -3rem !important; - } - - .mb-sm-n5, -.my-sm-n5 { - margin-bottom: -3rem !important; - } - - .ml-sm-n5, -.mx-sm-n5 { - margin-left: -3rem !important; - } - - .m-sm-auto { - margin: auto !important; - } - - .mt-sm-auto, -.my-sm-auto { - margin-top: auto !important; - } - - .mr-sm-auto, -.mx-sm-auto { - margin-right: auto !important; - } - - .mb-sm-auto, -.my-sm-auto { - margin-bottom: auto !important; - } - - .ml-sm-auto, -.mx-sm-auto { - margin-left: auto !important; - } -} -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; - } - - .mt-md-0, -.my-md-0 { - margin-top: 0 !important; - } - - .mr-md-0, -.mx-md-0 { - margin-right: 0 !important; - } - - .mb-md-0, -.my-md-0 { - margin-bottom: 0 !important; - } - - .ml-md-0, -.mx-md-0 { - margin-left: 0 !important; - } - - .m-md-1 { - margin: 0.25rem !important; - } - - .mt-md-1, -.my-md-1 { - margin-top: 0.25rem !important; - } - - .mr-md-1, -.mx-md-1 { - margin-right: 0.25rem !important; - } - - .mb-md-1, -.my-md-1 { - margin-bottom: 0.25rem !important; - } - - .ml-md-1, -.mx-md-1 { - margin-left: 0.25rem !important; - } - - .m-md-2 { - margin: 0.5rem !important; - } - - .mt-md-2, -.my-md-2 { - margin-top: 0.5rem !important; - } - - .mr-md-2, -.mx-md-2 { - margin-right: 0.5rem !important; - } - - .mb-md-2, -.my-md-2 { - margin-bottom: 0.5rem !important; - } - - .ml-md-2, -.mx-md-2 { - margin-left: 0.5rem !important; - } - - .m-md-3 { - margin: 1rem !important; - } - - .mt-md-3, -.my-md-3 { - margin-top: 1rem !important; - } - - .mr-md-3, -.mx-md-3 { - margin-right: 1rem !important; - } - - .mb-md-3, -.my-md-3 { - margin-bottom: 1rem !important; - } - - .ml-md-3, -.mx-md-3 { - margin-left: 1rem !important; - } - - .m-md-4 { - margin: 1.5rem !important; - } - - .mt-md-4, -.my-md-4 { - margin-top: 1.5rem !important; - } - - .mr-md-4, -.mx-md-4 { - margin-right: 1.5rem !important; - } - - .mb-md-4, -.my-md-4 { - margin-bottom: 1.5rem !important; - } - - .ml-md-4, -.mx-md-4 { - margin-left: 1.5rem !important; - } - - .m-md-5 { - margin: 3rem !important; - } - - .mt-md-5, -.my-md-5 { - margin-top: 3rem !important; - } - - .mr-md-5, -.mx-md-5 { - margin-right: 3rem !important; - } - - .mb-md-5, -.my-md-5 { - margin-bottom: 3rem !important; - } - - .ml-md-5, -.mx-md-5 { - margin-left: 3rem !important; - } - - .p-md-0 { - padding: 0 !important; - } - - .pt-md-0, -.py-md-0 { - padding-top: 0 !important; - } - - .pr-md-0, -.px-md-0 { - padding-right: 0 !important; - } - - .pb-md-0, -.py-md-0 { - padding-bottom: 0 !important; - } - - .pl-md-0, -.px-md-0 { - padding-left: 0 !important; - } - - .p-md-1 { - padding: 0.25rem !important; - } - - .pt-md-1, -.py-md-1 { - padding-top: 0.25rem !important; - } - - .pr-md-1, -.px-md-1 { - padding-right: 0.25rem !important; - } - - .pb-md-1, -.py-md-1 { - padding-bottom: 0.25rem !important; - } - - .pl-md-1, -.px-md-1 { - padding-left: 0.25rem !important; - } - - .p-md-2 { - padding: 0.5rem !important; - } - - .pt-md-2, -.py-md-2 { - padding-top: 0.5rem !important; - } - - .pr-md-2, -.px-md-2 { - padding-right: 0.5rem !important; - } - - .pb-md-2, -.py-md-2 { - padding-bottom: 0.5rem !important; - } - - .pl-md-2, -.px-md-2 { - padding-left: 0.5rem !important; - } - - .p-md-3 { - padding: 1rem !important; - } - - .pt-md-3, -.py-md-3 { - padding-top: 1rem !important; - } - - .pr-md-3, -.px-md-3 { - padding-right: 1rem !important; - } - - .pb-md-3, -.py-md-3 { - padding-bottom: 1rem !important; - } - - .pl-md-3, -.px-md-3 { - padding-left: 1rem !important; - } - - .p-md-4 { - padding: 1.5rem !important; - } - - .pt-md-4, -.py-md-4 { - padding-top: 1.5rem !important; - } - - .pr-md-4, -.px-md-4 { - padding-right: 1.5rem !important; - } - - .pb-md-4, -.py-md-4 { - padding-bottom: 1.5rem !important; - } - - .pl-md-4, -.px-md-4 { - padding-left: 1.5rem !important; - } - - .p-md-5 { - padding: 3rem !important; - } - - .pt-md-5, -.py-md-5 { - padding-top: 3rem !important; - } - - .pr-md-5, -.px-md-5 { - padding-right: 3rem !important; - } - - .pb-md-5, -.py-md-5 { - padding-bottom: 3rem !important; - } - - .pl-md-5, -.px-md-5 { - padding-left: 3rem !important; - } - - .m-md-n1 { - margin: -0.25rem !important; - } - - .mt-md-n1, -.my-md-n1 { - margin-top: -0.25rem !important; - } - - .mr-md-n1, -.mx-md-n1 { - margin-right: -0.25rem !important; - } - - .mb-md-n1, -.my-md-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-md-n1, -.mx-md-n1 { - margin-left: -0.25rem !important; - } - - .m-md-n2 { - margin: -0.5rem !important; - } - - .mt-md-n2, -.my-md-n2 { - margin-top: -0.5rem !important; - } - - .mr-md-n2, -.mx-md-n2 { - margin-right: -0.5rem !important; - } - - .mb-md-n2, -.my-md-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-md-n2, -.mx-md-n2 { - margin-left: -0.5rem !important; - } - - .m-md-n3 { - margin: -1rem !important; - } - - .mt-md-n3, -.my-md-n3 { - margin-top: -1rem !important; - } - - .mr-md-n3, -.mx-md-n3 { - margin-right: -1rem !important; - } - - .mb-md-n3, -.my-md-n3 { - margin-bottom: -1rem !important; - } - - .ml-md-n3, -.mx-md-n3 { - margin-left: -1rem !important; - } - - .m-md-n4 { - margin: -1.5rem !important; - } - - .mt-md-n4, -.my-md-n4 { - margin-top: -1.5rem !important; - } - - .mr-md-n4, -.mx-md-n4 { - margin-right: -1.5rem !important; - } - - .mb-md-n4, -.my-md-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-md-n4, -.mx-md-n4 { - margin-left: -1.5rem !important; - } - - .m-md-n5 { - margin: -3rem !important; - } - - .mt-md-n5, -.my-md-n5 { - margin-top: -3rem !important; - } - - .mr-md-n5, -.mx-md-n5 { - margin-right: -3rem !important; - } - - .mb-md-n5, -.my-md-n5 { - margin-bottom: -3rem !important; - } - - .ml-md-n5, -.mx-md-n5 { - margin-left: -3rem !important; - } - - .m-md-auto { - margin: auto !important; - } - - .mt-md-auto, -.my-md-auto { - margin-top: auto !important; - } - - .mr-md-auto, -.mx-md-auto { - margin-right: auto !important; - } - - .mb-md-auto, -.my-md-auto { - margin-bottom: auto !important; - } - - .ml-md-auto, -.mx-md-auto { - margin-left: auto !important; - } -} -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; - } - - .mt-lg-0, -.my-lg-0 { - margin-top: 0 !important; - } - - .mr-lg-0, -.mx-lg-0 { - margin-right: 0 !important; - } - - .mb-lg-0, -.my-lg-0 { - margin-bottom: 0 !important; - } - - .ml-lg-0, -.mx-lg-0 { - margin-left: 0 !important; - } - - .m-lg-1 { - margin: 0.25rem !important; - } - - .mt-lg-1, -.my-lg-1 { - margin-top: 0.25rem !important; - } - - .mr-lg-1, -.mx-lg-1 { - margin-right: 0.25rem !important; - } - - .mb-lg-1, -.my-lg-1 { - margin-bottom: 0.25rem !important; - } - - .ml-lg-1, -.mx-lg-1 { - margin-left: 0.25rem !important; - } - - .m-lg-2 { - margin: 0.5rem !important; - } - - .mt-lg-2, -.my-lg-2 { - margin-top: 0.5rem !important; - } - - .mr-lg-2, -.mx-lg-2 { - margin-right: 0.5rem !important; - } - - .mb-lg-2, -.my-lg-2 { - margin-bottom: 0.5rem !important; - } - - .ml-lg-2, -.mx-lg-2 { - margin-left: 0.5rem !important; - } - - .m-lg-3 { - margin: 1rem !important; - } - - .mt-lg-3, -.my-lg-3 { - margin-top: 1rem !important; - } - - .mr-lg-3, -.mx-lg-3 { - margin-right: 1rem !important; - } - - .mb-lg-3, -.my-lg-3 { - margin-bottom: 1rem !important; - } - - .ml-lg-3, -.mx-lg-3 { - margin-left: 1rem !important; - } - - .m-lg-4 { - margin: 1.5rem !important; - } - - .mt-lg-4, -.my-lg-4 { - margin-top: 1.5rem !important; - } - - .mr-lg-4, -.mx-lg-4 { - margin-right: 1.5rem !important; - } - - .mb-lg-4, -.my-lg-4 { - margin-bottom: 1.5rem !important; - } - - .ml-lg-4, -.mx-lg-4 { - margin-left: 1.5rem !important; - } - - .m-lg-5 { - margin: 3rem !important; - } - - .mt-lg-5, -.my-lg-5 { - margin-top: 3rem !important; - } - - .mr-lg-5, -.mx-lg-5 { - margin-right: 3rem !important; - } - - .mb-lg-5, -.my-lg-5 { - margin-bottom: 3rem !important; - } - - .ml-lg-5, -.mx-lg-5 { - margin-left: 3rem !important; - } - - .p-lg-0 { - padding: 0 !important; - } - - .pt-lg-0, -.py-lg-0 { - padding-top: 0 !important; - } - - .pr-lg-0, -.px-lg-0 { - padding-right: 0 !important; - } - - .pb-lg-0, -.py-lg-0 { - padding-bottom: 0 !important; - } - - .pl-lg-0, -.px-lg-0 { - padding-left: 0 !important; - } - - .p-lg-1 { - padding: 0.25rem !important; - } - - .pt-lg-1, -.py-lg-1 { - padding-top: 0.25rem !important; - } - - .pr-lg-1, -.px-lg-1 { - padding-right: 0.25rem !important; - } - - .pb-lg-1, -.py-lg-1 { - padding-bottom: 0.25rem !important; - } - - .pl-lg-1, -.px-lg-1 { - padding-left: 0.25rem !important; - } - - .p-lg-2 { - padding: 0.5rem !important; - } - - .pt-lg-2, -.py-lg-2 { - padding-top: 0.5rem !important; - } - - .pr-lg-2, -.px-lg-2 { - padding-right: 0.5rem !important; - } - - .pb-lg-2, -.py-lg-2 { - padding-bottom: 0.5rem !important; - } - - .pl-lg-2, -.px-lg-2 { - padding-left: 0.5rem !important; - } - - .p-lg-3 { - padding: 1rem !important; - } - - .pt-lg-3, -.py-lg-3 { - padding-top: 1rem !important; - } - - .pr-lg-3, -.px-lg-3 { - padding-right: 1rem !important; - } - - .pb-lg-3, -.py-lg-3 { - padding-bottom: 1rem !important; - } - - .pl-lg-3, -.px-lg-3 { - padding-left: 1rem !important; - } - - .p-lg-4 { - padding: 1.5rem !important; - } - - .pt-lg-4, -.py-lg-4 { - padding-top: 1.5rem !important; - } - - .pr-lg-4, -.px-lg-4 { - padding-right: 1.5rem !important; - } - - .pb-lg-4, -.py-lg-4 { - padding-bottom: 1.5rem !important; - } - - .pl-lg-4, -.px-lg-4 { - padding-left: 1.5rem !important; - } - - .p-lg-5 { - padding: 3rem !important; - } - - .pt-lg-5, -.py-lg-5 { - padding-top: 3rem !important; - } - - .pr-lg-5, -.px-lg-5 { - padding-right: 3rem !important; - } - - .pb-lg-5, -.py-lg-5 { - padding-bottom: 3rem !important; - } - - .pl-lg-5, -.px-lg-5 { - padding-left: 3rem !important; - } - - .m-lg-n1 { - margin: -0.25rem !important; - } - - .mt-lg-n1, -.my-lg-n1 { - margin-top: -0.25rem !important; - } - - .mr-lg-n1, -.mx-lg-n1 { - margin-right: -0.25rem !important; - } - - .mb-lg-n1, -.my-lg-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-lg-n1, -.mx-lg-n1 { - margin-left: -0.25rem !important; - } - - .m-lg-n2 { - margin: -0.5rem !important; - } - - .mt-lg-n2, -.my-lg-n2 { - margin-top: -0.5rem !important; - } - - .mr-lg-n2, -.mx-lg-n2 { - margin-right: -0.5rem !important; - } - - .mb-lg-n2, -.my-lg-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-lg-n2, -.mx-lg-n2 { - margin-left: -0.5rem !important; - } - - .m-lg-n3 { - margin: -1rem !important; - } - - .mt-lg-n3, -.my-lg-n3 { - margin-top: -1rem !important; - } - - .mr-lg-n3, -.mx-lg-n3 { - margin-right: -1rem !important; - } - - .mb-lg-n3, -.my-lg-n3 { - margin-bottom: -1rem !important; - } - - .ml-lg-n3, -.mx-lg-n3 { - margin-left: -1rem !important; - } - - .m-lg-n4 { - margin: -1.5rem !important; - } - - .mt-lg-n4, -.my-lg-n4 { - margin-top: -1.5rem !important; - } - - .mr-lg-n4, -.mx-lg-n4 { - margin-right: -1.5rem !important; - } - - .mb-lg-n4, -.my-lg-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-lg-n4, -.mx-lg-n4 { - margin-left: -1.5rem !important; - } - - .m-lg-n5 { - margin: -3rem !important; - } - - .mt-lg-n5, -.my-lg-n5 { - margin-top: -3rem !important; - } - - .mr-lg-n5, -.mx-lg-n5 { - margin-right: -3rem !important; - } - - .mb-lg-n5, -.my-lg-n5 { - margin-bottom: -3rem !important; - } - - .ml-lg-n5, -.mx-lg-n5 { - margin-left: -3rem !important; - } - - .m-lg-auto { - margin: auto !important; - } - - .mt-lg-auto, -.my-lg-auto { - margin-top: auto !important; - } - - .mr-lg-auto, -.mx-lg-auto { - margin-right: auto !important; - } - - .mb-lg-auto, -.my-lg-auto { - margin-bottom: auto !important; - } - - .ml-lg-auto, -.mx-lg-auto { - margin-left: auto !important; - } -} -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; - } - - .mt-xl-0, -.my-xl-0 { - margin-top: 0 !important; - } - - .mr-xl-0, -.mx-xl-0 { - margin-right: 0 !important; - } - - .mb-xl-0, -.my-xl-0 { - margin-bottom: 0 !important; - } - - .ml-xl-0, -.mx-xl-0 { - margin-left: 0 !important; - } - - .m-xl-1 { - margin: 0.25rem !important; - } - - .mt-xl-1, -.my-xl-1 { - margin-top: 0.25rem !important; - } - - .mr-xl-1, -.mx-xl-1 { - margin-right: 0.25rem !important; - } - - .mb-xl-1, -.my-xl-1 { - margin-bottom: 0.25rem !important; - } - - .ml-xl-1, -.mx-xl-1 { - margin-left: 0.25rem !important; - } - - .m-xl-2 { - margin: 0.5rem !important; - } - - .mt-xl-2, -.my-xl-2 { - margin-top: 0.5rem !important; - } - - .mr-xl-2, -.mx-xl-2 { - margin-right: 0.5rem !important; - } - - .mb-xl-2, -.my-xl-2 { - margin-bottom: 0.5rem !important; - } - - .ml-xl-2, -.mx-xl-2 { - margin-left: 0.5rem !important; - } - - .m-xl-3 { - margin: 1rem !important; - } - - .mt-xl-3, -.my-xl-3 { - margin-top: 1rem !important; - } - - .mr-xl-3, -.mx-xl-3 { - margin-right: 1rem !important; - } - - .mb-xl-3, -.my-xl-3 { - margin-bottom: 1rem !important; - } - - .ml-xl-3, -.mx-xl-3 { - margin-left: 1rem !important; - } - - .m-xl-4 { - margin: 1.5rem !important; - } - - .mt-xl-4, -.my-xl-4 { - margin-top: 1.5rem !important; - } - - .mr-xl-4, -.mx-xl-4 { - margin-right: 1.5rem !important; - } - - .mb-xl-4, -.my-xl-4 { - margin-bottom: 1.5rem !important; - } - - .ml-xl-4, -.mx-xl-4 { - margin-left: 1.5rem !important; - } - - .m-xl-5 { - margin: 3rem !important; - } - - .mt-xl-5, -.my-xl-5 { - margin-top: 3rem !important; - } - - .mr-xl-5, -.mx-xl-5 { - margin-right: 3rem !important; - } - - .mb-xl-5, -.my-xl-5 { - margin-bottom: 3rem !important; - } - - .ml-xl-5, -.mx-xl-5 { - margin-left: 3rem !important; - } - - .p-xl-0 { - padding: 0 !important; - } - - .pt-xl-0, -.py-xl-0 { - padding-top: 0 !important; - } - - .pr-xl-0, -.px-xl-0 { - padding-right: 0 !important; - } - - .pb-xl-0, -.py-xl-0 { - padding-bottom: 0 !important; - } - - .pl-xl-0, -.px-xl-0 { - padding-left: 0 !important; - } - - .p-xl-1 { - padding: 0.25rem !important; - } - - .pt-xl-1, -.py-xl-1 { - padding-top: 0.25rem !important; - } - - .pr-xl-1, -.px-xl-1 { - padding-right: 0.25rem !important; - } - - .pb-xl-1, -.py-xl-1 { - padding-bottom: 0.25rem !important; - } - - .pl-xl-1, -.px-xl-1 { - padding-left: 0.25rem !important; - } - - .p-xl-2 { - padding: 0.5rem !important; - } - - .pt-xl-2, -.py-xl-2 { - padding-top: 0.5rem !important; - } - - .pr-xl-2, -.px-xl-2 { - padding-right: 0.5rem !important; - } - - .pb-xl-2, -.py-xl-2 { - padding-bottom: 0.5rem !important; - } - - .pl-xl-2, -.px-xl-2 { - padding-left: 0.5rem !important; - } - - .p-xl-3 { - padding: 1rem !important; - } - - .pt-xl-3, -.py-xl-3 { - padding-top: 1rem !important; - } - - .pr-xl-3, -.px-xl-3 { - padding-right: 1rem !important; - } - - .pb-xl-3, -.py-xl-3 { - padding-bottom: 1rem !important; - } - - .pl-xl-3, -.px-xl-3 { - padding-left: 1rem !important; - } - - .p-xl-4 { - padding: 1.5rem !important; - } - - .pt-xl-4, -.py-xl-4 { - padding-top: 1.5rem !important; - } - - .pr-xl-4, -.px-xl-4 { - padding-right: 1.5rem !important; - } - - .pb-xl-4, -.py-xl-4 { - padding-bottom: 1.5rem !important; - } - - .pl-xl-4, -.px-xl-4 { - padding-left: 1.5rem !important; - } - - .p-xl-5 { - padding: 3rem !important; - } - - .pt-xl-5, -.py-xl-5 { - padding-top: 3rem !important; - } - - .pr-xl-5, -.px-xl-5 { - padding-right: 3rem !important; - } - - .pb-xl-5, -.py-xl-5 { - padding-bottom: 3rem !important; - } - - .pl-xl-5, -.px-xl-5 { - padding-left: 3rem !important; - } - - .m-xl-n1 { - margin: -0.25rem !important; - } - - .mt-xl-n1, -.my-xl-n1 { - margin-top: -0.25rem !important; - } - - .mr-xl-n1, -.mx-xl-n1 { - margin-right: -0.25rem !important; - } - - .mb-xl-n1, -.my-xl-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-xl-n1, -.mx-xl-n1 { - margin-left: -0.25rem !important; - } - - .m-xl-n2 { - margin: -0.5rem !important; - } - - .mt-xl-n2, -.my-xl-n2 { - margin-top: -0.5rem !important; - } - - .mr-xl-n2, -.mx-xl-n2 { - margin-right: -0.5rem !important; - } - - .mb-xl-n2, -.my-xl-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-xl-n2, -.mx-xl-n2 { - margin-left: -0.5rem !important; - } - - .m-xl-n3 { - margin: -1rem !important; - } - - .mt-xl-n3, -.my-xl-n3 { - margin-top: -1rem !important; - } - - .mr-xl-n3, -.mx-xl-n3 { - margin-right: -1rem !important; - } - - .mb-xl-n3, -.my-xl-n3 { - margin-bottom: -1rem !important; - } - - .ml-xl-n3, -.mx-xl-n3 { - margin-left: -1rem !important; - } - - .m-xl-n4 { - margin: -1.5rem !important; - } - - .mt-xl-n4, -.my-xl-n4 { - margin-top: -1.5rem !important; - } - - .mr-xl-n4, -.mx-xl-n4 { - margin-right: -1.5rem !important; - } - - .mb-xl-n4, -.my-xl-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-xl-n4, -.mx-xl-n4 { - margin-left: -1.5rem !important; - } - - .m-xl-n5 { - margin: -3rem !important; - } - - .mt-xl-n5, -.my-xl-n5 { - margin-top: -3rem !important; - } - - .mr-xl-n5, -.mx-xl-n5 { - margin-right: -3rem !important; - } - - .mb-xl-n5, -.my-xl-n5 { - margin-bottom: -3rem !important; - } - - .ml-xl-n5, -.mx-xl-n5 { - margin-left: -3rem !important; - } - - .m-xl-auto { - margin: auto !important; - } - - .mt-xl-auto, -.my-xl-auto { - margin-top: auto !important; - } - - .mr-xl-auto, -.mx-xl-auto { - margin-right: auto !important; - } - - .mb-xl-auto, -.my-xl-auto { - margin-bottom: auto !important; - } - - .ml-xl-auto, -.mx-xl-auto { - margin-left: auto !important; - } -} -.text-monospace { - font-family: "VGAsquarePx"; -} - -.text-justify { - text-align: justify !important; -} - -.text-wrap { - white-space: normal !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; - } - - .text-sm-right { - text-align: right !important; - } - - .text-sm-center { - text-align: center !important; - } -} -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; - } - - .text-md-right { - text-align: right !important; - } - - .text-md-center { - text-align: center !important; - } -} -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; - } - - .text-lg-right { - text-align: right !important; - } - - .text-lg-center { - text-align: center !important; - } -} -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; - } - - .text-xl-right { - text-align: right !important; - } - - .text-xl-center { - text-align: center !important; - } -} -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.font-weight-light { - font-weight: 300 !important; -} - -.font-weight-lighter { - font-weight: lighter !important; -} - -.font-weight-normal { - font-weight: 400 !important; -} - -.font-weight-bold { - font-weight: 700 !important; -} - -.font-weight-bolder { - font-weight: bolder !important; -} - -.font-italic { - font-style: italic !important; -} - -.text-white { - color: #AAAAAA !important; -} - -.text-primary { - color: #0000AA !important; -} - -a.text-primary:hover, a.text-primary:focus { - color: #00005e !important; -} - -.text-secondary { - color: #555555 !important; -} - -a.text-secondary:hover, a.text-secondary:focus { - color: #2f2f2f !important; -} - -.text-success { - color: #00AA00 !important; -} - -a.text-success:hover, a.text-success:focus { - color: #005e00 !important; -} - -.text-info { - color: #00AAAA !important; -} - -a.text-info:hover, a.text-info:focus { - color: #005e5e !important; -} - -.text-warning { - color: #FFFF55 !important; -} - -a.text-warning:hover, a.text-warning:focus { - color: #ffff09 !important; -} - -.text-danger { - color: #AA0000 !important; -} - -a.text-danger:hover, a.text-danger:focus { - color: #5e0000 !important; -} - -.text-light { - color: #AAAAAA !important; -} - -a.text-light:hover, a.text-light:focus { - color: #848484 !important; -} - -.text-dark { - color: #555555 !important; -} - -a.text-dark:hover, a.text-dark:focus { - color: #2f2f2f !important; -} - -.text-body { - color: #AAAAAA !important; -} - -.text-muted { - color: #555555 !important; -} - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50 { - color: rgba(170, 170, 170, 0.5) !important; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.text-decoration-none { - text-decoration: none !important; -} - -.text-reset { - color: inherit !important; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -@media print { - *, -*::before, -*::after { - text-shadow: none !important; - box-shadow: none !important; - } - - a:not(.btn) { - text-decoration: underline; - } - - abbr[title]::after { - content: " (" attr(title) ")"; - } - - pre { - white-space: pre-wrap !important; - } - - pre, -blockquote { - border: 1px solid #555555; - page-break-inside: avoid; - } - - thead { - display: table-header-group; - } - - tr, -img { - page-break-inside: avoid; - } - - p, -h2, -h3 { - orphans: 3; - widows: 3; - } - - h2, -h3 { - page-break-after: avoid; - } - - @page { - size: a3; - } - body { - min-width: 992px !important; - } - - .container { - min-width: 992px !important; - } - - .navbar { - display: none; - } - - .badge { - border: 1px solid #000; - } - - .table { - border-collapse: collapse !important; - } - .table td, -.table th { - background-color: #AAAAAA !important; - } - - .table-bordered th, -.table-bordered td { - border: 1px solid #AAAAAA !important; - } - - .table-dark { - color: inherit; - } - .table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #AAAAAA; - } - - .table .thead-dark th { - color: inherit; - border-color: #AAAAAA; - } -} -footer { - background-color: #AA5500; - color: #000; -} - -header { - background-color: #55FFFF; - color: #000; - text-align: center; -} - -header a { - color: #FF55FF; -} - -header a:hover { - color: #FF5555; - text-decoration: none; -} - -footer a:hover { - text-decoration: none; -} - -.table-centered { - margin-left: auto; - margin-right: auto; -} - -.card-button { - color: #FFFF55; -} - -.table-dark-em { - color: #AA5500; - font-style: normal; -} - -.table-dark-header { - color: #AA5500; - font-style: normal; - text-align: center; -} - -/*# sourceMappingURL=dicserver.css.map */ diff --git a/Server/DiscImageChef.Server/styles/dos/dicserver.scss b/Server/DiscImageChef.Server/styles/dos/dicserver.scss deleted file mode 100644 index 3821099fa..000000000 --- a/Server/DiscImageChef.Server/styles/dos/dicserver.scss +++ /dev/null @@ -1,87 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : dicserver.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; -@import "_font"; -@import "_fontstyles"; - -@import "../../node_modules/bootstrap/scss/bootstrap"; - -footer -{ - background-color: $brown; - color: $black; -} - -header -{ - background-color: $teal; - color: $black; - text-align: center; -} - -header a -{ - color: $pink; -} - -header a:hover -{ - color: $orange; - text-decoration: none; -} - -footer a:hover -{ - text-decoration: none; -} - -.table-centered -{ - margin-left:auto; - margin-right:auto; -} - -.card-button{color:$yellow} - -.table-dark-em -{ - color: $brown; - font-style: normal; -} - -.table-dark-header -{ - color: $brown; - font-style: normal; - text-align: center; -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.css b/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.css deleted file mode 100644 index f82985aa4..000000000 --- a/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.css +++ /dev/null @@ -1,930 +0,0 @@ -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using EGA colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets font to VGA square */ -@font-face { - font-family: "VGAsquarePx"; - src: url(../../fonts/vga_squarepx.eot); - src: url(../../fonts/vga_squarepx.eot?#iefix) format("embedded-opentype"), url(../../fonts/vga_squarepx.woff2) format("woff2"), url(../../fonts/vga_squarepx.woff) format("woff"), url(../../fonts/vga_squarepx.ttf) format("truetype"); - font-weight: normal; - font-style: normal; -} -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using EGA colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets the style for emphasis/italics */ -em, i { - color: #00AA00; - font-style: normal; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong { - color: #FFFFFF; - font-size: 1em; - font-style: normal; - font-weight: normal; - margin: 0; -} - -/** - * @license Highcharts - * - * (c) 2009-2016 Torstein Honsi - * - * License: www.highcharts.com/license - */ -.highcharts-container { - position: relative; - overflow: hidden; - width: 100%; - height: 100%; - text-align: left; - line-height: normal; - z-index: 0; - /* #1072 */ - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - font-family: "VGAsquarePx"; - font-size: 12px; -} - -.highcharts-root { - display: block; -} - -.highcharts-root text { - stroke-width: 0; -} - -.highcharts-strong { - font-weight: bold; -} - -.highcharts-emphasized { - font-style: italic; -} - -.highcharts-anchor { - cursor: pointer; -} - -.highcharts-background { - fill: #000; -} - -.highcharts-plot-border, .highcharts-plot-background { - fill: none; -} - -.highcharts-label-box { - fill: none; -} - -.highcharts-button-box { - fill: inherit; -} - -.highcharts-tracker-line { - stroke-linejoin: round; - stroke: rgba(192, 192, 192, 0.0001); - stroke-width: 22; - fill: none; -} - -.highcharts-tracker-area { - fill: rgba(192, 192, 192, 0.0001); - stroke-width: 0; -} - -/* Titles */ -.highcharts-title { - fill: #AAAAAA; - font-size: 1.5em; -} - -.highcharts-subtitle { - fill: #AAAAAA; -} - -/* Axes */ -.highcharts-axis-line { - fill: none; - stroke: #ccd6eb; -} - -.highcharts-yaxis .highcharts-axis-line { - stroke-width: 0; -} - -.highcharts-axis-title { - fill: #AAAAAA; -} - -.highcharts-axis-labels { - fill: #AAAAAA; - cursor: default; - font-size: 0.9em; -} - -.highcharts-grid-line { - fill: none; - stroke: #555555; -} - -.highcharts-xaxis-grid .highcharts-grid-line { - stroke-width: 0px; -} - -.highcharts-tick { - stroke: #ccd6eb; -} - -.highcharts-yaxis .highcharts-tick { - stroke-width: 0; -} - -.highcharts-minor-grid-line { - stroke: #555555; -} - -.highcharts-crosshair-thin { - stroke-width: 1px; - stroke: #555555; -} - -.highcharts-crosshair-category { - stroke: #ccd6eb; - stroke-opacity: 0.25; -} - -/* Credits */ -.highcharts-credits { - cursor: pointer; - fill: #AAAAAA; - font-size: 0.7em; - transition: fill 250ms, font-size 250ms; -} - -.highcharts-credits:hover { - fill: black; - font-size: 1em; -} - -/* Tooltip */ -.highcharts-tooltip { - cursor: default; - pointer-events: none; - white-space: nowrap; - transition: stroke 150ms; -} - -.highcharts-tooltip text { - fill: #AAAAAA; -} - -.highcharts-tooltip .highcharts-header { - font-size: 0.85em; -} - -.highcharts-tooltip-box { - stroke-width: 1px; - fill: #FFFFFF; - fill-opacity: 0.85; -} - -.highcharts-tooltip-box .highcharts-label-box { - fill: #FFFFFF; - fill-opacity: 0.85; -} - -.highcharts-selection-marker { - fill: #335cad; - fill-opacity: 0.25; -} - -.highcharts-graph { - fill: none; - stroke-width: 2px; - stroke-linecap: round; - stroke-linejoin: round; -} - -.highcharts-state-hover .highcharts-graph { - stroke-width: 3; -} - -.highcharts-state-hover path { - transition: stroke-width 50; - /* quick in */ -} - -.highcharts-state-normal path { - transition: stroke-width 250ms; - /* slow out */ -} - -/* Legend hover affects points and series */ -g.highcharts-series, -.highcharts-point, -.highcharts-markers, -.highcharts-data-labels { - transition: opacity 250ms; -} - -.highcharts-legend-series-active g.highcharts-series:not(.highcharts-series-hover), -.highcharts-legend-point-active .highcharts-point:not(.highcharts-point-hover), -.highcharts-legend-series-active .highcharts-markers:not(.highcharts-series-hover), -.highcharts-legend-series-active .highcharts-data-labels:not(.highcharts-series-hover) { - opacity: 0.2; -} - -/* Series options */ -/* Default colors */ -.highcharts-color-0 { - fill: #FF5555; - stroke: #FF5555; -} - -.highcharts-color-1 { - fill: #00AA00; - stroke: #00AA00; -} - -.highcharts-color-2 { - fill: #AA5500; - stroke: #AA5500; -} - -.highcharts-color-3 { - fill: #AA55AA; - stroke: #AA55AA; -} - -.highcharts-color-4 { - fill: #FF55FF; - stroke: #FF55FF; -} - -.highcharts-color-5 { - fill: #55FFFF; - stroke: #55FFFF; -} - -.highcharts-color-6 { - fill: #FFFF55; - stroke: #FFFF55; -} - -.highcharts-color-7 { - fill: #AA00FF; - stroke: #AA00FF; -} - -.highcharts-color-8 { - fill: #00AAAA; - stroke: #00AAAA; -} - -.highcharts-color-9 { - fill: #AAAAAA; - stroke: #AAAAAA; -} - -.highcharts-area { - fill-opacity: 0.75; - stroke-width: 0; -} - -.highcharts-markers { - stroke-width: 1px; - stroke: #000; -} - -.highcharts-point { - stroke-width: 1px; -} - -.highcharts-dense-data .highcharts-point { - stroke-width: 0; -} - -.highcharts-data-label { - font-size: 0.9em; - font-weight: bold; -} - -.highcharts-data-label-box { - fill: none; - stroke-width: 0; -} - -.highcharts-data-label text, text.highcharts-data-label { - fill: #FFFF55; -} - -.highcharts-data-label-connector { - fill: none; -} - -.highcharts-halo { - fill-opacity: 0.25; - stroke-width: 0; -} - -.highcharts-series:not(.highcharts-pie-series) .highcharts-point-select, -.highcharts-markers .highcharts-point-select { - fill: #555555; - stroke: #FFFFFF; -} - -.highcharts-column-series rect.highcharts-point { - stroke: #000; -} - -.highcharts-column-series .highcharts-point { - transition: fill-opacity 250ms; -} - -.highcharts-column-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-pie-series .highcharts-point { - stroke-linejoin: round; - stroke: #000; -} - -.highcharts-pie-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-funnel-series .highcharts-point { - stroke-linejoin: round; - stroke: #000; -} - -.highcharts-funnel-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-funnel-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} - -.highcharts-pyramid-series .highcharts-point { - stroke-linejoin: round; - stroke: #000; -} - -.highcharts-pyramid-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-pyramid-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} - -.highcharts-solidgauge-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-treemap-series .highcharts-point { - stroke-width: 1px; - stroke: #555555; - transition: stroke 250ms, fill 250ms, fill-opacity 250ms; -} - -.highcharts-treemap-series .highcharts-point-hover { - stroke: #AAAAAA; - transition: stroke 25ms, fill 25ms, fill-opacity 25ms; -} - -.highcharts-treemap-series .highcharts-above-level { - display: none; -} - -.highcharts-treemap-series .highcharts-internal-node { - fill: none; -} - -.highcharts-treemap-series .highcharts-internal-node-interactive { - fill-opacity: 0.15; - cursor: pointer; -} - -.highcharts-treemap-series .highcharts-internal-node-interactive:hover { - fill-opacity: 0.75; -} - -/* Legend */ -.highcharts-legend-box { - fill: none; - stroke-width: 0; -} - -.highcharts-legend-item > text { - fill: #AAAAAA; - font-weight: bold; - font-size: 1em; - cursor: pointer; - stroke-width: 0; -} - -.highcharts-legend-item:hover text { - fill: #FFFFFF; -} - -.highcharts-legend-item-hidden * { - fill: #555555 !important; - stroke: #555555 !important; - transition: fill 250ms; -} - -.highcharts-legend-nav-active { - fill: #003399; - cursor: pointer; -} - -.highcharts-legend-nav-inactive { - fill: #555555; -} - -.highcharts-legend-title-box { - fill: none; - stroke-width: 0; -} - -/* Bubble legend */ -.highcharts-bubble-legend-symbol { - stroke-width: 2; - fill-opacity: 0.5; -} - -.highcharts-bubble-legend-connectors { - stroke-width: 1; -} - -.highcharts-bubble-legend-labels { - fill: #AAAAAA; -} - -/* Loading */ -.highcharts-loading { - position: absolute; - background-color: #000; - opacity: 0.5; - text-align: center; - z-index: 10; - transition: opacity 250ms; -} - -.highcharts-loading-hidden { - height: 0 !important; - opacity: 0; - overflow: hidden; - transition: opacity 250ms, height 250ms step-end; -} - -.highcharts-loading-inner { - font-weight: bold; - position: relative; - top: 45%; -} - -/* Plot bands and polar pane backgrounds */ -.highcharts-plot-band, .highcharts-pane { - fill: #FFFFFF; - fill-opacity: 0.05; -} - -.highcharts-plot-line { - fill: none; - stroke: #AAAAAA; - stroke-width: 1px; -} - -/* Highcharts More and modules */ -.highcharts-boxplot-box { - fill: #000; -} - -.highcharts-boxplot-median { - stroke-width: 2px; -} - -.highcharts-bubble-series .highcharts-point { - fill-opacity: 0.5; -} - -.highcharts-errorbar-series .highcharts-point { - stroke: #FFFFFF; -} - -.highcharts-gauge-series .highcharts-data-label-box { - stroke: #555555; - stroke-width: 1px; -} - -.highcharts-gauge-series .highcharts-dial { - fill: #FFFFFF; - stroke-width: 0; -} - -.highcharts-polygon-series .highcharts-graph { - fill: inherit; - stroke-width: 0; -} - -.highcharts-waterfall-series .highcharts-graph { - stroke: #AAAAAA; - stroke-dasharray: 1, 3; -} - -.highcharts-sankey-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-sankey-series .highcharts-link { - transition: fill 250ms, fill-opacity 250ms; - fill-opacity: 0.5; -} - -.highcharts-sankey-series .highcharts-point-hover.highcharts-link { - transition: fill 50ms, fill-opacity 50ms; - fill-opacity: 1; -} - -.highcharts-venn-series .highcharts-point { - fill-opacity: 0.75; - stroke: #555555; - transition: stroke 250ms, fill-opacity 250ms; -} - -.highcharts-venn-series .highcharts-point-hover { - fill-opacity: 1; - stroke: #555555; -} - -/* Highstock */ -.highcharts-navigator-mask-outside { - fill-opacity: 0; -} - -.highcharts-navigator-mask-inside { - fill: #6685c2; - /* navigator.maskFill option */ - fill-opacity: 0.25; - cursor: ew-resize; -} - -.highcharts-navigator-outline { - stroke: #555555; - fill: none; -} - -.highcharts-navigator-handle { - stroke: #555555; - fill: #555555; - cursor: ew-resize; -} - -.highcharts-navigator-series { - fill: #335cad; - stroke: #335cad; -} - -.highcharts-navigator-series .highcharts-graph { - stroke-width: 1px; -} - -.highcharts-navigator-series .highcharts-area { - fill-opacity: 0.05; -} - -.highcharts-navigator-xaxis .highcharts-axis-line { - stroke-width: 0; -} - -.highcharts-navigator-xaxis .highcharts-grid-line { - stroke-width: 1px; - stroke: #555555; -} - -.highcharts-navigator-xaxis.highcharts-axis-labels { - fill: #AAAAAA; -} - -.highcharts-navigator-yaxis .highcharts-grid-line { - stroke-width: 0; -} - -.highcharts-scrollbar-thumb { - fill: #555555; - stroke: #555555; - stroke-width: 1px; -} - -.highcharts-scrollbar-button { - fill: #555555; - stroke: #555555; - stroke-width: 1px; -} - -.highcharts-scrollbar-arrow { - fill: #AAAAAA; -} - -.highcharts-scrollbar-rifles { - stroke: #AAAAAA; - stroke-width: 1px; -} - -.highcharts-scrollbar-track { - fill: #555555; - stroke: #555555; - stroke-width: 1px; -} - -.highcharts-button { - fill: #555555; - stroke: #555555; - cursor: default; - stroke-width: 1px; - transition: fill 250ms; -} - -.highcharts-button text { - fill: #AAAAAA; -} - -.highcharts-button-hover { - transition: fill 0ms; - fill: #555555; - stroke: #555555; -} - -.highcharts-button-hover text { - fill: #AAAAAA; -} - -.highcharts-button-pressed { - font-weight: bold; - fill: #e6ebf5; - stroke: #555555; -} - -.highcharts-button-pressed text { - fill: #AAAAAA; - font-weight: bold; -} - -.highcharts-button-disabled text { - fill: #AAAAAA; -} - -.highcharts-range-selector-buttons .highcharts-button { - stroke-width: 0px; -} - -.highcharts-range-label rect { - fill: none; -} - -.highcharts-range-label text { - fill: #AAAAAA; -} - -.highcharts-range-input rect { - fill: none; -} - -.highcharts-range-input text { - fill: #AAAAAA; -} - -.highcharts-range-input { - stroke-width: 1px; - stroke: #555555; -} - -input.highcharts-range-selector { - position: absolute; - border: 0; - width: 1px; - /* Chrome needs a pixel to see it */ - height: 1px; - padding: 0; - text-align: center; - left: -9em; - /* #4798 */ -} - -.highcharts-crosshair-label text { - fill: #000; - font-size: 1.1em; -} - -.highcharts-crosshair-label .highcharts-label-box { - fill: inherit; -} - -.highcharts-candlestick-series .highcharts-point { - stroke: #FFFFFF; - stroke-width: 1px; -} - -.highcharts-candlestick-series .highcharts-point-up { - fill: #000; -} - -.highcharts-ohlc-series .highcharts-point-hover { - stroke-width: 3px; -} - -.highcharts-flags-series .highcharts-point .highcharts-label-box { - stroke: #AAAAAA; - fill: #000; - transition: fill 250ms; -} - -.highcharts-flags-series .highcharts-point-hover .highcharts-label-box { - stroke: #FFFFFF; - fill: #ccd6eb; -} - -.highcharts-flags-series .highcharts-point text { - fill: #FFFFFF; - font-size: 0.9em; - font-weight: bold; -} - -/* Highmaps */ -.highcharts-map-series .highcharts-point { - transition: fill 500ms, fill-opacity 500ms, stroke-width 250ms; - stroke: #555555; -} - -.highcharts-map-series .highcharts-point-hover { - transition: fill 0ms, fill-opacity 0ms; - fill-opacity: 0.5; - stroke-width: 2px; -} - -.highcharts-mapline-series .highcharts-point { - fill: none; -} - -.highcharts-heatmap-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-map-navigation { - font-size: 1.3em; - font-weight: bold; - text-align: center; -} - -.highcharts-coloraxis { - stroke-width: 0; -} - -.highcharts-coloraxis-marker { - fill: #AAAAAA; -} - -.highcharts-null-point { - fill: #555555; -} - -/* 3d charts */ -.highcharts-3d-frame { - fill: transparent; -} - -/* Exporting module */ -.highcharts-contextbutton { - fill: #000; - /* needed to capture hover */ - stroke: none; - stroke-linecap: round; -} - -.highcharts-contextbutton:hover { - fill: #555555; - stroke: #555555; -} - -.highcharts-button-symbol { - stroke: #AAAAAA; - stroke-width: 3px; -} - -.highcharts-menu { - border: 1px solid #AAAAAA; - background: #000; - padding: 5px 0; - box-shadow: 3px 3px 10px #888; -} - -.highcharts-menu-item { - padding: 0.5em 1em; - background: none; - color: #AAAAAA; - cursor: pointer; - transition: background 250ms, color 250ms; -} - -.highcharts-menu-item:hover { - background: #335cad; - color: #000; -} - -/* Drilldown module */ -.highcharts-drilldown-point { - cursor: pointer; -} - -.highcharts-drilldown-data-label text, -text.highcharts-drilldown-data-label, -.highcharts-drilldown-axis-label { - cursor: pointer; - fill: #003399; - font-weight: bold; - text-decoration: underline; -} - -/* No-data module */ -.highcharts-no-data text { - font-weight: bold; - font-size: 12px; - fill: #AAAAAA; -} - -/* Drag-panes module */ -.highcharts-axis-resizer { - cursor: ns-resize; - stroke: black; - stroke-width: 2px; -} - -/* Bullet type series */ -.highcharts-bullet-target { - stroke-width: 0; -} - -/* Lineargauge type series */ -.highcharts-lineargauge-target { - stroke-width: 1px; - stroke: #AAAAAA; -} - -.highcharts-lineargauge-target-line { - stroke-width: 1px; - stroke: #AAAAAA; -} - -/* Annotations module */ -.highcharts-annotation-label-box { - stroke-width: 1px; - stroke: #FFFFFF; - fill: #FFFFFF; - fill-opacity: 0.75; -} - -.highcharts-annotation-label text { - fill: #555555; -} - -/* Gantt */ -.highcharts-treegrid-node-collapsed, .highcharts-treegrid-node-expanded { - cursor: pointer; -} - -.highcharts-point-connecting-path { - fill: none; -} - -.highcharts-grid-axis .highcharts-tick { - stroke-width: 1px; -} - -.highcharts-grid-axis .highcharts-axis-line { - stroke-width: 1px; -} - -/*# sourceMappingURL=dicserver_highcharts.css.map */ diff --git a/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.scss b/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.scss deleted file mode 100644 index 13da69852..000000000 --- a/Server/DiscImageChef.Server/styles/dos/dicserver_highcharts.scss +++ /dev/null @@ -1,55 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : dicserver_highcharts.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets style for server's charts. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; -@import "_font"; -@import "_fontstyles"; - -$colors: $orange $green $brown $indigo $pink $teal $yellow $purple $cyan $white; -$background-color: $body-bg; - -$neutral-color-100: $brightwhite; // Strong text. -$neutral-color-80: $white; // Main text and some strokes. -$neutral-color-60: $white; // Axis labels, axis title, connector fallback. -$neutral-color-40: $white; // Credits text, export menu stroke. -$neutral-color-20: $darkgray; // Disabled texts, button strokes, crosshair etc. -$neutral-color-10: $darkgray; // Grid lines etc. -$neutral-color-5: $darkgray; // Minor grid lines etc. -$neutral-color-3: $darkgray; // Tooltip backgroud, button fills, map null points. - -$font-family: $font-family-base; - -$tooltip-background: $brightwhite; - -$data-label-color: $yellow; - -@import "../_highcharts"; \ No newline at end of file diff --git a/Server/DiscImageChef.Server/styles/mac/_colors.scss b/Server/DiscImageChef.Server/styles/mac/_colors.scss deleted file mode 100644 index 87c9aa0a7..000000000 --- a/Server/DiscImageChef.Server/styles/mac/_colors.scss +++ /dev/null @@ -1,89 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _colors.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets colors for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -/* Sets the grayscale for Bootstrap */ -$white: #FFFFFF; -$darkgray: #404040; -$gray-100: #C0C0C0; -$gray-200: #C0C0C0; -$gray-300: #C0C0C0; -$gray-400: #808080; -$gray-500: #808080; -$gray-600: #808080; -$gray-700: #404040; -$gray-800: #404040; -$gray-900: #404040; -$black: #000000; - -/* Sets color palette, using Macintosh II colors */ -$green: #1FB714; -$yellow: #FBF305; -$darkgreen: #006412; -$orange: #FF6403; -$brown: #562C05; -$red: #DD0907; -$tan:#90713A; -$magenta:#F20884; -$purple:#4700A5; -$blue:#0000D3; -$cyan:#02ABEA; - -/* Bootstrap color aliases */ -$primary: $blue; -$secondary: $gray-600; -$success: $green; -$info: $cyan; -$warning: $yellow; -$danger: $red; -$light: $gray-100; -$dark: $gray-800; - -/* Colors for */ -$body-bg: $white; -$body-color: $black; - -/* Colors for */ -$link-color: $cyan; -$link-hover-color: $magenta; - -/* Colors for cards */ -$card-border-color: rgba($gray-300, .125); -$card-cap-bg: rgba($gray-300, .03); -$card-cap-color: inherit; -$card-bg: $gray-300; - -/* Colors for tables */ -$table-dark-bg: $gray-300; -$table-dark-accent-bg: rgba($white, .05); -$table-dark-hover-bg: rgba($white, .075); -$table-dark-border-color: lighten($tan, 7.5%); -$table-dark-color: $darkgray; diff --git a/Server/DiscImageChef.Server/styles/mac/_font.scss b/Server/DiscImageChef.Server/styles/mac/_font.scss deleted file mode 100644 index 5ba7c7dbc..000000000 --- a/Server/DiscImageChef.Server/styles/mac/_font.scss +++ /dev/null @@ -1,51 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _font.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets font for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -/* Sets font to Macintosh Chicago clone font */ -@font-face -{ - font-family: 'ChicagoFLF'; - src: url(../../fonts/ChicagoFLF.eot); - src: url(../../fonts/ChicagoFLF.eot?#iefix) format('embedded-opentype'), - url(../../fonts/ChicagoFLF.woff2) format('woff2'), - url(../../fonts/ChicagoFLF.woff) format('woff'), - url(../../fonts/ChicagoFLF.ttf) format('truetype'); - font-weight: normal; - font-style: normal; -} - -$font-family-sans-serif: 'ChicagoFLF'; -$font-family-monospace: 'ChicagoFLF'; -$font-family-base: 'ChicagoFLF'; -$font-size-base: 1rem; - -$line-height-base: 1; diff --git a/Server/DiscImageChef.Server/styles/mac/_fontstyles.scss b/Server/DiscImageChef.Server/styles/mac/_fontstyles.scss deleted file mode 100644 index 71a5a78ce..000000000 --- a/Server/DiscImageChef.Server/styles/mac/_fontstyles.scss +++ /dev/null @@ -1,49 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : _fontstyles.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets font styles for server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; - -/* Sets the style for emphasis/italics */ -em, i -{ - font-style: italic; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong -{ - font-size: 1em; - font-style: normal; - font-weight: bold; - margin: 0; -} diff --git a/Server/DiscImageChef.Server/styles/mac/dicserver.css b/Server/DiscImageChef.Server/styles/mac/dicserver.css deleted file mode 100644 index d0d7b4ef9..000000000 --- a/Server/DiscImageChef.Server/styles/mac/dicserver.css +++ /dev/null @@ -1,9595 +0,0 @@ -@charset "UTF-8"; -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using Macintosh II colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets font to Macintosh Chicago clone font */ -@font-face { - font-family: "ChicagoFLF"; - src: url(../../fonts/ChicagoFLF.eot); - src: url(../../fonts/ChicagoFLF.eot?#iefix) format("embedded-opentype"), url(../../fonts/ChicagoFLF.woff2) format("woff2"), url(../../fonts/ChicagoFLF.woff) format("woff"), url(../../fonts/ChicagoFLF.ttf) format("truetype"); - font-weight: normal; - font-style: normal; -} -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using Macintosh II colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets the style for emphasis/italics */ -em, i { - font-style: italic; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong { - font-size: 1em; - font-style: normal; - font-weight: bold; - margin: 0; -} - -/*! - * Bootstrap v4.2.1 (https://getbootstrap.com/) - * Copyright 2011-2018 The Bootstrap Authors - * Copyright 2011-2018 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -:root { - --blue: #0000D3; - --indigo: #6610f2; - --purple: #4700A5; - --pink: #e83e8c; - --red: #DD0907; - --orange: #FF6403; - --yellow: #FBF305; - --green: #1FB714; - --teal: #20c997; - --cyan: #02ABEA; - --white: #FFFFFF; - --gray: #808080; - --gray-dark: #404040; - --primary: #0000D3; - --secondary: #808080; - --success: #1FB714; - --info: #02ABEA; - --warning: #FBF305; - --danger: #DD0907; - --light: #C0C0C0; - --dark: #404040; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: "ChicagoFLF"; - --font-family-monospace: "ChicagoFLF"; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; -} - -body { - margin: 0; - font-family: "ChicagoFLF"; - font-size: 1rem; - font-weight: 400; - line-height: 1; - color: #000000; - text-align: left; - background-color: #FFFFFF; -} - -[tabindex="-1"]:focus { - outline: 0 !important; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0.5rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: #02ABEA; - text-decoration: none; - background-color: transparent; -} -a:hover { - color: #F20884; - text-decoration: underline; -} - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; -} -a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; -} -a:not([href]):not([tabindex]):focus { - outline: 0; -} - -pre, -code, -kbd, -samp { - font-family: "ChicagoFLF"; - font-size: 1em; -} - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; -} - -figure { - margin: 0 0 1rem; -} - -img { - vertical-align: middle; - border-style: none; -} - -svg { - overflow: hidden; - vertical-align: middle; -} - -table { - border-collapse: collapse; -} - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #808080; - text-align: left; - caption-side: bottom; -} - -th { - text-align: inherit; -} - -label { - display: inline-block; - margin-bottom: 0.5rem; -} - -button { - border-radius: 0; -} - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - padding: 0; - border-style: none; -} - -input[type=radio], -input[type=checkbox] { - box-sizing: border-box; - padding: 0; -} - -input[type=date], -input[type=time], -input[type=datetime-local], -input[type=month] { - -webkit-appearance: listbox; -} - -textarea { - overflow: auto; - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; -} - -progress { - vertical-align: baseline; -} - -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: none; -} - -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -summary { - display: list-item; - cursor: pointer; -} - -template { - display: none; -} - -[hidden] { - display: none !important; -} - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.5rem; - font-family: inherit; - font-weight: 500; - line-height: 1.2; - color: inherit; -} - -h1, .h1 { - font-size: 2.5rem; -} - -h2, .h2 { - font-size: 2rem; -} - -h3, .h3 { - font-size: 1.75rem; -} - -h4, .h4 { - font-size: 1.5rem; -} - -h5, .h5 { - font-size: 1.25rem; -} - -h6, .h6 { - font-size: 1rem; -} - -.lead { - font-size: 1.25rem; - font-weight: 300; -} - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} - -small, -.small { - font-size: 80%; - font-weight: 400; -} - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; -} - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline-item { - display: inline-block; -} -.list-inline-item:not(:last-child) { - margin-right: 0.5rem; -} - -.initialism { - font-size: 90%; - text-transform: uppercase; -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; -} - -.blockquote-footer { - display: block; - font-size: 80%; - color: #808080; -} -.blockquote-footer::before { - content: "— "; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.img-thumbnail { - padding: 0.25rem; - background-color: #FFFFFF; - border: 1px solid #C0C0C0; - border-radius: 0.25rem; - max-width: 100%; - height: auto; -} - -.figure { - display: inline-block; -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; -} - -.figure-caption { - font-size: 90%; - color: #808080; -} - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #FFFFFF; - background-color: #404040; - border-radius: 0.2rem; -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; -} - -pre { - display: block; - font-size: 87.5%; - color: #404040; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} -.no-gutters > .col, -.no-gutters > [class*=col-] { - padding-right: 0; - padding-left: 0; -} - -.col-xl, -.col-xl-auto, .col-xl-12, .col-xl-11, .col-xl-10, .col-xl-9, .col-xl-8, .col-xl-7, .col-xl-6, .col-xl-5, .col-xl-4, .col-xl-3, .col-xl-2, .col-xl-1, .col-lg, -.col-lg-auto, .col-lg-12, .col-lg-11, .col-lg-10, .col-lg-9, .col-lg-8, .col-lg-7, .col-lg-6, .col-lg-5, .col-lg-4, .col-lg-3, .col-lg-2, .col-lg-1, .col-md, -.col-md-auto, .col-md-12, .col-md-11, .col-md-10, .col-md-9, .col-md-8, .col-md-7, .col-md-6, .col-md-5, .col-md-4, .col-md-3, .col-md-2, .col-md-1, .col-sm, -.col-sm-auto, .col-sm-12, .col-sm-11, .col-sm-10, .col-sm-9, .col-sm-8, .col-sm-7, .col-sm-6, .col-sm-5, .col-sm-4, .col-sm-3, .col-sm-2, .col-sm-1, .col, -.col-auto, .col-12, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; -} - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; -} - -.col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; -} - -.col-3 { - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; -} - -.col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; -} - -.col-6 { - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; -} - -.col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; -} - -.col-9 { - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; -} - -.col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; -} - -.col-12 { - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - order: -1; -} - -.order-last { - order: 13; -} - -.order-0 { - order: 0; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.offset-1 { - margin-left: 8.3333333333%; -} - -.offset-2 { - margin-left: 16.6666666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.3333333333%; -} - -.offset-5 { - margin-left: 41.6666666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.3333333333%; -} - -.offset-8 { - margin-left: 66.6666666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.3333333333%; -} - -.offset-11 { - margin-left: 91.6666666667%; -} - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-sm-first { - order: -1; - } - - .order-sm-last { - order: 13; - } - - .order-sm-0 { - order: 0; - } - - .order-sm-1 { - order: 1; - } - - .order-sm-2 { - order: 2; - } - - .order-sm-3 { - order: 3; - } - - .order-sm-4 { - order: 4; - } - - .order-sm-5 { - order: 5; - } - - .order-sm-6 { - order: 6; - } - - .order-sm-7 { - order: 7; - } - - .order-sm-8 { - order: 8; - } - - .order-sm-9 { - order: 9; - } - - .order-sm-10 { - order: 10; - } - - .order-sm-11 { - order: 11; - } - - .order-sm-12 { - order: 12; - } - - .offset-sm-0 { - margin-left: 0; - } - - .offset-sm-1 { - margin-left: 8.3333333333%; - } - - .offset-sm-2 { - margin-left: 16.6666666667%; - } - - .offset-sm-3 { - margin-left: 25%; - } - - .offset-sm-4 { - margin-left: 33.3333333333%; - } - - .offset-sm-5 { - margin-left: 41.6666666667%; - } - - .offset-sm-6 { - margin-left: 50%; - } - - .offset-sm-7 { - margin-left: 58.3333333333%; - } - - .offset-sm-8 { - margin-left: 66.6666666667%; - } - - .offset-sm-9 { - margin-left: 75%; - } - - .offset-sm-10 { - margin-left: 83.3333333333%; - } - - .offset-sm-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-md-first { - order: -1; - } - - .order-md-last { - order: 13; - } - - .order-md-0 { - order: 0; - } - - .order-md-1 { - order: 1; - } - - .order-md-2 { - order: 2; - } - - .order-md-3 { - order: 3; - } - - .order-md-4 { - order: 4; - } - - .order-md-5 { - order: 5; - } - - .order-md-6 { - order: 6; - } - - .order-md-7 { - order: 7; - } - - .order-md-8 { - order: 8; - } - - .order-md-9 { - order: 9; - } - - .order-md-10 { - order: 10; - } - - .order-md-11 { - order: 11; - } - - .order-md-12 { - order: 12; - } - - .offset-md-0 { - margin-left: 0; - } - - .offset-md-1 { - margin-left: 8.3333333333%; - } - - .offset-md-2 { - margin-left: 16.6666666667%; - } - - .offset-md-3 { - margin-left: 25%; - } - - .offset-md-4 { - margin-left: 33.3333333333%; - } - - .offset-md-5 { - margin-left: 41.6666666667%; - } - - .offset-md-6 { - margin-left: 50%; - } - - .offset-md-7 { - margin-left: 58.3333333333%; - } - - .offset-md-8 { - margin-left: 66.6666666667%; - } - - .offset-md-9 { - margin-left: 75%; - } - - .offset-md-10 { - margin-left: 83.3333333333%; - } - - .offset-md-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-lg-first { - order: -1; - } - - .order-lg-last { - order: 13; - } - - .order-lg-0 { - order: 0; - } - - .order-lg-1 { - order: 1; - } - - .order-lg-2 { - order: 2; - } - - .order-lg-3 { - order: 3; - } - - .order-lg-4 { - order: 4; - } - - .order-lg-5 { - order: 5; - } - - .order-lg-6 { - order: 6; - } - - .order-lg-7 { - order: 7; - } - - .order-lg-8 { - order: 8; - } - - .order-lg-9 { - order: 9; - } - - .order-lg-10 { - order: 10; - } - - .order-lg-11 { - order: 11; - } - - .order-lg-12 { - order: 12; - } - - .offset-lg-0 { - margin-left: 0; - } - - .offset-lg-1 { - margin-left: 8.3333333333%; - } - - .offset-lg-2 { - margin-left: 16.6666666667%; - } - - .offset-lg-3 { - margin-left: 25%; - } - - .offset-lg-4 { - margin-left: 33.3333333333%; - } - - .offset-lg-5 { - margin-left: 41.6666666667%; - } - - .offset-lg-6 { - margin-left: 50%; - } - - .offset-lg-7 { - margin-left: 58.3333333333%; - } - - .offset-lg-8 { - margin-left: 66.6666666667%; - } - - .offset-lg-9 { - margin-left: 75%; - } - - .offset-lg-10 { - margin-left: 83.3333333333%; - } - - .offset-lg-11 { - margin-left: 91.6666666667%; - } -} -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; - } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; - } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; - } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; - } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; - } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; - } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; - } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; - } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; - } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; - } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; - } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; - } - - .order-xl-first { - order: -1; - } - - .order-xl-last { - order: 13; - } - - .order-xl-0 { - order: 0; - } - - .order-xl-1 { - order: 1; - } - - .order-xl-2 { - order: 2; - } - - .order-xl-3 { - order: 3; - } - - .order-xl-4 { - order: 4; - } - - .order-xl-5 { - order: 5; - } - - .order-xl-6 { - order: 6; - } - - .order-xl-7 { - order: 7; - } - - .order-xl-8 { - order: 8; - } - - .order-xl-9 { - order: 9; - } - - .order-xl-10 { - order: 10; - } - - .order-xl-11 { - order: 11; - } - - .order-xl-12 { - order: 12; - } - - .offset-xl-0 { - margin-left: 0; - } - - .offset-xl-1 { - margin-left: 8.3333333333%; - } - - .offset-xl-2 { - margin-left: 16.6666666667%; - } - - .offset-xl-3 { - margin-left: 25%; - } - - .offset-xl-4 { - margin-left: 33.3333333333%; - } - - .offset-xl-5 { - margin-left: 41.6666666667%; - } - - .offset-xl-6 { - margin-left: 50%; - } - - .offset-xl-7 { - margin-left: 58.3333333333%; - } - - .offset-xl-8 { - margin-left: 66.6666666667%; - } - - .offset-xl-9 { - margin-left: 75%; - } - - .offset-xl-10 { - margin-left: 83.3333333333%; - } - - .offset-xl-11 { - margin-left: 91.6666666667%; - } -} -.table { - width: 100%; - margin-bottom: 1rem; - background-color: transparent; -} -.table th, -.table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #C0C0C0; -} -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #C0C0C0; -} -.table tbody + tbody { - border-top: 2px solid #C0C0C0; -} -.table .table { - background-color: #FFFFFF; -} - -.table-sm th, -.table-sm td { - padding: 0.3rem; -} - -.table-bordered { - border: 1px solid #C0C0C0; -} -.table-bordered th, -.table-bordered td { - border: 1px solid #C0C0C0; -} -.table-bordered thead th, -.table-bordered thead td { - border-bottom-width: 2px; -} - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); -} - -.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8b8f3; -} -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #7a7ae8; -} - -.table-hover .table-primary:hover { - background-color: #a2a2ef; -} -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #a2a2ef; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #dbdbdb; -} -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #bdbdbd; -} - -.table-hover .table-secondary:hover { - background-color: #cecece; -} -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #cecece; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c0ebbd; -} -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #8bda85; -} - -.table-hover .table-success:hover { - background-color: #ade5a9; -} -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #ade5a9; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #b8e7f9; -} -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #7bd3f4; -} - -.table-hover .table-info:hover { - background-color: #a0dff7; -} -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #a0dff7; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #fefcb9; -} -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #fdf97d; -} - -.table-hover .table-warning:hover { - background-color: #fefba0; -} -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #fefba0; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f5baba; -} -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #ed7f7e; -} - -.table-hover .table-danger:hover { - background-color: #f2a4a4; -} -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #f2a4a4; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #ededed; -} -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #dedede; -} - -.table-hover .table-light:hover { - background-color: #e0e0e0; -} -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #e0e0e0; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #cacaca; -} -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #9c9c9c; -} - -.table-hover .table-dark:hover { - background-color: #bdbdbd; -} -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #bdbdbd; -} - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); -} -.table-hover .table-active:hover > td, -.table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); -} - -.table .thead-dark th { - color: #404040; - background-color: #C0C0C0; - border-color: #ab8645; -} -.table .thead-light th { - color: #404040; - background-color: #C0C0C0; - border-color: #C0C0C0; -} - -.table-dark { - color: #404040; - background-color: #C0C0C0; -} -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #ab8645; -} -.table-dark.table-bordered { - border: 0; -} -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); -} -.table-dark.table-hover tbody tr:hover { - background-color: rgba(255, 255, 255, 0.075); -} - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-sm > .table-bordered { - border: 0; - } -} -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-md > .table-bordered { - border: 0; - } -} -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-lg > .table-bordered { - border: 0; - } -} -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-xl > .table-bordered { - border: 0; - } -} -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; -} -.table-responsive > .table-bordered { - border: 0; -} - -.form-control { - display: block; - width: 100%; - height: calc(1.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1; - color: #404040; - background-color: #FFFFFF; - background-clip: padding-box; - border: 1px solid #808080; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .form-control { - transition: none; - } -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control:focus { - color: #404040; - background-color: #FFFFFF; - border-color: #5454ff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.form-control::placeholder { - color: #808080; - opacity: 1; -} -.form-control:disabled, .form-control[readonly] { - background-color: #C0C0C0; - opacity: 1; -} - -select.form-control:focus::-ms-value { - color: #404040; - background-color: #FFFFFF; -} - -.form-control-file, -.form-control-range { - display: block; - width: 100%; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1; - color: #000000; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} -.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm { - height: calc(1.8125rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.form-control-lg { - height: calc(2.875rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -select.form-control[size], select.form-control[multiple] { - height: auto; -} - -textarea.form-control { - height: auto; -} - -.form-group { - margin-bottom: 1rem; -} - -.form-text { - display: block; - margin-top: 0.25rem; -} - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; -} -.form-row > .col, -.form-row > [class*=col-] { - padding-right: 5px; - padding-left: 5px; -} - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; -} - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; -} -.form-check-input:disabled ~ .form-check-label { - color: #808080; -} - -.form-check-label { - margin-bottom: 0; -} - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; -} -.form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #1FB714; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1; - color: #FFFFFF; - background-color: rgba(31, 183, 20, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #1FB714; - padding-right: 1.75rem; - background-repeat: no-repeat; - background-position: center right calc(1.75rem / 4); - background-size: calc(1.75rem / 2) calc(1.75rem / 2); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231FB714' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); -} -.was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #1FB714; - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.25); -} -.was-validated .form-control:valid ~ .valid-feedback, -.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, -.form-control.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: 1.75rem; - background-position: top calc(1.75rem / 4) right calc(1.75rem / 4); -} - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #1FB714; - padding-right: 3.0625rem; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23404040' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231FB714' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/0.875rem 0.875rem; -} -.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #1FB714; - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.25); -} -.was-validated .custom-select:valid ~ .valid-feedback, -.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, -.custom-select.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #1FB714; -} -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #1FB714; -} -.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #1FB714; -} -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; -} -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #27e519; - background-color: #27e519; -} -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.25); -} -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #1FB714; -} - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #1FB714; -} -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; -} -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #1FB714; - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.25); -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #DD0907; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1; - color: #FFFFFF; - background-color: rgba(221, 9, 7, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #DD0907; - padding-right: 1.75rem; - background-repeat: no-repeat; - background-position: center right calc(1.75rem / 4); - background-size: calc(1.75rem / 2) calc(1.75rem / 2); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23DD0907' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); -} -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #DD0907; - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.25); -} -.was-validated .form-control:invalid ~ .invalid-feedback, -.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, -.form-control.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: 1.75rem; - background-position: top calc(1.75rem / 4) right calc(1.75rem / 4); -} - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #DD0907; - padding-right: 3.0625rem; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23404040' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23DD0907' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/0.875rem 0.875rem; -} -.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #DD0907; - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.25); -} -.was-validated .custom-select:invalid ~ .invalid-feedback, -.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, -.custom-select.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #DD0907; -} -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #DD0907; -} -.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #DD0907; -} -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; -} -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #f8211f; - background-color: #f8211f; -} -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.25); -} -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #DD0907; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #DD0907; -} -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; -} -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #DD0907; - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.25); -} - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; -} -.form-inline .form-check { - width: 100%; -} -@media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; - } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-plaintext { - display: inline-block; - } - .form-inline .input-group, -.form-inline .custom-select { - width: auto; - } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; - } - .form-inline .form-check-input { - position: relative; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; - } - .form-inline .custom-control { - align-items: center; - justify-content: center; - } - .form-inline .custom-control-label { - margin-bottom: 0; - } -} - -.btn { - display: inline-block; - font-weight: 400; - color: #000000; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .btn { - transition: none; - } -} -.btn:hover { - color: #000000; - text-decoration: none; -} -.btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.btn.disabled, .btn:disabled { - opacity: 0.65; -} -.btn:not(:disabled):not(.disabled) { - cursor: pointer; -} -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; -} - -.btn-primary { - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} -.btn-primary:hover { - color: #FFFFFF; - background-color: #0000ad; - border-color: #0000a0; -} -.btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(38, 38, 218, 0.5); -} -.btn-primary.disabled, .btn-primary:disabled { - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} -.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #FFFFFF; - background-color: #0000a0; - border-color: #000093; -} -.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(38, 38, 218, 0.5); -} - -.btn-secondary { - color: #FFFFFF; - background-color: #808080; - border-color: #808080; -} -.btn-secondary:hover { - color: #FFFFFF; - background-color: #6d6d6d; - border-color: #676767; -} -.btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(147, 147, 147, 0.5); -} -.btn-secondary.disabled, .btn-secondary:disabled { - color: #FFFFFF; - background-color: #808080; - border-color: #808080; -} -.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #FFFFFF; - background-color: #676767; - border-color: #606060; -} -.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(147, 147, 147, 0.5); -} - -.btn-success { - color: #FFFFFF; - background-color: #1FB714; - border-color: #1FB714; -} -.btn-success:hover { - color: #FFFFFF; - background-color: #199510; - border-color: #17890f; -} -.btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(65, 194, 55, 0.5); -} -.btn-success.disabled, .btn-success:disabled { - color: #FFFFFF; - background-color: #1FB714; - border-color: #1FB714; -} -.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #FFFFFF; - background-color: #17890f; - border-color: #157e0e; -} -.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(65, 194, 55, 0.5); -} - -.btn-info { - color: #FFFFFF; - background-color: #02ABEA; - border-color: #02ABEA; -} -.btn-info:hover { - color: #FFFFFF; - background-color: #028fc4; - border-color: #0286b7; -} -.btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(40, 184, 237, 0.5); -} -.btn-info.disabled, .btn-info:disabled { - color: #FFFFFF; - background-color: #02ABEA; - border-color: #02ABEA; -} -.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #FFFFFF; - background-color: #0286b7; - border-color: #017dab; -} -.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(40, 184, 237, 0.5); -} - -.btn-warning { - color: #404040; - background-color: #FBF305; - border-color: #FBF305; -} -.btn-warning:hover { - color: #404040; - background-color: #d6cf03; - border-color: #cac303; -} -.btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(223, 216, 14, 0.5); -} -.btn-warning.disabled, .btn-warning:disabled { - color: #404040; - background-color: #FBF305; - border-color: #FBF305; -} -.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #404040; - background-color: #cac303; - border-color: #bdb703; -} -.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(223, 216, 14, 0.5); -} - -.btn-danger { - color: #FFFFFF; - background-color: #DD0907; - border-color: #DD0907; -} -.btn-danger:hover { - color: #FFFFFF; - background-color: #b80706; - border-color: #ac0705; -} -.btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(226, 46, 44, 0.5); -} -.btn-danger.disabled, .btn-danger:disabled { - color: #FFFFFF; - background-color: #DD0907; - border-color: #DD0907; -} -.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #FFFFFF; - background-color: #ac0705; - border-color: #9f0605; -} -.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(226, 46, 44, 0.5); -} - -.btn-light { - color: #404040; - background-color: #C0C0C0; - border-color: #C0C0C0; -} -.btn-light:hover { - color: #404040; - background-color: #adadad; - border-color: #a7a7a7; -} -.btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(173, 173, 173, 0.5); -} -.btn-light.disabled, .btn-light:disabled { - color: #404040; - background-color: #C0C0C0; - border-color: #C0C0C0; -} -.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #404040; - background-color: #a7a7a7; - border-color: #a0a0a0; -} -.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(173, 173, 173, 0.5); -} - -.btn-dark { - color: #FFFFFF; - background-color: #404040; - border-color: #404040; -} -.btn-dark:hover { - color: #FFFFFF; - background-color: #2d2d2d; - border-color: #272727; -} -.btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(93, 93, 93, 0.5); -} -.btn-dark.disabled, .btn-dark:disabled { - color: #FFFFFF; - background-color: #404040; - border-color: #404040; -} -.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #FFFFFF; - background-color: #272727; - border-color: #202020; -} -.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(93, 93, 93, 0.5); -} - -.btn-outline-primary { - color: #0000D3; - border-color: #0000D3; -} -.btn-outline-primary:hover { - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} -.btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.5); -} -.btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #0000D3; - background-color: transparent; -} -.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} -.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.5); -} - -.btn-outline-secondary { - color: #808080; - border-color: #808080; -} -.btn-outline-secondary:hover { - color: #FFFFFF; - background-color: #808080; - border-color: #808080; -} -.btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(128, 128, 128, 0.5); -} -.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #808080; - background-color: transparent; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #FFFFFF; - background-color: #808080; - border-color: #808080; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(128, 128, 128, 0.5); -} - -.btn-outline-success { - color: #1FB714; - border-color: #1FB714; -} -.btn-outline-success:hover { - color: #FFFFFF; - background-color: #1FB714; - border-color: #1FB714; -} -.btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.5); -} -.btn-outline-success.disabled, .btn-outline-success:disabled { - color: #1FB714; - background-color: transparent; -} -.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #FFFFFF; - background-color: #1FB714; - border-color: #1FB714; -} -.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(31, 183, 20, 0.5); -} - -.btn-outline-info { - color: #02ABEA; - border-color: #02ABEA; -} -.btn-outline-info:hover { - color: #FFFFFF; - background-color: #02ABEA; - border-color: #02ABEA; -} -.btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(2, 171, 234, 0.5); -} -.btn-outline-info.disabled, .btn-outline-info:disabled { - color: #02ABEA; - background-color: transparent; -} -.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #FFFFFF; - background-color: #02ABEA; - border-color: #02ABEA; -} -.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(2, 171, 234, 0.5); -} - -.btn-outline-warning { - color: #FBF305; - border-color: #FBF305; -} -.btn-outline-warning:hover { - color: #404040; - background-color: #FBF305; - border-color: #FBF305; -} -.btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(251, 243, 5, 0.5); -} -.btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #FBF305; - background-color: transparent; -} -.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #404040; - background-color: #FBF305; - border-color: #FBF305; -} -.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(251, 243, 5, 0.5); -} - -.btn-outline-danger { - color: #DD0907; - border-color: #DD0907; -} -.btn-outline-danger:hover { - color: #FFFFFF; - background-color: #DD0907; - border-color: #DD0907; -} -.btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.5); -} -.btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #DD0907; - background-color: transparent; -} -.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #FFFFFF; - background-color: #DD0907; - border-color: #DD0907; -} -.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(221, 9, 7, 0.5); -} - -.btn-outline-light { - color: #C0C0C0; - border-color: #C0C0C0; -} -.btn-outline-light:hover { - color: #404040; - background-color: #C0C0C0; - border-color: #C0C0C0; -} -.btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(192, 192, 192, 0.5); -} -.btn-outline-light.disabled, .btn-outline-light:disabled { - color: #C0C0C0; - background-color: transparent; -} -.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #404040; - background-color: #C0C0C0; - border-color: #C0C0C0; -} -.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(192, 192, 192, 0.5); -} - -.btn-outline-dark { - color: #404040; - border-color: #404040; -} -.btn-outline-dark:hover { - color: #FFFFFF; - background-color: #404040; - border-color: #404040; -} -.btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(64, 64, 64, 0.5); -} -.btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #404040; - background-color: transparent; -} -.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #FFFFFF; - background-color: #404040; - border-color: #404040; -} -.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(64, 64, 64, 0.5); -} - -.btn-link { - font-weight: 400; - color: #02ABEA; -} -.btn-link:hover { - color: #F20884; - text-decoration: underline; -} -.btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; -} -.btn-link:disabled, .btn-link.disabled { - color: #808080; - pointer-events: none; -} - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -input[type=submit].btn-block, -input[type=reset].btn-block, -input[type=button].btn-block { - width: 100%; -} - -.fade { - transition: opacity 0.15s linear; -} -@media screen and (prefers-reduced-motion: reduce) { - .fade { - transition: none; - } -} -.fade:not(.show) { - opacity: 0; -} - -.collapse:not(.show) { - display: none; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; - } -} - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; -} - -.dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #000000; - text-align: left; - list-style: none; - background-color: #FFFFFF; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; -} - -.dropdown-menu-right { - right: 0; - left: auto; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-right { - right: 0; - left: auto; - } -} -@media (min-width: 768px) { - .dropdown-menu-md-right { - right: 0; - left: auto; - } -} -@media (min-width: 992px) { - .dropdown-menu-lg-right { - right: 0; - left: auto; - } -} -@media (min-width: 1200px) { - .dropdown-menu-xl-right { - right: 0; - left: auto; - } -} -.dropdown-menu-left { - right: auto; - left: 0; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; - } -} -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; - } -} -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; - } -} -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; - } -} -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; -} -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; -} -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} -.dropright .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropright .dropdown-toggle::after { - vertical-align: 0; -} - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; -} -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} -.dropleft .dropdown-toggle::after { - display: none; -} -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropleft .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-menu[x-placement^=top], .dropdown-menu[x-placement^=right], .dropdown-menu[x-placement^=bottom], .dropdown-menu[x-placement^=left] { - right: auto; - bottom: auto; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #C0C0C0; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #404040; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; -} -.dropdown-item:first-child { - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} -.dropdown-item:last-child { - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} -.dropdown-item:hover, .dropdown-item:focus { - color: #333333; - text-decoration: none; - background-color: #C0C0C0; -} -.dropdown-item.active, .dropdown-item:active { - color: #FFFFFF; - text-decoration: none; - background-color: #0000D3; -} -.dropdown-item.disabled, .dropdown-item:disabled { - color: #808080; - pointer-events: none; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #808080; - white-space: nowrap; -} - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #404040; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover { - z-index: 1; -} -.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active { - z-index: 1; -} - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; -} -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; -} -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} -.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; -} -.dropleft .dropdown-toggle-split::before { - margin-right: 0; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - width: 100%; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; -} -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; -} -.btn-group-toggle > .btn input[type=radio], -.btn-group-toggle > .btn input[type=checkbox], -.btn-group-toggle > .btn-group > .btn input[type=radio], -.btn-group-toggle > .btn-group > .btn input[type=checkbox] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; -} -.input-group > .form-control, -.input-group > .form-control-plaintext, -.input-group > .custom-select, -.input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; -} -.input-group > .form-control + .form-control, -.input-group > .form-control + .custom-select, -.input-group > .form-control + .custom-file, -.input-group > .form-control-plaintext + .form-control, -.input-group > .form-control-plaintext + .custom-select, -.input-group > .form-control-plaintext + .custom-file, -.input-group > .custom-select + .form-control, -.input-group > .custom-select + .custom-select, -.input-group > .custom-select + .custom-file, -.input-group > .custom-file + .form-control, -.input-group > .custom-file + .custom-select, -.input-group > .custom-file + .custom-file { - margin-left: -1px; -} -.input-group > .form-control:focus, -.input-group > .custom-select:focus, -.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; -} -.input-group > .custom-file .custom-file-input:focus { - z-index: 4; -} -.input-group > .form-control:not(:last-child), -.input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .form-control:not(:first-child), -.input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group > .custom-file { - display: flex; - align-items: center; -} -.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.input-group-prepend, -.input-group-append { - display: flex; -} -.input-group-prepend .btn, -.input-group-append .btn { - position: relative; - z-index: 2; -} -.input-group-prepend .btn:focus, -.input-group-append .btn:focus { - z-index: 3; -} -.input-group-prepend .btn + .btn, -.input-group-prepend .btn + .input-group-text, -.input-group-prepend .input-group-text + .input-group-text, -.input-group-prepend .input-group-text + .btn, -.input-group-append .btn + .btn, -.input-group-append .btn + .input-group-text, -.input-group-append .input-group-text + .input-group-text, -.input-group-append .input-group-text + .btn { - margin-left: -1px; -} - -.input-group-prepend { - margin-right: -1px; -} - -.input-group-append { - margin-left: -1px; -} - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1; - color: #404040; - text-align: center; - white-space: nowrap; - background-color: #C0C0C0; - border: 1px solid #808080; - border-radius: 0.25rem; -} -.input-group-text input[type=radio], -.input-group-text input[type=checkbox] { - margin-top: 0; -} - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(2.875rem + 2px); -} - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.8125rem + 2px); -} - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; -} - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.custom-control { - position: relative; - display: block; - min-height: 1rem; - padding-left: 1.5rem; -} - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: #FFFFFF; - border-color: #0000D3; - background-color: #0000D3; -} -.custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #5454ff; -} -.custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #FFFFFF; - background-color: #8787ff; - border-color: #8787ff; -} -.custom-control-input:disabled ~ .custom-control-label { - color: #808080; -} -.custom-control-input:disabled ~ .custom-control-label::before { - background-color: #C0C0C0; -} - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; -} -.custom-control-label::before { - position: absolute; - top: 0rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #FFFFFF; - border: #808080 solid 1px; -} -.custom-control-label::after { - position: absolute; - top: 0rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background-repeat: no-repeat; - background-position: center center; - background-size: 50% 50%; -} - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; -} -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23FFFFFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #0000D3; - background-color: #0000D3; -} -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23FFFFFF' d='M0 2h4'/%3e%3c/svg%3e"); -} -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 211, 0.5); -} -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(0, 0, 211, 0.5); -} - -.custom-radio .custom-control-label::before { - border-radius: 50%; -} -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23FFFFFF'/%3e%3c/svg%3e"); -} -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 211, 0.5); -} - -.custom-switch { - padding-left: 2.25rem; -} -.custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; -} -.custom-switch .custom-control-label::after { - top: calc(0rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #808080; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; - } -} -.custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #FFFFFF; - transform: translateX(0.75rem); -} -.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 0, 211, 0.5); -} - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-weight: 400; - line-height: 1; - color: #404040; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23404040' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #FFFFFF; - border: 1px solid #808080; - border-radius: 0.25rem; - appearance: none; -} -.custom-select:focus { - border-color: #5454ff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(84, 84, 255, 0.5); -} -.custom-select:focus::-ms-value { - color: #404040; - background-color: #FFFFFF; -} -.custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; -} -.custom-select:disabled { - color: #808080; - background-color: #C0C0C0; -} -.custom-select::-ms-expand { - opacity: 0; -} - -.custom-select-sm { - height: calc(1.8125rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; -} - -.custom-select-lg { - height: calc(2.875rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; -} - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.75rem + 2px); - margin-bottom: 0; -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.75rem + 2px); - margin: 0; - opacity: 0; -} -.custom-file-input:focus ~ .custom-file-label { - border-color: #5454ff; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.custom-file-input:disabled ~ .custom-file-label { - background-color: #C0C0C0; -} -.custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; -} -.custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1; - color: #404040; - background-color: #FFFFFF; - border: 1px solid #808080; - border-radius: 0.25rem; -} -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: 1.75rem; - padding: 0.375rem 0.75rem; - line-height: 1; - color: #404040; - content: "Browse"; - background-color: #C0C0C0; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; -} - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; -} -.custom-range:focus { - outline: none; -} -.custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #FFFFFF, 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #FFFFFF, 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #FFFFFF, 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.custom-range::-moz-focus-outer { - border: 0; -} -.custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #0000D3; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; - } -} -.custom-range::-webkit-slider-thumb:active { - background-color: #8787ff; -} -.custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #C0C0C0; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #0000D3; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; - } -} -.custom-range::-moz-range-thumb:active { - background-color: #8787ff; -} -.custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #C0C0C0; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #0000D3; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; - } -} -.custom-range::-ms-thumb:active { - background-color: #8787ff; -} -.custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; -} -.custom-range::-ms-fill-lower { - background-color: #C0C0C0; - border-radius: 1rem; -} -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #C0C0C0; - border-radius: 1rem; -} -.custom-range:disabled::-webkit-slider-thumb { - background-color: #808080; -} -.custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; -} -.custom-range:disabled::-moz-range-thumb { - background-color: #808080; -} -.custom-range:disabled::-moz-range-track { - cursor: default; -} -.custom-range:disabled::-ms-thumb { - background-color: #808080; -} - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .custom-control-label::before, -.custom-file-label, -.custom-select { - transition: none; - } -} - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav-link { - display: block; - padding: 0.5rem 1rem; -} -.nav-link:hover, .nav-link:focus { - text-decoration: none; -} -.nav-link.disabled { - color: #808080; - pointer-events: none; - cursor: default; -} - -.nav-tabs { - border-bottom: 1px solid #C0C0C0; -} -.nav-tabs .nav-item { - margin-bottom: -1px; -} -.nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #C0C0C0 #C0C0C0 #C0C0C0; -} -.nav-tabs .nav-link.disabled { - color: #808080; - background-color: transparent; - border-color: transparent; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #404040; - background-color: #FFFFFF; - border-color: #C0C0C0 #C0C0C0 #FFFFFF; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - border-radius: 0.25rem; -} -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #FFFFFF; - background-color: #0000D3; -} - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; -} - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; -} - -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; -} -.navbar > .container, -.navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} - -.navbar-brand { - display: inline-block; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; -} -.navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; -} - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} -.navbar-nav .dropdown-menu { - position: static; - float: none; -} - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; -} -.navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; -} -.navbar-toggler:not(:disabled):not(.disabled) { - cursor: pointer; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; -} - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } -} -@media (max-width: 767.98px) { - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } -} -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } -} -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } -} -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; -} -.navbar-expand .navbar-nav { - flex-direction: row; -} -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} -.navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - flex-wrap: nowrap; -} -.navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; -} -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); -} -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); -} -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #FFFFFF; -} -.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #FFFFFF; -} -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); -} -.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); -} -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #FFFFFF; -} -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); -} -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); -} -.navbar-dark .navbar-text a { - color: #FFFFFF; -} -.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #FFFFFF; -} - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #C0C0C0; - background-clip: border-box; - border: 1px solid rgba(192, 192, 192, 0.125); - border-radius: 0.25rem; -} -.card > hr { - margin-right: 0; - margin-left: 0; -} -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; -} - -.card-title { - margin-bottom: 0.75rem; -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} -.card-link + .card-link { - margin-left: 1.25rem; -} - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - color: inherit; - background-color: rgba(192, 192, 192, 0.03); - border-bottom: 1px solid rgba(192, 192, 192, 0.125); -} -.card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; -} -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(192, 192, 192, 0.03); - border-top: 1px solid rgba(192, 192, 192, 0.125); -} -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; -} - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} - -.card-deck { - display: flex; - flex-direction: column; -} -.card-deck .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; - } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; - } -} - -.card-group { - display: flex; - flex-direction: column; -} -.card-group > .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-group { - flex-flow: row wrap; - } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; - } - .card-group > .card:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:first-child .card-img-top, -.card-group > .card:first-child .card-header { - border-top-right-radius: 0; - } - .card-group > .card:first-child .card-img-bottom, -.card-group > .card:first-child .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:last-child .card-img-top, -.card-group > .card:last-child .card-header { - border-top-left-radius: 0; - } - .card-group > .card:last-child .card-img-bottom, -.card-group > .card:last-child .card-footer { - border-bottom-left-radius: 0; - } - .card-group > .card:only-child { - border-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-top, -.card-group > .card:only-child .card-header { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-bottom, -.card-group > .card:only-child .card-footer { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { - border-radius: 0; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { - border-radius: 0; - } -} - -.card-columns .card { - margin-bottom: 0.75rem; -} -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; - } - .card-columns .card { - display: inline-block; - width: 100%; - } -} - -.accordion .card { - overflow: hidden; -} -.accordion .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; -} -.accordion .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; -} -.accordion .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.accordion .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.accordion .card .card-header { - margin-bottom: -1px; -} - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #C0C0C0; - border-radius: 0.25rem; -} - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; -} -.breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #808080; - content: "/"; -} -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; -} -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; -} -.breadcrumb-item.active { - color: #808080; -} - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; -} - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #02ABEA; - background-color: #FFFFFF; - border: 1px solid #C0C0C0; -} -.page-link:hover { - z-index: 2; - color: #F20884; - text-decoration: none; - background-color: #C0C0C0; - border-color: #C0C0C0; -} -.page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 0, 211, 0.25); -} -.page-link:not(:disabled):not(.disabled) { - cursor: pointer; -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} -.page-item.active .page-link { - z-index: 1; - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} -.page-item.disabled .page-link { - color: #808080; - pointer-events: none; - cursor: auto; - background-color: #FFFFFF; - border-color: #C0C0C0; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; -} -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; -} -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; -} -a.badge:hover, a.badge:focus { - text-decoration: none; -} - -.badge:empty { - display: none; -} - -.btn .badge { - position: relative; - top: -1px; -} - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; -} - -.badge-primary { - color: #FFFFFF; - background-color: #0000D3; -} -a.badge-primary:hover, a.badge-primary:focus { - color: #FFFFFF; - background-color: #0000a0; -} - -.badge-secondary { - color: #FFFFFF; - background-color: #808080; -} -a.badge-secondary:hover, a.badge-secondary:focus { - color: #FFFFFF; - background-color: #676767; -} - -.badge-success { - color: #FFFFFF; - background-color: #1FB714; -} -a.badge-success:hover, a.badge-success:focus { - color: #FFFFFF; - background-color: #17890f; -} - -.badge-info { - color: #FFFFFF; - background-color: #02ABEA; -} -a.badge-info:hover, a.badge-info:focus { - color: #FFFFFF; - background-color: #0286b7; -} - -.badge-warning { - color: #404040; - background-color: #FBF305; -} -a.badge-warning:hover, a.badge-warning:focus { - color: #404040; - background-color: #cac303; -} - -.badge-danger { - color: #FFFFFF; - background-color: #DD0907; -} -a.badge-danger:hover, a.badge-danger:focus { - color: #FFFFFF; - background-color: #ac0705; -} - -.badge-light { - color: #404040; - background-color: #C0C0C0; -} -a.badge-light:hover, a.badge-light:focus { - color: #404040; - background-color: #a7a7a7; -} - -.badge-dark { - color: #FFFFFF; - background-color: #404040; -} -a.badge-dark:hover, a.badge-dark:focus { - color: #FFFFFF; - background-color: #272727; -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #C0C0C0; - border-radius: 0.3rem; -} -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; -} - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 4rem; -} -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; -} - -.alert-primary { - color: #00006e; - background-color: #ccccf6; - border-color: #b8b8f3; -} -.alert-primary hr { - border-top-color: #a2a2ef; -} -.alert-primary .alert-link { - color: #00003b; -} - -.alert-secondary { - color: #434343; - background-color: #e6e6e6; - border-color: #dbdbdb; -} -.alert-secondary hr { - border-top-color: #cecece; -} -.alert-secondary .alert-link { - color: #2a2a2a; -} - -.alert-success { - color: #105f0a; - background-color: #d2f1d0; - border-color: #c0ebbd; -} -.alert-success hr { - border-top-color: #ade5a9; -} -.alert-success .alert-link { - color: #083105; -} - -.alert-info { - color: #01597a; - background-color: #cceefb; - border-color: #b8e7f9; -} -.alert-info hr { - border-top-color: #a0dff7; -} -.alert-info .alert-link { - color: #013447; -} - -.alert-warning { - color: #837e03; - background-color: #fefdcd; - border-color: #fefcb9; -} -.alert-warning hr { - border-top-color: #fefba0; -} -.alert-warning .alert-link { - color: #514e02; -} - -.alert-danger { - color: #730504; - background-color: #f8cecd; - border-color: #f5baba; -} -.alert-danger hr { - border-top-color: #f2a4a4; -} -.alert-danger .alert-link { - color: #420302; -} - -.alert-light { - color: #646464; - background-color: #f2f2f2; - border-color: #ededed; -} -.alert-light hr { - border-top-color: #e0e0e0; -} -.alert-light .alert-link { - color: #4b4b4b; -} - -.alert-dark { - color: #212121; - background-color: #d9d9d9; - border-color: #cacaca; -} -.alert-dark hr { - border-top-color: #bdbdbd; -} -.alert-dark .alert-link { - color: #080808; -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #C0C0C0; - border-radius: 0.25rem; -} - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #FFFFFF; - text-align: center; - white-space: nowrap; - background-color: #0000D3; - transition: width 0.6s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; -} - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; -} - -.media { - display: flex; - align-items: flex-start; -} - -.media-body { - flex: 1; -} - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; -} - -.list-group-item-action { - width: 100%; - color: #404040; - text-align: inherit; -} -.list-group-item-action:hover, .list-group-item-action:focus { - color: #404040; - text-decoration: none; - background-color: #C0C0C0; -} -.list-group-item-action:active { - color: #000000; - background-color: #C0C0C0; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #FFFFFF; - border: 1px solid rgba(0, 0, 0, 0.125); -} -.list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.list-group-item:hover, .list-group-item:focus { - z-index: 1; - text-decoration: none; -} -.list-group-item.disabled, .list-group-item:disabled { - color: #808080; - pointer-events: none; - background-color: #FFFFFF; -} -.list-group-item.active { - z-index: 2; - color: #FFFFFF; - background-color: #0000D3; - border-color: #0000D3; -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px; -} -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; -} -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; -} - -.list-group-item-primary { - color: #00006e; - background-color: #b8b8f3; -} -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #00006e; - background-color: #a2a2ef; -} -.list-group-item-primary.list-group-item-action.active { - color: #FFFFFF; - background-color: #00006e; - border-color: #00006e; -} - -.list-group-item-secondary { - color: #434343; - background-color: #dbdbdb; -} -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #434343; - background-color: #cecece; -} -.list-group-item-secondary.list-group-item-action.active { - color: #FFFFFF; - background-color: #434343; - border-color: #434343; -} - -.list-group-item-success { - color: #105f0a; - background-color: #c0ebbd; -} -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #105f0a; - background-color: #ade5a9; -} -.list-group-item-success.list-group-item-action.active { - color: #FFFFFF; - background-color: #105f0a; - border-color: #105f0a; -} - -.list-group-item-info { - color: #01597a; - background-color: #b8e7f9; -} -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #01597a; - background-color: #a0dff7; -} -.list-group-item-info.list-group-item-action.active { - color: #FFFFFF; - background-color: #01597a; - border-color: #01597a; -} - -.list-group-item-warning { - color: #837e03; - background-color: #fefcb9; -} -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #837e03; - background-color: #fefba0; -} -.list-group-item-warning.list-group-item-action.active { - color: #FFFFFF; - background-color: #837e03; - border-color: #837e03; -} - -.list-group-item-danger { - color: #730504; - background-color: #f5baba; -} -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #730504; - background-color: #f2a4a4; -} -.list-group-item-danger.list-group-item-action.active { - color: #FFFFFF; - background-color: #730504; - border-color: #730504; -} - -.list-group-item-light { - color: #646464; - background-color: #ededed; -} -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #646464; - background-color: #e0e0e0; -} -.list-group-item-light.list-group-item-action.active { - color: #FFFFFF; - background-color: #646464; - border-color: #646464; -} - -.list-group-item-dark { - color: #212121; - background-color: #cacaca; -} -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #212121; - background-color: #bdbdbd; -} -.list-group-item-dark.list-group-item-action.active { - color: #FFFFFF; - background-color: #212121; - border-color: #212121; -} - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #FFFFFF; - opacity: 0.5; -} -.close:hover { - color: #000000; - text-decoration: none; -} -.close:not(:disabled):not(.disabled) { - cursor: pointer; -} -.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: 0.75; -} - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; -} - -a.close.disabled { - pointer-events: none; -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 0.25rem; - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; -} -.toast:not(:last-child) { - margin-bottom: 0.75rem; -} -.toast.showing { - opacity: 1; -} -.toast.show { - display: block; - opacity: 1; -} -.toast.hide { - display: none; -} - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #808080; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.toast-body { - padding: 0.75rem; -} - -.modal-open { - overflow: hidden; -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} -.modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); -} -@media screen and (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; - } -} -.modal.show .modal-dialog { - transform: none; -} - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - (0.5rem * 2)); -} -.modal-dialog-centered::before { - display: block; - height: calc(100vh - (0.5rem * 2)); - content: ""; -} - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #FFFFFF; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #C0C0C0; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1; -} - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; -} - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #C0C0C0; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.modal-footer > :not(:first-child) { - margin-left: 0.25rem; -} -.modal-footer > :not(:last-child) { - margin-right: 0.25rem; -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - - .modal-dialog-centered { - min-height: calc(100% - (1.75rem * 2)); - } - .modal-dialog-centered::before { - height: calc(100vh - (1.75rem * 2)); - } - - .modal-sm { - max-width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg, -.modal-xl { - max-width: 800px; - } -} -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: "ChicagoFLF"; - font-style: normal; - font-weight: 400; - line-height: 1; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; -} -.tooltip.show { - opacity: 0.9; -} -.tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} -.tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^=top] { - padding: 0.4rem 0; -} -.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=top] .arrow { - bottom: 0; -} -.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=top] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000000; -} - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^=right] { - padding: 0 0.4rem; -} -.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=right] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=right] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000000; -} - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=bottom] { - padding: 0.4rem 0; -} -.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=bottom] .arrow { - top: 0; -} -.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=bottom] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000000; -} - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^=left] { - padding: 0 0.4rem; -} -.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=left] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=left] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #FFFFFF; - text-align: center; - background-color: #000000; - border-radius: 0.25rem; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: "ChicagoFLF"; - font-style: normal; - font-weight: 400; - line-height: 1; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #FFFFFF; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; -} -.popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; -} -.popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-popover-top, .bs-popover-auto[x-placement^=top] { - margin-bottom: 0.5rem; -} -.bs-popover-top .arrow, .bs-popover-auto[x-placement^=top] .arrow { - bottom: calc((0.5rem + 1px) * -1); -} -.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=top] .arrow::before, -.bs-popover-top .arrow::after, -.bs-popover-auto[x-placement^=top] .arrow::after { - border-width: 0.5rem 0.5rem 0; -} -.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=top] .arrow::before { - bottom: 0; - border-top-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=top] .arrow::after { - bottom: 1px; - border-top-color: #FFFFFF; -} - -.bs-popover-right, .bs-popover-auto[x-placement^=right] { - margin-left: 0.5rem; -} -.bs-popover-right .arrow, .bs-popover-auto[x-placement^=right] .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=right] .arrow::before, -.bs-popover-right .arrow::after, -.bs-popover-auto[x-placement^=right] .arrow::after { - border-width: 0.5rem 0.5rem 0.5rem 0; -} -.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=right] .arrow::before { - left: 0; - border-right-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=right] .arrow::after { - left: 1px; - border-right-color: #FFFFFF; -} - -.bs-popover-bottom, .bs-popover-auto[x-placement^=bottom] { - margin-top: 0.5rem; -} -.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=bottom] .arrow { - top: calc((0.5rem + 1px) * -1); -} -.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=bottom] .arrow::before, -.bs-popover-bottom .arrow::after, -.bs-popover-auto[x-placement^=bottom] .arrow::after { - border-width: 0 0.5rem 0.5rem 0.5rem; -} -.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=bottom] .arrow::before { - top: 0; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=bottom] .arrow::after { - top: 1px; - border-bottom-color: #FFFFFF; -} -.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; -} - -.bs-popover-left, .bs-popover-auto[x-placement^=left] { - margin-right: 0.5rem; -} -.bs-popover-left .arrow, .bs-popover-auto[x-placement^=left] .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=left] .arrow::before, -.bs-popover-left .arrow::after, -.bs-popover-auto[x-placement^=left] .arrow::after { - border-width: 0.5rem 0 0.5rem 0.5rem; -} -.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=left] .arrow::before { - right: 0; - border-left-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=left] .arrow::after { - right: 1px; - border-left-color: #FFFFFF; -} - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - color: inherit; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 0.5rem 0.75rem; - color: #000000; -} - -.carousel { - position: relative; -} - -.carousel.pointer-event { - touch-action: pan-y; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner::after { - display: block; - clear: both; - content: ""; -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); -} - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; -} -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; -} -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - transition: none; - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #FFFFFF; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-control-prev, -.carousel-control-next { - transition: none; - } -} -.carousel-control-prev:hover, .carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #FFFFFF; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: transparent no-repeat center center; - background-size: 100% 100%; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFFFFF' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFFFFF' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; -} -.carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #FFFFFF; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - transition: opacity 0.6s ease; -} -@media screen and (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; - } -} -.carousel-indicators .active { - opacity: 1; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #FFFFFF; - text-align: center; -} - -@keyframes spinner-border { - to { - transform: rotate(360deg); - } -} -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border 0.75s linear infinite; -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; -} - -@keyframes spinner-grow { - 0% { - transform: scale(0); - } - 50% { - opacity: 1; - } -} -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow 0.75s linear infinite; -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.bg-primary { - background-color: #0000D3 !important; -} - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #0000a0 !important; -} - -.bg-secondary { - background-color: #808080 !important; -} - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #676767 !important; -} - -.bg-success { - background-color: #1FB714 !important; -} - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #17890f !important; -} - -.bg-info { - background-color: #02ABEA !important; -} - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #0286b7 !important; -} - -.bg-warning { - background-color: #FBF305 !important; -} - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #cac303 !important; -} - -.bg-danger { - background-color: #DD0907 !important; -} - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #ac0705 !important; -} - -.bg-light { - background-color: #C0C0C0 !important; -} - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #a7a7a7 !important; -} - -.bg-dark { - background-color: #404040 !important; -} - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #272727 !important; -} - -.bg-white { - background-color: #FFFFFF !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.border { - border: 1px solid #C0C0C0 !important; -} - -.border-top { - border-top: 1px solid #C0C0C0 !important; -} - -.border-right { - border-right: 1px solid #C0C0C0 !important; -} - -.border-bottom { - border-bottom: 1px solid #C0C0C0 !important; -} - -.border-left { - border-left: 1px solid #C0C0C0 !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-right-0 { - border-right: 0 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-left-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #0000D3 !important; -} - -.border-secondary { - border-color: #808080 !important; -} - -.border-success { - border-color: #1FB714 !important; -} - -.border-info { - border-color: #02ABEA !important; -} - -.border-warning { - border-color: #FBF305 !important; -} - -.border-danger { - border-color: #DD0907 !important; -} - -.border-light { - border-color: #C0C0C0 !important; -} - -.border-dark { - border-color: #404040 !important; -} - -.border-white { - border-color: #FFFFFF !important; -} - -.rounded { - border-radius: 0.25rem !important; -} - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; -} - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 50rem !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.d-none { - display: none !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; - } - - .d-sm-inline { - display: inline !important; - } - - .d-sm-inline-block { - display: inline-block !important; - } - - .d-sm-block { - display: block !important; - } - - .d-sm-table { - display: table !important; - } - - .d-sm-table-row { - display: table-row !important; - } - - .d-sm-table-cell { - display: table-cell !important; - } - - .d-sm-flex { - display: flex !important; - } - - .d-sm-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 768px) { - .d-md-none { - display: none !important; - } - - .d-md-inline { - display: inline !important; - } - - .d-md-inline-block { - display: inline-block !important; - } - - .d-md-block { - display: block !important; - } - - .d-md-table { - display: table !important; - } - - .d-md-table-row { - display: table-row !important; - } - - .d-md-table-cell { - display: table-cell !important; - } - - .d-md-flex { - display: flex !important; - } - - .d-md-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 992px) { - .d-lg-none { - display: none !important; - } - - .d-lg-inline { - display: inline !important; - } - - .d-lg-inline-block { - display: inline-block !important; - } - - .d-lg-block { - display: block !important; - } - - .d-lg-table { - display: table !important; - } - - .d-lg-table-row { - display: table-row !important; - } - - .d-lg-table-cell { - display: table-cell !important; - } - - .d-lg-flex { - display: flex !important; - } - - .d-lg-inline-flex { - display: inline-flex !important; - } -} -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; - } - - .d-xl-inline { - display: inline !important; - } - - .d-xl-inline-block { - display: inline-block !important; - } - - .d-xl-block { - display: block !important; - } - - .d-xl-table { - display: table !important; - } - - .d-xl-table-row { - display: table-row !important; - } - - .d-xl-table-cell { - display: table-cell !important; - } - - .d-xl-flex { - display: flex !important; - } - - .d-xl-inline-flex { - display: inline-flex !important; - } -} -@media print { - .d-print-none { - display: none !important; - } - - .d-print-inline { - display: inline !important; - } - - .d-print-inline-block { - display: inline-block !important; - } - - .d-print-block { - display: block !important; - } - - .d-print-table { - display: table !important; - } - - .d-print-table-row { - display: table-row !important; - } - - .d-print-table-cell { - display: table-cell !important; - } - - .d-print-flex { - display: flex !important; - } - - .d-print-inline-flex { - display: inline-flex !important; - } -} -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; -} -.embed-responsive::before { - display: block; - content: ""; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - -.embed-responsive-21by9::before { - padding-top: 42.8571428571%; -} - -.embed-responsive-16by9::before { - padding-top: 56.25%; -} - -.embed-responsive-3by4::before { - padding-top: 133.3333333333%; -} - -.embed-responsive-1by1::before { - padding-top: 100%; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; - } - - .flex-sm-column { - flex-direction: column !important; - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-sm-wrap { - flex-wrap: wrap !important; - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-sm-fill { - flex: 1 1 auto !important; - } - - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-sm-start { - justify-content: flex-start !important; - } - - .justify-content-sm-end { - justify-content: flex-end !important; - } - - .justify-content-sm-center { - justify-content: center !important; - } - - .justify-content-sm-between { - justify-content: space-between !important; - } - - .justify-content-sm-around { - justify-content: space-around !important; - } - - .align-items-sm-start { - align-items: flex-start !important; - } - - .align-items-sm-end { - align-items: flex-end !important; - } - - .align-items-sm-center { - align-items: center !important; - } - - .align-items-sm-baseline { - align-items: baseline !important; - } - - .align-items-sm-stretch { - align-items: stretch !important; - } - - .align-content-sm-start { - align-content: flex-start !important; - } - - .align-content-sm-end { - align-content: flex-end !important; - } - - .align-content-sm-center { - align-content: center !important; - } - - .align-content-sm-between { - align-content: space-between !important; - } - - .align-content-sm-around { - align-content: space-around !important; - } - - .align-content-sm-stretch { - align-content: stretch !important; - } - - .align-self-sm-auto { - align-self: auto !important; - } - - .align-self-sm-start { - align-self: flex-start !important; - } - - .align-self-sm-end { - align-self: flex-end !important; - } - - .align-self-sm-center { - align-self: center !important; - } - - .align-self-sm-baseline { - align-self: baseline !important; - } - - .align-self-sm-stretch { - align-self: stretch !important; - } -} -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; - } - - .flex-md-column { - flex-direction: column !important; - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-md-wrap { - flex-wrap: wrap !important; - } - - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-md-fill { - flex: 1 1 auto !important; - } - - .flex-md-grow-0 { - flex-grow: 0 !important; - } - - .flex-md-grow-1 { - flex-grow: 1 !important; - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-md-start { - justify-content: flex-start !important; - } - - .justify-content-md-end { - justify-content: flex-end !important; - } - - .justify-content-md-center { - justify-content: center !important; - } - - .justify-content-md-between { - justify-content: space-between !important; - } - - .justify-content-md-around { - justify-content: space-around !important; - } - - .align-items-md-start { - align-items: flex-start !important; - } - - .align-items-md-end { - align-items: flex-end !important; - } - - .align-items-md-center { - align-items: center !important; - } - - .align-items-md-baseline { - align-items: baseline !important; - } - - .align-items-md-stretch { - align-items: stretch !important; - } - - .align-content-md-start { - align-content: flex-start !important; - } - - .align-content-md-end { - align-content: flex-end !important; - } - - .align-content-md-center { - align-content: center !important; - } - - .align-content-md-between { - align-content: space-between !important; - } - - .align-content-md-around { - align-content: space-around !important; - } - - .align-content-md-stretch { - align-content: stretch !important; - } - - .align-self-md-auto { - align-self: auto !important; - } - - .align-self-md-start { - align-self: flex-start !important; - } - - .align-self-md-end { - align-self: flex-end !important; - } - - .align-self-md-center { - align-self: center !important; - } - - .align-self-md-baseline { - align-self: baseline !important; - } - - .align-self-md-stretch { - align-self: stretch !important; - } -} -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; - } - - .flex-lg-column { - flex-direction: column !important; - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-lg-wrap { - flex-wrap: wrap !important; - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-lg-fill { - flex: 1 1 auto !important; - } - - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-lg-start { - justify-content: flex-start !important; - } - - .justify-content-lg-end { - justify-content: flex-end !important; - } - - .justify-content-lg-center { - justify-content: center !important; - } - - .justify-content-lg-between { - justify-content: space-between !important; - } - - .justify-content-lg-around { - justify-content: space-around !important; - } - - .align-items-lg-start { - align-items: flex-start !important; - } - - .align-items-lg-end { - align-items: flex-end !important; - } - - .align-items-lg-center { - align-items: center !important; - } - - .align-items-lg-baseline { - align-items: baseline !important; - } - - .align-items-lg-stretch { - align-items: stretch !important; - } - - .align-content-lg-start { - align-content: flex-start !important; - } - - .align-content-lg-end { - align-content: flex-end !important; - } - - .align-content-lg-center { - align-content: center !important; - } - - .align-content-lg-between { - align-content: space-between !important; - } - - .align-content-lg-around { - align-content: space-around !important; - } - - .align-content-lg-stretch { - align-content: stretch !important; - } - - .align-self-lg-auto { - align-self: auto !important; - } - - .align-self-lg-start { - align-self: flex-start !important; - } - - .align-self-lg-end { - align-self: flex-end !important; - } - - .align-self-lg-center { - align-self: center !important; - } - - .align-self-lg-baseline { - align-self: baseline !important; - } - - .align-self-lg-stretch { - align-self: stretch !important; - } -} -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; - } - - .flex-xl-column { - flex-direction: column !important; - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xl-wrap { - flex-wrap: wrap !important; - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .flex-xl-fill { - flex: 1 1 auto !important; - } - - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - - .justify-content-xl-start { - justify-content: flex-start !important; - } - - .justify-content-xl-end { - justify-content: flex-end !important; - } - - .justify-content-xl-center { - justify-content: center !important; - } - - .justify-content-xl-between { - justify-content: space-between !important; - } - - .justify-content-xl-around { - justify-content: space-around !important; - } - - .align-items-xl-start { - align-items: flex-start !important; - } - - .align-items-xl-end { - align-items: flex-end !important; - } - - .align-items-xl-center { - align-items: center !important; - } - - .align-items-xl-baseline { - align-items: baseline !important; - } - - .align-items-xl-stretch { - align-items: stretch !important; - } - - .align-content-xl-start { - align-content: flex-start !important; - } - - .align-content-xl-end { - align-content: flex-end !important; - } - - .align-content-xl-center { - align-content: center !important; - } - - .align-content-xl-between { - align-content: space-between !important; - } - - .align-content-xl-around { - align-content: space-around !important; - } - - .align-content-xl-stretch { - align-content: stretch !important; - } - - .align-self-xl-auto { - align-self: auto !important; - } - - .align-self-xl-start { - align-self: flex-start !important; - } - - .align-self-xl-end { - align-self: flex-end !important; - } - - .align-self-xl-center { - align-self: center !important; - } - - .align-self-xl-baseline { - align-self: baseline !important; - } - - .align-self-xl-stretch { - align-self: stretch !important; - } -} -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.float-none { - float: none !important; -} - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; - } - - .float-sm-right { - float: right !important; - } - - .float-sm-none { - float: none !important; - } -} -@media (min-width: 768px) { - .float-md-left { - float: left !important; - } - - .float-md-right { - float: right !important; - } - - .float-md-none { - float: none !important; - } -} -@media (min-width: 992px) { - .float-lg-left { - float: left !important; - } - - .float-lg-right { - float: right !important; - } - - .float-lg-none { - float: none !important; - } -} -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; - } - - .float-xl-right { - float: right !important; - } - - .float-xl-none { - float: none !important; - } -} -.overflow-auto { - overflow: auto !important; -} - -.overflow-hidden { - overflow: hidden !important; -} - -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: sticky !important; -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; -} - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none { - box-shadow: none !important; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.w-auto { - width: auto !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.h-auto { - height: auto !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.min-vw-100 { - min-width: 100vw !important; -} - -.min-vh-100 { - min-height: 100vh !important; -} - -.vw-100 { - width: 100vw !important; -} - -.vh-100 { - height: 100vh !important; -} - -.m-0 { - margin: 0 !important; -} - -.mt-0, -.my-0 { - margin-top: 0 !important; -} - -.mr-0, -.mx-0 { - margin-right: 0 !important; -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} - -.ml-0, -.mx-0 { - margin-left: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.mt-3, -.my-3 { - margin-top: 1rem !important; -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.mt-5, -.my-5 { - margin-top: 3rem !important; -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0, -.py-0 { - padding-top: 0 !important; -} - -.pr-0, -.px-0 { - padding-right: 0 !important; -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} - -.pl-0, -.px-0 { - padding-left: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.pt-3, -.py-3 { - padding-top: 1rem !important; -} - -.pr-3, -.px-3 { - padding-right: 1rem !important; -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} - -.pl-3, -.px-3 { - padding-left: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.pt-5, -.py-5 { - padding-top: 3rem !important; -} - -.pr-5, -.px-5 { - padding-right: 3rem !important; -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} - -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -.m-n1 { - margin: -0.25rem !important; -} - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; -} - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; -} - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; -} - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; -} - -.m-n2 { - margin: -0.5rem !important; -} - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; -} - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; -} - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; -} - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; -} - -.m-n3 { - margin: -1rem !important; -} - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; -} - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; -} - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; -} - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; -} - -.m-n4 { - margin: -1.5rem !important; -} - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; -} - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; -} - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; -} - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; -} - -.m-n5 { - margin: -3rem !important; -} - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; -} - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; -} - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; -} - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mt-auto, -.my-auto { - margin-top: auto !important; -} - -.mr-auto, -.mx-auto { - margin-right: auto !important; -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important; -} - -.ml-auto, -.mx-auto { - margin-left: auto !important; -} - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; - } - - .mt-sm-0, -.my-sm-0 { - margin-top: 0 !important; - } - - .mr-sm-0, -.mx-sm-0 { - margin-right: 0 !important; - } - - .mb-sm-0, -.my-sm-0 { - margin-bottom: 0 !important; - } - - .ml-sm-0, -.mx-sm-0 { - margin-left: 0 !important; - } - - .m-sm-1 { - margin: 0.25rem !important; - } - - .mt-sm-1, -.my-sm-1 { - margin-top: 0.25rem !important; - } - - .mr-sm-1, -.mx-sm-1 { - margin-right: 0.25rem !important; - } - - .mb-sm-1, -.my-sm-1 { - margin-bottom: 0.25rem !important; - } - - .ml-sm-1, -.mx-sm-1 { - margin-left: 0.25rem !important; - } - - .m-sm-2 { - margin: 0.5rem !important; - } - - .mt-sm-2, -.my-sm-2 { - margin-top: 0.5rem !important; - } - - .mr-sm-2, -.mx-sm-2 { - margin-right: 0.5rem !important; - } - - .mb-sm-2, -.my-sm-2 { - margin-bottom: 0.5rem !important; - } - - .ml-sm-2, -.mx-sm-2 { - margin-left: 0.5rem !important; - } - - .m-sm-3 { - margin: 1rem !important; - } - - .mt-sm-3, -.my-sm-3 { - margin-top: 1rem !important; - } - - .mr-sm-3, -.mx-sm-3 { - margin-right: 1rem !important; - } - - .mb-sm-3, -.my-sm-3 { - margin-bottom: 1rem !important; - } - - .ml-sm-3, -.mx-sm-3 { - margin-left: 1rem !important; - } - - .m-sm-4 { - margin: 1.5rem !important; - } - - .mt-sm-4, -.my-sm-4 { - margin-top: 1.5rem !important; - } - - .mr-sm-4, -.mx-sm-4 { - margin-right: 1.5rem !important; - } - - .mb-sm-4, -.my-sm-4 { - margin-bottom: 1.5rem !important; - } - - .ml-sm-4, -.mx-sm-4 { - margin-left: 1.5rem !important; - } - - .m-sm-5 { - margin: 3rem !important; - } - - .mt-sm-5, -.my-sm-5 { - margin-top: 3rem !important; - } - - .mr-sm-5, -.mx-sm-5 { - margin-right: 3rem !important; - } - - .mb-sm-5, -.my-sm-5 { - margin-bottom: 3rem !important; - } - - .ml-sm-5, -.mx-sm-5 { - margin-left: 3rem !important; - } - - .p-sm-0 { - padding: 0 !important; - } - - .pt-sm-0, -.py-sm-0 { - padding-top: 0 !important; - } - - .pr-sm-0, -.px-sm-0 { - padding-right: 0 !important; - } - - .pb-sm-0, -.py-sm-0 { - padding-bottom: 0 !important; - } - - .pl-sm-0, -.px-sm-0 { - padding-left: 0 !important; - } - - .p-sm-1 { - padding: 0.25rem !important; - } - - .pt-sm-1, -.py-sm-1 { - padding-top: 0.25rem !important; - } - - .pr-sm-1, -.px-sm-1 { - padding-right: 0.25rem !important; - } - - .pb-sm-1, -.py-sm-1 { - padding-bottom: 0.25rem !important; - } - - .pl-sm-1, -.px-sm-1 { - padding-left: 0.25rem !important; - } - - .p-sm-2 { - padding: 0.5rem !important; - } - - .pt-sm-2, -.py-sm-2 { - padding-top: 0.5rem !important; - } - - .pr-sm-2, -.px-sm-2 { - padding-right: 0.5rem !important; - } - - .pb-sm-2, -.py-sm-2 { - padding-bottom: 0.5rem !important; - } - - .pl-sm-2, -.px-sm-2 { - padding-left: 0.5rem !important; - } - - .p-sm-3 { - padding: 1rem !important; - } - - .pt-sm-3, -.py-sm-3 { - padding-top: 1rem !important; - } - - .pr-sm-3, -.px-sm-3 { - padding-right: 1rem !important; - } - - .pb-sm-3, -.py-sm-3 { - padding-bottom: 1rem !important; - } - - .pl-sm-3, -.px-sm-3 { - padding-left: 1rem !important; - } - - .p-sm-4 { - padding: 1.5rem !important; - } - - .pt-sm-4, -.py-sm-4 { - padding-top: 1.5rem !important; - } - - .pr-sm-4, -.px-sm-4 { - padding-right: 1.5rem !important; - } - - .pb-sm-4, -.py-sm-4 { - padding-bottom: 1.5rem !important; - } - - .pl-sm-4, -.px-sm-4 { - padding-left: 1.5rem !important; - } - - .p-sm-5 { - padding: 3rem !important; - } - - .pt-sm-5, -.py-sm-5 { - padding-top: 3rem !important; - } - - .pr-sm-5, -.px-sm-5 { - padding-right: 3rem !important; - } - - .pb-sm-5, -.py-sm-5 { - padding-bottom: 3rem !important; - } - - .pl-sm-5, -.px-sm-5 { - padding-left: 3rem !important; - } - - .m-sm-n1 { - margin: -0.25rem !important; - } - - .mt-sm-n1, -.my-sm-n1 { - margin-top: -0.25rem !important; - } - - .mr-sm-n1, -.mx-sm-n1 { - margin-right: -0.25rem !important; - } - - .mb-sm-n1, -.my-sm-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-sm-n1, -.mx-sm-n1 { - margin-left: -0.25rem !important; - } - - .m-sm-n2 { - margin: -0.5rem !important; - } - - .mt-sm-n2, -.my-sm-n2 { - margin-top: -0.5rem !important; - } - - .mr-sm-n2, -.mx-sm-n2 { - margin-right: -0.5rem !important; - } - - .mb-sm-n2, -.my-sm-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-sm-n2, -.mx-sm-n2 { - margin-left: -0.5rem !important; - } - - .m-sm-n3 { - margin: -1rem !important; - } - - .mt-sm-n3, -.my-sm-n3 { - margin-top: -1rem !important; - } - - .mr-sm-n3, -.mx-sm-n3 { - margin-right: -1rem !important; - } - - .mb-sm-n3, -.my-sm-n3 { - margin-bottom: -1rem !important; - } - - .ml-sm-n3, -.mx-sm-n3 { - margin-left: -1rem !important; - } - - .m-sm-n4 { - margin: -1.5rem !important; - } - - .mt-sm-n4, -.my-sm-n4 { - margin-top: -1.5rem !important; - } - - .mr-sm-n4, -.mx-sm-n4 { - margin-right: -1.5rem !important; - } - - .mb-sm-n4, -.my-sm-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-sm-n4, -.mx-sm-n4 { - margin-left: -1.5rem !important; - } - - .m-sm-n5 { - margin: -3rem !important; - } - - .mt-sm-n5, -.my-sm-n5 { - margin-top: -3rem !important; - } - - .mr-sm-n5, -.mx-sm-n5 { - margin-right: -3rem !important; - } - - .mb-sm-n5, -.my-sm-n5 { - margin-bottom: -3rem !important; - } - - .ml-sm-n5, -.mx-sm-n5 { - margin-left: -3rem !important; - } - - .m-sm-auto { - margin: auto !important; - } - - .mt-sm-auto, -.my-sm-auto { - margin-top: auto !important; - } - - .mr-sm-auto, -.mx-sm-auto { - margin-right: auto !important; - } - - .mb-sm-auto, -.my-sm-auto { - margin-bottom: auto !important; - } - - .ml-sm-auto, -.mx-sm-auto { - margin-left: auto !important; - } -} -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; - } - - .mt-md-0, -.my-md-0 { - margin-top: 0 !important; - } - - .mr-md-0, -.mx-md-0 { - margin-right: 0 !important; - } - - .mb-md-0, -.my-md-0 { - margin-bottom: 0 !important; - } - - .ml-md-0, -.mx-md-0 { - margin-left: 0 !important; - } - - .m-md-1 { - margin: 0.25rem !important; - } - - .mt-md-1, -.my-md-1 { - margin-top: 0.25rem !important; - } - - .mr-md-1, -.mx-md-1 { - margin-right: 0.25rem !important; - } - - .mb-md-1, -.my-md-1 { - margin-bottom: 0.25rem !important; - } - - .ml-md-1, -.mx-md-1 { - margin-left: 0.25rem !important; - } - - .m-md-2 { - margin: 0.5rem !important; - } - - .mt-md-2, -.my-md-2 { - margin-top: 0.5rem !important; - } - - .mr-md-2, -.mx-md-2 { - margin-right: 0.5rem !important; - } - - .mb-md-2, -.my-md-2 { - margin-bottom: 0.5rem !important; - } - - .ml-md-2, -.mx-md-2 { - margin-left: 0.5rem !important; - } - - .m-md-3 { - margin: 1rem !important; - } - - .mt-md-3, -.my-md-3 { - margin-top: 1rem !important; - } - - .mr-md-3, -.mx-md-3 { - margin-right: 1rem !important; - } - - .mb-md-3, -.my-md-3 { - margin-bottom: 1rem !important; - } - - .ml-md-3, -.mx-md-3 { - margin-left: 1rem !important; - } - - .m-md-4 { - margin: 1.5rem !important; - } - - .mt-md-4, -.my-md-4 { - margin-top: 1.5rem !important; - } - - .mr-md-4, -.mx-md-4 { - margin-right: 1.5rem !important; - } - - .mb-md-4, -.my-md-4 { - margin-bottom: 1.5rem !important; - } - - .ml-md-4, -.mx-md-4 { - margin-left: 1.5rem !important; - } - - .m-md-5 { - margin: 3rem !important; - } - - .mt-md-5, -.my-md-5 { - margin-top: 3rem !important; - } - - .mr-md-5, -.mx-md-5 { - margin-right: 3rem !important; - } - - .mb-md-5, -.my-md-5 { - margin-bottom: 3rem !important; - } - - .ml-md-5, -.mx-md-5 { - margin-left: 3rem !important; - } - - .p-md-0 { - padding: 0 !important; - } - - .pt-md-0, -.py-md-0 { - padding-top: 0 !important; - } - - .pr-md-0, -.px-md-0 { - padding-right: 0 !important; - } - - .pb-md-0, -.py-md-0 { - padding-bottom: 0 !important; - } - - .pl-md-0, -.px-md-0 { - padding-left: 0 !important; - } - - .p-md-1 { - padding: 0.25rem !important; - } - - .pt-md-1, -.py-md-1 { - padding-top: 0.25rem !important; - } - - .pr-md-1, -.px-md-1 { - padding-right: 0.25rem !important; - } - - .pb-md-1, -.py-md-1 { - padding-bottom: 0.25rem !important; - } - - .pl-md-1, -.px-md-1 { - padding-left: 0.25rem !important; - } - - .p-md-2 { - padding: 0.5rem !important; - } - - .pt-md-2, -.py-md-2 { - padding-top: 0.5rem !important; - } - - .pr-md-2, -.px-md-2 { - padding-right: 0.5rem !important; - } - - .pb-md-2, -.py-md-2 { - padding-bottom: 0.5rem !important; - } - - .pl-md-2, -.px-md-2 { - padding-left: 0.5rem !important; - } - - .p-md-3 { - padding: 1rem !important; - } - - .pt-md-3, -.py-md-3 { - padding-top: 1rem !important; - } - - .pr-md-3, -.px-md-3 { - padding-right: 1rem !important; - } - - .pb-md-3, -.py-md-3 { - padding-bottom: 1rem !important; - } - - .pl-md-3, -.px-md-3 { - padding-left: 1rem !important; - } - - .p-md-4 { - padding: 1.5rem !important; - } - - .pt-md-4, -.py-md-4 { - padding-top: 1.5rem !important; - } - - .pr-md-4, -.px-md-4 { - padding-right: 1.5rem !important; - } - - .pb-md-4, -.py-md-4 { - padding-bottom: 1.5rem !important; - } - - .pl-md-4, -.px-md-4 { - padding-left: 1.5rem !important; - } - - .p-md-5 { - padding: 3rem !important; - } - - .pt-md-5, -.py-md-5 { - padding-top: 3rem !important; - } - - .pr-md-5, -.px-md-5 { - padding-right: 3rem !important; - } - - .pb-md-5, -.py-md-5 { - padding-bottom: 3rem !important; - } - - .pl-md-5, -.px-md-5 { - padding-left: 3rem !important; - } - - .m-md-n1 { - margin: -0.25rem !important; - } - - .mt-md-n1, -.my-md-n1 { - margin-top: -0.25rem !important; - } - - .mr-md-n1, -.mx-md-n1 { - margin-right: -0.25rem !important; - } - - .mb-md-n1, -.my-md-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-md-n1, -.mx-md-n1 { - margin-left: -0.25rem !important; - } - - .m-md-n2 { - margin: -0.5rem !important; - } - - .mt-md-n2, -.my-md-n2 { - margin-top: -0.5rem !important; - } - - .mr-md-n2, -.mx-md-n2 { - margin-right: -0.5rem !important; - } - - .mb-md-n2, -.my-md-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-md-n2, -.mx-md-n2 { - margin-left: -0.5rem !important; - } - - .m-md-n3 { - margin: -1rem !important; - } - - .mt-md-n3, -.my-md-n3 { - margin-top: -1rem !important; - } - - .mr-md-n3, -.mx-md-n3 { - margin-right: -1rem !important; - } - - .mb-md-n3, -.my-md-n3 { - margin-bottom: -1rem !important; - } - - .ml-md-n3, -.mx-md-n3 { - margin-left: -1rem !important; - } - - .m-md-n4 { - margin: -1.5rem !important; - } - - .mt-md-n4, -.my-md-n4 { - margin-top: -1.5rem !important; - } - - .mr-md-n4, -.mx-md-n4 { - margin-right: -1.5rem !important; - } - - .mb-md-n4, -.my-md-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-md-n4, -.mx-md-n4 { - margin-left: -1.5rem !important; - } - - .m-md-n5 { - margin: -3rem !important; - } - - .mt-md-n5, -.my-md-n5 { - margin-top: -3rem !important; - } - - .mr-md-n5, -.mx-md-n5 { - margin-right: -3rem !important; - } - - .mb-md-n5, -.my-md-n5 { - margin-bottom: -3rem !important; - } - - .ml-md-n5, -.mx-md-n5 { - margin-left: -3rem !important; - } - - .m-md-auto { - margin: auto !important; - } - - .mt-md-auto, -.my-md-auto { - margin-top: auto !important; - } - - .mr-md-auto, -.mx-md-auto { - margin-right: auto !important; - } - - .mb-md-auto, -.my-md-auto { - margin-bottom: auto !important; - } - - .ml-md-auto, -.mx-md-auto { - margin-left: auto !important; - } -} -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; - } - - .mt-lg-0, -.my-lg-0 { - margin-top: 0 !important; - } - - .mr-lg-0, -.mx-lg-0 { - margin-right: 0 !important; - } - - .mb-lg-0, -.my-lg-0 { - margin-bottom: 0 !important; - } - - .ml-lg-0, -.mx-lg-0 { - margin-left: 0 !important; - } - - .m-lg-1 { - margin: 0.25rem !important; - } - - .mt-lg-1, -.my-lg-1 { - margin-top: 0.25rem !important; - } - - .mr-lg-1, -.mx-lg-1 { - margin-right: 0.25rem !important; - } - - .mb-lg-1, -.my-lg-1 { - margin-bottom: 0.25rem !important; - } - - .ml-lg-1, -.mx-lg-1 { - margin-left: 0.25rem !important; - } - - .m-lg-2 { - margin: 0.5rem !important; - } - - .mt-lg-2, -.my-lg-2 { - margin-top: 0.5rem !important; - } - - .mr-lg-2, -.mx-lg-2 { - margin-right: 0.5rem !important; - } - - .mb-lg-2, -.my-lg-2 { - margin-bottom: 0.5rem !important; - } - - .ml-lg-2, -.mx-lg-2 { - margin-left: 0.5rem !important; - } - - .m-lg-3 { - margin: 1rem !important; - } - - .mt-lg-3, -.my-lg-3 { - margin-top: 1rem !important; - } - - .mr-lg-3, -.mx-lg-3 { - margin-right: 1rem !important; - } - - .mb-lg-3, -.my-lg-3 { - margin-bottom: 1rem !important; - } - - .ml-lg-3, -.mx-lg-3 { - margin-left: 1rem !important; - } - - .m-lg-4 { - margin: 1.5rem !important; - } - - .mt-lg-4, -.my-lg-4 { - margin-top: 1.5rem !important; - } - - .mr-lg-4, -.mx-lg-4 { - margin-right: 1.5rem !important; - } - - .mb-lg-4, -.my-lg-4 { - margin-bottom: 1.5rem !important; - } - - .ml-lg-4, -.mx-lg-4 { - margin-left: 1.5rem !important; - } - - .m-lg-5 { - margin: 3rem !important; - } - - .mt-lg-5, -.my-lg-5 { - margin-top: 3rem !important; - } - - .mr-lg-5, -.mx-lg-5 { - margin-right: 3rem !important; - } - - .mb-lg-5, -.my-lg-5 { - margin-bottom: 3rem !important; - } - - .ml-lg-5, -.mx-lg-5 { - margin-left: 3rem !important; - } - - .p-lg-0 { - padding: 0 !important; - } - - .pt-lg-0, -.py-lg-0 { - padding-top: 0 !important; - } - - .pr-lg-0, -.px-lg-0 { - padding-right: 0 !important; - } - - .pb-lg-0, -.py-lg-0 { - padding-bottom: 0 !important; - } - - .pl-lg-0, -.px-lg-0 { - padding-left: 0 !important; - } - - .p-lg-1 { - padding: 0.25rem !important; - } - - .pt-lg-1, -.py-lg-1 { - padding-top: 0.25rem !important; - } - - .pr-lg-1, -.px-lg-1 { - padding-right: 0.25rem !important; - } - - .pb-lg-1, -.py-lg-1 { - padding-bottom: 0.25rem !important; - } - - .pl-lg-1, -.px-lg-1 { - padding-left: 0.25rem !important; - } - - .p-lg-2 { - padding: 0.5rem !important; - } - - .pt-lg-2, -.py-lg-2 { - padding-top: 0.5rem !important; - } - - .pr-lg-2, -.px-lg-2 { - padding-right: 0.5rem !important; - } - - .pb-lg-2, -.py-lg-2 { - padding-bottom: 0.5rem !important; - } - - .pl-lg-2, -.px-lg-2 { - padding-left: 0.5rem !important; - } - - .p-lg-3 { - padding: 1rem !important; - } - - .pt-lg-3, -.py-lg-3 { - padding-top: 1rem !important; - } - - .pr-lg-3, -.px-lg-3 { - padding-right: 1rem !important; - } - - .pb-lg-3, -.py-lg-3 { - padding-bottom: 1rem !important; - } - - .pl-lg-3, -.px-lg-3 { - padding-left: 1rem !important; - } - - .p-lg-4 { - padding: 1.5rem !important; - } - - .pt-lg-4, -.py-lg-4 { - padding-top: 1.5rem !important; - } - - .pr-lg-4, -.px-lg-4 { - padding-right: 1.5rem !important; - } - - .pb-lg-4, -.py-lg-4 { - padding-bottom: 1.5rem !important; - } - - .pl-lg-4, -.px-lg-4 { - padding-left: 1.5rem !important; - } - - .p-lg-5 { - padding: 3rem !important; - } - - .pt-lg-5, -.py-lg-5 { - padding-top: 3rem !important; - } - - .pr-lg-5, -.px-lg-5 { - padding-right: 3rem !important; - } - - .pb-lg-5, -.py-lg-5 { - padding-bottom: 3rem !important; - } - - .pl-lg-5, -.px-lg-5 { - padding-left: 3rem !important; - } - - .m-lg-n1 { - margin: -0.25rem !important; - } - - .mt-lg-n1, -.my-lg-n1 { - margin-top: -0.25rem !important; - } - - .mr-lg-n1, -.mx-lg-n1 { - margin-right: -0.25rem !important; - } - - .mb-lg-n1, -.my-lg-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-lg-n1, -.mx-lg-n1 { - margin-left: -0.25rem !important; - } - - .m-lg-n2 { - margin: -0.5rem !important; - } - - .mt-lg-n2, -.my-lg-n2 { - margin-top: -0.5rem !important; - } - - .mr-lg-n2, -.mx-lg-n2 { - margin-right: -0.5rem !important; - } - - .mb-lg-n2, -.my-lg-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-lg-n2, -.mx-lg-n2 { - margin-left: -0.5rem !important; - } - - .m-lg-n3 { - margin: -1rem !important; - } - - .mt-lg-n3, -.my-lg-n3 { - margin-top: -1rem !important; - } - - .mr-lg-n3, -.mx-lg-n3 { - margin-right: -1rem !important; - } - - .mb-lg-n3, -.my-lg-n3 { - margin-bottom: -1rem !important; - } - - .ml-lg-n3, -.mx-lg-n3 { - margin-left: -1rem !important; - } - - .m-lg-n4 { - margin: -1.5rem !important; - } - - .mt-lg-n4, -.my-lg-n4 { - margin-top: -1.5rem !important; - } - - .mr-lg-n4, -.mx-lg-n4 { - margin-right: -1.5rem !important; - } - - .mb-lg-n4, -.my-lg-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-lg-n4, -.mx-lg-n4 { - margin-left: -1.5rem !important; - } - - .m-lg-n5 { - margin: -3rem !important; - } - - .mt-lg-n5, -.my-lg-n5 { - margin-top: -3rem !important; - } - - .mr-lg-n5, -.mx-lg-n5 { - margin-right: -3rem !important; - } - - .mb-lg-n5, -.my-lg-n5 { - margin-bottom: -3rem !important; - } - - .ml-lg-n5, -.mx-lg-n5 { - margin-left: -3rem !important; - } - - .m-lg-auto { - margin: auto !important; - } - - .mt-lg-auto, -.my-lg-auto { - margin-top: auto !important; - } - - .mr-lg-auto, -.mx-lg-auto { - margin-right: auto !important; - } - - .mb-lg-auto, -.my-lg-auto { - margin-bottom: auto !important; - } - - .ml-lg-auto, -.mx-lg-auto { - margin-left: auto !important; - } -} -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; - } - - .mt-xl-0, -.my-xl-0 { - margin-top: 0 !important; - } - - .mr-xl-0, -.mx-xl-0 { - margin-right: 0 !important; - } - - .mb-xl-0, -.my-xl-0 { - margin-bottom: 0 !important; - } - - .ml-xl-0, -.mx-xl-0 { - margin-left: 0 !important; - } - - .m-xl-1 { - margin: 0.25rem !important; - } - - .mt-xl-1, -.my-xl-1 { - margin-top: 0.25rem !important; - } - - .mr-xl-1, -.mx-xl-1 { - margin-right: 0.25rem !important; - } - - .mb-xl-1, -.my-xl-1 { - margin-bottom: 0.25rem !important; - } - - .ml-xl-1, -.mx-xl-1 { - margin-left: 0.25rem !important; - } - - .m-xl-2 { - margin: 0.5rem !important; - } - - .mt-xl-2, -.my-xl-2 { - margin-top: 0.5rem !important; - } - - .mr-xl-2, -.mx-xl-2 { - margin-right: 0.5rem !important; - } - - .mb-xl-2, -.my-xl-2 { - margin-bottom: 0.5rem !important; - } - - .ml-xl-2, -.mx-xl-2 { - margin-left: 0.5rem !important; - } - - .m-xl-3 { - margin: 1rem !important; - } - - .mt-xl-3, -.my-xl-3 { - margin-top: 1rem !important; - } - - .mr-xl-3, -.mx-xl-3 { - margin-right: 1rem !important; - } - - .mb-xl-3, -.my-xl-3 { - margin-bottom: 1rem !important; - } - - .ml-xl-3, -.mx-xl-3 { - margin-left: 1rem !important; - } - - .m-xl-4 { - margin: 1.5rem !important; - } - - .mt-xl-4, -.my-xl-4 { - margin-top: 1.5rem !important; - } - - .mr-xl-4, -.mx-xl-4 { - margin-right: 1.5rem !important; - } - - .mb-xl-4, -.my-xl-4 { - margin-bottom: 1.5rem !important; - } - - .ml-xl-4, -.mx-xl-4 { - margin-left: 1.5rem !important; - } - - .m-xl-5 { - margin: 3rem !important; - } - - .mt-xl-5, -.my-xl-5 { - margin-top: 3rem !important; - } - - .mr-xl-5, -.mx-xl-5 { - margin-right: 3rem !important; - } - - .mb-xl-5, -.my-xl-5 { - margin-bottom: 3rem !important; - } - - .ml-xl-5, -.mx-xl-5 { - margin-left: 3rem !important; - } - - .p-xl-0 { - padding: 0 !important; - } - - .pt-xl-0, -.py-xl-0 { - padding-top: 0 !important; - } - - .pr-xl-0, -.px-xl-0 { - padding-right: 0 !important; - } - - .pb-xl-0, -.py-xl-0 { - padding-bottom: 0 !important; - } - - .pl-xl-0, -.px-xl-0 { - padding-left: 0 !important; - } - - .p-xl-1 { - padding: 0.25rem !important; - } - - .pt-xl-1, -.py-xl-1 { - padding-top: 0.25rem !important; - } - - .pr-xl-1, -.px-xl-1 { - padding-right: 0.25rem !important; - } - - .pb-xl-1, -.py-xl-1 { - padding-bottom: 0.25rem !important; - } - - .pl-xl-1, -.px-xl-1 { - padding-left: 0.25rem !important; - } - - .p-xl-2 { - padding: 0.5rem !important; - } - - .pt-xl-2, -.py-xl-2 { - padding-top: 0.5rem !important; - } - - .pr-xl-2, -.px-xl-2 { - padding-right: 0.5rem !important; - } - - .pb-xl-2, -.py-xl-2 { - padding-bottom: 0.5rem !important; - } - - .pl-xl-2, -.px-xl-2 { - padding-left: 0.5rem !important; - } - - .p-xl-3 { - padding: 1rem !important; - } - - .pt-xl-3, -.py-xl-3 { - padding-top: 1rem !important; - } - - .pr-xl-3, -.px-xl-3 { - padding-right: 1rem !important; - } - - .pb-xl-3, -.py-xl-3 { - padding-bottom: 1rem !important; - } - - .pl-xl-3, -.px-xl-3 { - padding-left: 1rem !important; - } - - .p-xl-4 { - padding: 1.5rem !important; - } - - .pt-xl-4, -.py-xl-4 { - padding-top: 1.5rem !important; - } - - .pr-xl-4, -.px-xl-4 { - padding-right: 1.5rem !important; - } - - .pb-xl-4, -.py-xl-4 { - padding-bottom: 1.5rem !important; - } - - .pl-xl-4, -.px-xl-4 { - padding-left: 1.5rem !important; - } - - .p-xl-5 { - padding: 3rem !important; - } - - .pt-xl-5, -.py-xl-5 { - padding-top: 3rem !important; - } - - .pr-xl-5, -.px-xl-5 { - padding-right: 3rem !important; - } - - .pb-xl-5, -.py-xl-5 { - padding-bottom: 3rem !important; - } - - .pl-xl-5, -.px-xl-5 { - padding-left: 3rem !important; - } - - .m-xl-n1 { - margin: -0.25rem !important; - } - - .mt-xl-n1, -.my-xl-n1 { - margin-top: -0.25rem !important; - } - - .mr-xl-n1, -.mx-xl-n1 { - margin-right: -0.25rem !important; - } - - .mb-xl-n1, -.my-xl-n1 { - margin-bottom: -0.25rem !important; - } - - .ml-xl-n1, -.mx-xl-n1 { - margin-left: -0.25rem !important; - } - - .m-xl-n2 { - margin: -0.5rem !important; - } - - .mt-xl-n2, -.my-xl-n2 { - margin-top: -0.5rem !important; - } - - .mr-xl-n2, -.mx-xl-n2 { - margin-right: -0.5rem !important; - } - - .mb-xl-n2, -.my-xl-n2 { - margin-bottom: -0.5rem !important; - } - - .ml-xl-n2, -.mx-xl-n2 { - margin-left: -0.5rem !important; - } - - .m-xl-n3 { - margin: -1rem !important; - } - - .mt-xl-n3, -.my-xl-n3 { - margin-top: -1rem !important; - } - - .mr-xl-n3, -.mx-xl-n3 { - margin-right: -1rem !important; - } - - .mb-xl-n3, -.my-xl-n3 { - margin-bottom: -1rem !important; - } - - .ml-xl-n3, -.mx-xl-n3 { - margin-left: -1rem !important; - } - - .m-xl-n4 { - margin: -1.5rem !important; - } - - .mt-xl-n4, -.my-xl-n4 { - margin-top: -1.5rem !important; - } - - .mr-xl-n4, -.mx-xl-n4 { - margin-right: -1.5rem !important; - } - - .mb-xl-n4, -.my-xl-n4 { - margin-bottom: -1.5rem !important; - } - - .ml-xl-n4, -.mx-xl-n4 { - margin-left: -1.5rem !important; - } - - .m-xl-n5 { - margin: -3rem !important; - } - - .mt-xl-n5, -.my-xl-n5 { - margin-top: -3rem !important; - } - - .mr-xl-n5, -.mx-xl-n5 { - margin-right: -3rem !important; - } - - .mb-xl-n5, -.my-xl-n5 { - margin-bottom: -3rem !important; - } - - .ml-xl-n5, -.mx-xl-n5 { - margin-left: -3rem !important; - } - - .m-xl-auto { - margin: auto !important; - } - - .mt-xl-auto, -.my-xl-auto { - margin-top: auto !important; - } - - .mr-xl-auto, -.mx-xl-auto { - margin-right: auto !important; - } - - .mb-xl-auto, -.my-xl-auto { - margin-bottom: auto !important; - } - - .ml-xl-auto, -.mx-xl-auto { - margin-left: auto !important; - } -} -.text-monospace { - font-family: "ChicagoFLF"; -} - -.text-justify { - text-align: justify !important; -} - -.text-wrap { - white-space: normal !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; - } - - .text-sm-right { - text-align: right !important; - } - - .text-sm-center { - text-align: center !important; - } -} -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; - } - - .text-md-right { - text-align: right !important; - } - - .text-md-center { - text-align: center !important; - } -} -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; - } - - .text-lg-right { - text-align: right !important; - } - - .text-lg-center { - text-align: center !important; - } -} -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; - } - - .text-xl-right { - text-align: right !important; - } - - .text-xl-center { - text-align: center !important; - } -} -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.font-weight-light { - font-weight: 300 !important; -} - -.font-weight-lighter { - font-weight: lighter !important; -} - -.font-weight-normal { - font-weight: 400 !important; -} - -.font-weight-bold { - font-weight: 700 !important; -} - -.font-weight-bolder { - font-weight: bolder !important; -} - -.font-italic { - font-style: italic !important; -} - -.text-white { - color: #FFFFFF !important; -} - -.text-primary { - color: #0000D3 !important; -} - -a.text-primary:hover, a.text-primary:focus { - color: #000087 !important; -} - -.text-secondary { - color: #808080 !important; -} - -a.text-secondary:hover, a.text-secondary:focus { - color: #5a5a5a !important; -} - -.text-success { - color: #1FB714 !important; -} - -a.text-success:hover, a.text-success:focus { - color: #13720c !important; -} - -.text-info { - color: #02ABEA !important; -} - -a.text-info:hover, a.text-info:focus { - color: #01749e !important; -} - -.text-warning { - color: #FBF305 !important; -} - -a.text-warning:hover, a.text-warning:focus { - color: #b1ab03 !important; -} - -.text-danger { - color: #DD0907 !important; -} - -a.text-danger:hover, a.text-danger:focus { - color: #930605 !important; -} - -.text-light { - color: #C0C0C0 !important; -} - -a.text-light:hover, a.text-light:focus { - color: #9a9a9a !important; -} - -.text-dark { - color: #404040 !important; -} - -a.text-dark:hover, a.text-dark:focus { - color: #1a1a1a !important; -} - -.text-body { - color: #000000 !important; -} - -.text-muted { - color: #808080 !important; -} - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.text-decoration-none { - text-decoration: none !important; -} - -.text-reset { - color: inherit !important; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -@media print { - *, -*::before, -*::after { - text-shadow: none !important; - box-shadow: none !important; - } - - a:not(.btn) { - text-decoration: underline; - } - - abbr[title]::after { - content: " (" attr(title) ")"; - } - - pre { - white-space: pre-wrap !important; - } - - pre, -blockquote { - border: 1px solid #808080; - page-break-inside: avoid; - } - - thead { - display: table-header-group; - } - - tr, -img { - page-break-inside: avoid; - } - - p, -h2, -h3 { - orphans: 3; - widows: 3; - } - - h2, -h3 { - page-break-after: avoid; - } - - @page { - size: a3; - } - body { - min-width: 992px !important; - } - - .container { - min-width: 992px !important; - } - - .navbar { - display: none; - } - - .badge { - border: 1px solid #000000; - } - - .table { - border-collapse: collapse !important; - } - .table td, -.table th { - background-color: #FFFFFF !important; - } - - .table-bordered th, -.table-bordered td { - border: 1px solid #C0C0C0 !important; - } - - .table-dark { - color: inherit; - } - .table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #C0C0C0; - } - - .table .thead-dark th { - color: inherit; - border-color: #C0C0C0; - } -} -footer { - background-color: #C0C0C0; - color: #000000; -} - -header { - background-color: #C0C0C0; - color: #000000; - text-align: center; -} - -header a { - color: #4700A5; -} - -header a:hover { - color: #02ABEA; - text-decoration: none; -} - -footer a:hover { - text-decoration: none; -} - -.table-centered { - margin-left: auto; - margin-right: auto; -} - -.card-button { - color: #000000; -} - -.table-dark-em { - color: #404040; - font-style: normal; - font-weight: bold; -} - -.table-dark-header { - color: #000000; - font-style: normal; - text-align: center; -} - -/*# sourceMappingURL=dicserver.css.map */ diff --git a/Server/DiscImageChef.Server/styles/mac/dicserver.scss b/Server/DiscImageChef.Server/styles/mac/dicserver.scss deleted file mode 100644 index cddfa3e41..000000000 --- a/Server/DiscImageChef.Server/styles/mac/dicserver.scss +++ /dev/null @@ -1,88 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : dicserver.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets server styling. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; -@import "_font"; -@import "_fontstyles"; - -@import "../../node_modules/bootstrap/scss/bootstrap"; - -footer -{ - background-color: $gray-100; - color: $black; -} - -header -{ - background-color: $gray-100; - color: $black; - text-align: center; -} - -header a -{ - color: $purple; -} - -header a:hover -{ - color: $cyan; - text-decoration: none; -} - -footer a:hover -{ - text-decoration: none; -} - -.table-centered -{ - margin-left:auto; - margin-right:auto; -} - -.card-button{color:$black} - -.table-dark-em -{ - color: $darkgray; - font-style: normal; - font-weight: bold; -} - -.table-dark-header -{ - color: $black; - font-style: normal; - text-align: center; -} \ No newline at end of file diff --git a/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.css b/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.css deleted file mode 100644 index 039a4774c..000000000 --- a/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.css +++ /dev/null @@ -1,933 +0,0 @@ -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using Macintosh II colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets font to Macintosh Chicago clone font */ -@font-face { - font-family: "ChicagoFLF"; - src: url(../../fonts/ChicagoFLF.eot); - src: url(../../fonts/ChicagoFLF.eot?#iefix) format("embedded-opentype"), url(../../fonts/ChicagoFLF.woff2) format("woff2"), url(../../fonts/ChicagoFLF.woff) format("woff"), url(../../fonts/ChicagoFLF.ttf) format("truetype"); - font-weight: normal; - font-style: normal; -} -/* Sets the grayscale for Bootstrap */ -/* Sets color palette, using Macintosh II colors */ -/* Bootstrap color aliases */ -/* Colors for */ -/* Colors for */ -/* Colors for cards */ -/* Colors for tables */ -/* Sets the style for emphasis/italics */ -em, i { - font-style: italic; -} - -/* Headings and bold text are bright white */ -h1, h2, h3, h4, -b, strong { - font-size: 1em; - font-style: normal; - font-weight: bold; - margin: 0; -} - -/** - * @license Highcharts - * - * (c) 2009-2016 Torstein Honsi - * - * License: www.highcharts.com/license - */ -.highcharts-container { - position: relative; - overflow: hidden; - width: 100%; - height: 100%; - text-align: left; - line-height: normal; - z-index: 0; - /* #1072 */ - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - font-family: "ChicagoFLF"; - font-size: 12px; -} - -.highcharts-root { - display: block; -} - -.highcharts-root text { - stroke-width: 0; -} - -.highcharts-strong { - font-weight: bold; -} - -.highcharts-emphasized { - font-style: italic; -} - -.highcharts-anchor { - cursor: pointer; -} - -.highcharts-background { - fill: #FFFFFF; -} - -.highcharts-plot-border, .highcharts-plot-background { - fill: none; -} - -.highcharts-label-box { - fill: none; -} - -.highcharts-button-box { - fill: inherit; -} - -.highcharts-tracker-line { - stroke-linejoin: round; - stroke: rgba(192, 192, 192, 0.0001); - stroke-width: 22; - fill: none; -} - -.highcharts-tracker-area { - fill: rgba(192, 192, 192, 0.0001); - stroke-width: 0; -} - -/* Titles */ -.highcharts-title { - fill: #404040; - font-size: 1.5em; -} - -.highcharts-subtitle { - fill: #808080; -} - -/* Axes */ -.highcharts-axis-line { - fill: none; - stroke: #ccd6eb; -} - -.highcharts-yaxis .highcharts-axis-line { - stroke-width: 0; -} - -.highcharts-axis-title { - fill: #808080; -} - -.highcharts-axis-labels { - fill: #808080; - cursor: default; - font-size: 0.9em; -} - -.highcharts-grid-line { - fill: none; - stroke: #C0C0C0; -} - -.highcharts-xaxis-grid .highcharts-grid-line { - stroke-width: 0px; -} - -.highcharts-tick { - stroke: #ccd6eb; -} - -.highcharts-yaxis .highcharts-tick { - stroke-width: 0; -} - -.highcharts-minor-grid-line { - stroke: #C0C0C0; -} - -.highcharts-crosshair-thin { - stroke-width: 1px; - stroke: #C0C0C0; -} - -.highcharts-crosshair-category { - stroke: #ccd6eb; - stroke-opacity: 0.25; -} - -/* Credits */ -.highcharts-credits { - cursor: pointer; - fill: #808080; - font-size: 0.7em; - transition: fill 250ms, font-size 250ms; -} - -.highcharts-credits:hover { - fill: black; - font-size: 1em; -} - -/* Tooltip */ -.highcharts-tooltip { - cursor: default; - pointer-events: none; - white-space: nowrap; - transition: stroke 150ms; -} - -.highcharts-tooltip text { - fill: #404040; -} - -.highcharts-tooltip .highcharts-header { - font-size: 0.85em; -} - -.highcharts-tooltip-box { - stroke-width: 1px; - fill: #FFFFFF; - fill-opacity: 0.85; -} - -.highcharts-tooltip-box .highcharts-label-box { - fill: #FFFFFF; - fill-opacity: 0.85; -} - -.highcharts-selection-marker { - fill: #335cad; - fill-opacity: 0.25; -} - -.highcharts-graph { - fill: none; - stroke-width: 2px; - stroke-linecap: round; - stroke-linejoin: round; -} - -.highcharts-state-hover .highcharts-graph { - stroke-width: 3; -} - -.highcharts-state-hover path { - transition: stroke-width 50; - /* quick in */ -} - -.highcharts-state-normal path { - transition: stroke-width 250ms; - /* slow out */ -} - -/* Legend hover affects points and series */ -g.highcharts-series, -.highcharts-point, -.highcharts-markers, -.highcharts-data-labels { - transition: opacity 250ms; -} - -.highcharts-legend-series-active g.highcharts-series:not(.highcharts-series-hover), -.highcharts-legend-point-active .highcharts-point:not(.highcharts-point-hover), -.highcharts-legend-series-active .highcharts-markers:not(.highcharts-series-hover), -.highcharts-legend-series-active .highcharts-data-labels:not(.highcharts-series-hover) { - opacity: 0.2; -} - -/* Series options */ -/* Default colors */ -.highcharts-color-0 { - fill: #1FB714; - stroke: #1FB714; -} - -.highcharts-color-1 { - fill: #FBF305; - stroke: #FBF305; -} - -.highcharts-color-2 { - fill: #FF6403; - stroke: #FF6403; -} - -.highcharts-color-3 { - fill: #562C05; - stroke: #562C05; -} - -.highcharts-color-4 { - fill: #DD0907; - stroke: #DD0907; -} - -.highcharts-color-5 { - fill: #F20884; - stroke: #F20884; -} - -.highcharts-color-6 { - fill: #4700A5; - stroke: #4700A5; -} - -.highcharts-color-7 { - fill: #0000D3; - stroke: #0000D3; -} - -.highcharts-color-8 { - fill: #02ABEA; - stroke: #02ABEA; -} - -.highcharts-color-9 { - fill: #90713A; - stroke: #90713A; -} - -.highcharts-color-10 { - fill: #006412; - stroke: #006412; -} - -.highcharts-area { - fill-opacity: 0.75; - stroke-width: 0; -} - -.highcharts-markers { - stroke-width: 1px; - stroke: #FFFFFF; -} - -.highcharts-point { - stroke-width: 1px; -} - -.highcharts-dense-data .highcharts-point { - stroke-width: 0; -} - -.highcharts-data-label { - font-size: 0.9em; - font-weight: bold; -} - -.highcharts-data-label-box { - fill: none; - stroke-width: 0; -} - -.highcharts-data-label text, text.highcharts-data-label { - fill: #FBF305; -} - -.highcharts-data-label-connector { - fill: none; -} - -.highcharts-halo { - fill-opacity: 0.25; - stroke-width: 0; -} - -.highcharts-series:not(.highcharts-pie-series) .highcharts-point-select, -.highcharts-markers .highcharts-point-select { - fill: #C0C0C0; - stroke: #000000; -} - -.highcharts-column-series rect.highcharts-point { - stroke: #FFFFFF; -} - -.highcharts-column-series .highcharts-point { - transition: fill-opacity 250ms; -} - -.highcharts-column-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-pie-series .highcharts-point { - stroke-linejoin: round; - stroke: #FFFFFF; -} - -.highcharts-pie-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-funnel-series .highcharts-point { - stroke-linejoin: round; - stroke: #FFFFFF; -} - -.highcharts-funnel-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-funnel-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} - -.highcharts-pyramid-series .highcharts-point { - stroke-linejoin: round; - stroke: #FFFFFF; -} - -.highcharts-pyramid-series .highcharts-point-hover { - fill-opacity: 0.75; - transition: fill-opacity 50ms; -} - -.highcharts-pyramid-series .highcharts-point-select { - fill: inherit; - stroke: inherit; -} - -.highcharts-solidgauge-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-treemap-series .highcharts-point { - stroke-width: 1px; - stroke: #C0C0C0; - transition: stroke 250ms, fill 250ms, fill-opacity 250ms; -} - -.highcharts-treemap-series .highcharts-point-hover { - stroke: #808080; - transition: stroke 25ms, fill 25ms, fill-opacity 25ms; -} - -.highcharts-treemap-series .highcharts-above-level { - display: none; -} - -.highcharts-treemap-series .highcharts-internal-node { - fill: none; -} - -.highcharts-treemap-series .highcharts-internal-node-interactive { - fill-opacity: 0.15; - cursor: pointer; -} - -.highcharts-treemap-series .highcharts-internal-node-interactive:hover { - fill-opacity: 0.75; -} - -/* Legend */ -.highcharts-legend-box { - fill: none; - stroke-width: 0; -} - -.highcharts-legend-item > text { - fill: #404040; - font-weight: bold; - font-size: 1em; - cursor: pointer; - stroke-width: 0; -} - -.highcharts-legend-item:hover text { - fill: #000000; -} - -.highcharts-legend-item-hidden * { - fill: #C0C0C0 !important; - stroke: #C0C0C0 !important; - transition: fill 250ms; -} - -.highcharts-legend-nav-active { - fill: #003399; - cursor: pointer; -} - -.highcharts-legend-nav-inactive { - fill: #C0C0C0; -} - -.highcharts-legend-title-box { - fill: none; - stroke-width: 0; -} - -/* Bubble legend */ -.highcharts-bubble-legend-symbol { - stroke-width: 2; - fill-opacity: 0.5; -} - -.highcharts-bubble-legend-connectors { - stroke-width: 1; -} - -.highcharts-bubble-legend-labels { - fill: #404040; -} - -/* Loading */ -.highcharts-loading { - position: absolute; - background-color: #FFFFFF; - opacity: 0.5; - text-align: center; - z-index: 10; - transition: opacity 250ms; -} - -.highcharts-loading-hidden { - height: 0 !important; - opacity: 0; - overflow: hidden; - transition: opacity 250ms, height 250ms step-end; -} - -.highcharts-loading-inner { - font-weight: bold; - position: relative; - top: 45%; -} - -/* Plot bands and polar pane backgrounds */ -.highcharts-plot-band, .highcharts-pane { - fill: #000000; - fill-opacity: 0.05; -} - -.highcharts-plot-line { - fill: none; - stroke: #808080; - stroke-width: 1px; -} - -/* Highcharts More and modules */ -.highcharts-boxplot-box { - fill: #FFFFFF; -} - -.highcharts-boxplot-median { - stroke-width: 2px; -} - -.highcharts-bubble-series .highcharts-point { - fill-opacity: 0.5; -} - -.highcharts-errorbar-series .highcharts-point { - stroke: #000000; -} - -.highcharts-gauge-series .highcharts-data-label-box { - stroke: #C0C0C0; - stroke-width: 1px; -} - -.highcharts-gauge-series .highcharts-dial { - fill: #000000; - stroke-width: 0; -} - -.highcharts-polygon-series .highcharts-graph { - fill: inherit; - stroke-width: 0; -} - -.highcharts-waterfall-series .highcharts-graph { - stroke: #404040; - stroke-dasharray: 1, 3; -} - -.highcharts-sankey-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-sankey-series .highcharts-link { - transition: fill 250ms, fill-opacity 250ms; - fill-opacity: 0.5; -} - -.highcharts-sankey-series .highcharts-point-hover.highcharts-link { - transition: fill 50ms, fill-opacity 50ms; - fill-opacity: 1; -} - -.highcharts-venn-series .highcharts-point { - fill-opacity: 0.75; - stroke: #C0C0C0; - transition: stroke 250ms, fill-opacity 250ms; -} - -.highcharts-venn-series .highcharts-point-hover { - fill-opacity: 1; - stroke: #C0C0C0; -} - -/* Highstock */ -.highcharts-navigator-mask-outside { - fill-opacity: 0; -} - -.highcharts-navigator-mask-inside { - fill: #6685c2; - /* navigator.maskFill option */ - fill-opacity: 0.25; - cursor: ew-resize; -} - -.highcharts-navigator-outline { - stroke: #C0C0C0; - fill: none; -} - -.highcharts-navigator-handle { - stroke: #C0C0C0; - fill: #C0C0C0; - cursor: ew-resize; -} - -.highcharts-navigator-series { - fill: #335cad; - stroke: #335cad; -} - -.highcharts-navigator-series .highcharts-graph { - stroke-width: 1px; -} - -.highcharts-navigator-series .highcharts-area { - fill-opacity: 0.05; -} - -.highcharts-navigator-xaxis .highcharts-axis-line { - stroke-width: 0; -} - -.highcharts-navigator-xaxis .highcharts-grid-line { - stroke-width: 1px; - stroke: #C0C0C0; -} - -.highcharts-navigator-xaxis.highcharts-axis-labels { - fill: #808080; -} - -.highcharts-navigator-yaxis .highcharts-grid-line { - stroke-width: 0; -} - -.highcharts-scrollbar-thumb { - fill: #C0C0C0; - stroke: #C0C0C0; - stroke-width: 1px; -} - -.highcharts-scrollbar-button { - fill: #C0C0C0; - stroke: #C0C0C0; - stroke-width: 1px; -} - -.highcharts-scrollbar-arrow { - fill: #808080; -} - -.highcharts-scrollbar-rifles { - stroke: #808080; - stroke-width: 1px; -} - -.highcharts-scrollbar-track { - fill: #C0C0C0; - stroke: #C0C0C0; - stroke-width: 1px; -} - -.highcharts-button { - fill: #C0C0C0; - stroke: #C0C0C0; - cursor: default; - stroke-width: 1px; - transition: fill 250ms; -} - -.highcharts-button text { - fill: #404040; -} - -.highcharts-button-hover { - transition: fill 0ms; - fill: #C0C0C0; - stroke: #C0C0C0; -} - -.highcharts-button-hover text { - fill: #404040; -} - -.highcharts-button-pressed { - font-weight: bold; - fill: #e6ebf5; - stroke: #C0C0C0; -} - -.highcharts-button-pressed text { - fill: #404040; - font-weight: bold; -} - -.highcharts-button-disabled text { - fill: #404040; -} - -.highcharts-range-selector-buttons .highcharts-button { - stroke-width: 0px; -} - -.highcharts-range-label rect { - fill: none; -} - -.highcharts-range-label text { - fill: #808080; -} - -.highcharts-range-input rect { - fill: none; -} - -.highcharts-range-input text { - fill: #404040; -} - -.highcharts-range-input { - stroke-width: 1px; - stroke: #C0C0C0; -} - -input.highcharts-range-selector { - position: absolute; - border: 0; - width: 1px; - /* Chrome needs a pixel to see it */ - height: 1px; - padding: 0; - text-align: center; - left: -9em; - /* #4798 */ -} - -.highcharts-crosshair-label text { - fill: #FFFFFF; - font-size: 1.1em; -} - -.highcharts-crosshair-label .highcharts-label-box { - fill: inherit; -} - -.highcharts-candlestick-series .highcharts-point { - stroke: #000000; - stroke-width: 1px; -} - -.highcharts-candlestick-series .highcharts-point-up { - fill: #FFFFFF; -} - -.highcharts-ohlc-series .highcharts-point-hover { - stroke-width: 3px; -} - -.highcharts-flags-series .highcharts-point .highcharts-label-box { - stroke: #808080; - fill: #FFFFFF; - transition: fill 250ms; -} - -.highcharts-flags-series .highcharts-point-hover .highcharts-label-box { - stroke: #000000; - fill: #ccd6eb; -} - -.highcharts-flags-series .highcharts-point text { - fill: #000000; - font-size: 0.9em; - font-weight: bold; -} - -/* Highmaps */ -.highcharts-map-series .highcharts-point { - transition: fill 500ms, fill-opacity 500ms, stroke-width 250ms; - stroke: #C0C0C0; -} - -.highcharts-map-series .highcharts-point-hover { - transition: fill 0ms, fill-opacity 0ms; - fill-opacity: 0.5; - stroke-width: 2px; -} - -.highcharts-mapline-series .highcharts-point { - fill: none; -} - -.highcharts-heatmap-series .highcharts-point { - stroke-width: 0; -} - -.highcharts-map-navigation { - font-size: 1.3em; - font-weight: bold; - text-align: center; -} - -.highcharts-coloraxis { - stroke-width: 0; -} - -.highcharts-coloraxis-marker { - fill: #808080; -} - -.highcharts-null-point { - fill: #C0C0C0; -} - -/* 3d charts */ -.highcharts-3d-frame { - fill: transparent; -} - -/* Exporting module */ -.highcharts-contextbutton { - fill: #FFFFFF; - /* needed to capture hover */ - stroke: none; - stroke-linecap: round; -} - -.highcharts-contextbutton:hover { - fill: #C0C0C0; - stroke: #C0C0C0; -} - -.highcharts-button-symbol { - stroke: #808080; - stroke-width: 3px; -} - -.highcharts-menu { - border: 1px solid #808080; - background: #FFFFFF; - padding: 5px 0; - box-shadow: 3px 3px 10px #888; -} - -.highcharts-menu-item { - padding: 0.5em 1em; - background: none; - color: #404040; - cursor: pointer; - transition: background 250ms, color 250ms; -} - -.highcharts-menu-item:hover { - background: #335cad; - color: #FFFFFF; -} - -/* Drilldown module */ -.highcharts-drilldown-point { - cursor: pointer; -} - -.highcharts-drilldown-data-label text, -text.highcharts-drilldown-data-label, -.highcharts-drilldown-axis-label { - cursor: pointer; - fill: #003399; - font-weight: bold; - text-decoration: underline; -} - -/* No-data module */ -.highcharts-no-data text { - font-weight: bold; - font-size: 12px; - fill: #808080; -} - -/* Drag-panes module */ -.highcharts-axis-resizer { - cursor: ns-resize; - stroke: black; - stroke-width: 2px; -} - -/* Bullet type series */ -.highcharts-bullet-target { - stroke-width: 0; -} - -/* Lineargauge type series */ -.highcharts-lineargauge-target { - stroke-width: 1px; - stroke: #404040; -} - -.highcharts-lineargauge-target-line { - stroke-width: 1px; - stroke: #404040; -} - -/* Annotations module */ -.highcharts-annotation-label-box { - stroke-width: 1px; - stroke: #000000; - fill: #000000; - fill-opacity: 0.75; -} - -.highcharts-annotation-label text { - fill: #C0C0C0; -} - -/* Gantt */ -.highcharts-treegrid-node-collapsed, .highcharts-treegrid-node-expanded { - cursor: pointer; -} - -.highcharts-point-connecting-path { - fill: none; -} - -.highcharts-grid-axis .highcharts-tick { - stroke-width: 1px; -} - -.highcharts-grid-axis .highcharts-axis-line { - stroke-width: 1px; -} - -/*# sourceMappingURL=dicserver_highcharts.css.map */ diff --git a/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.scss b/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.scss deleted file mode 100644 index 0238da741..000000000 --- a/Server/DiscImageChef.Server/styles/mac/dicserver_highcharts.scss +++ /dev/null @@ -1,55 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : dicserver_highcharts.scss -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets style for server's charts. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -@import "_colors"; -@import "_font"; -@import "_fontstyles"; - -$colors: $green $yellow $orange $brown $red $magenta $purple $blue $cyan $tan $darkgreen; -$background-color: $body-bg; - -$neutral-color-100: $black; // Strong text. -$neutral-color-80: $gray-800; // Main text and some strokes. -$neutral-color-60: $gray-600; // Axis labels, axis title, connector fallback. -$neutral-color-40: $gray-400; // Credits text, export menu stroke. -$neutral-color-20: $gray-200; // Disabled texts, button strokes, crosshair etc. -$neutral-color-10: $gray-100; // Grid lines etc. -$neutral-color-5: $gray-100; // Minor grid lines etc. -$neutral-color-3: $gray-100; // Tooltip backgroud, button fills, map null points. - -$font-family: $font-family-base; - -$tooltip-background: $white; - -$data-label-color: $yellow; - -@import "../_highcharts"; \ No newline at end of file