├── .gitattributes ├── Setup1 ├── setup.exe ├── RawPrint.msi └── Setup1.vdproj ├── RawPrint ├── packages.config ├── App.config ├── ProjectInstaller.cs ├── Program.cs ├── PrinterService.Designer.cs ├── Properties │ └── AssemblyInfo.cs ├── ProjectInstaller.Designer.cs ├── WebServer.cs ├── RawPrint.csproj ├── PrinterService.cs ├── RawPrinterHelper.cs └── ProjectInstaller.resx ├── LICENSE ├── RawPrint.sln ├── README.md ├── index.html ├── .gitignore └── css └── w3.css /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Setup1/setup.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trehoffman/RawPrint/HEAD/Setup1/setup.exe -------------------------------------------------------------------------------- /Setup1/RawPrint.msi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trehoffman/RawPrint/HEAD/Setup1/RawPrint.msi -------------------------------------------------------------------------------- /RawPrint/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RawPrint/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /RawPrint/ProjectInstaller.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Configuration.Install; 6 | using System.Linq; 7 | using System.ServiceProcess; 8 | using System.Threading.Tasks; 9 | 10 | namespace RawPrint 11 | { 12 | [RunInstaller(true)] 13 | public partial class ProjectInstaller : System.Configuration.Install.Installer 14 | { 15 | public ProjectInstaller() 16 | { 17 | InitializeComponent(); 18 | serviceInstaller1.AfterInstall += (sender, args) => new ServiceController(serviceInstaller1.ServiceName).Start(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RawPrint/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.ServiceProcess; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace RawPrint 9 | { 10 | static class Program 11 | { 12 | /// 13 | /// The main entry point for the application. 14 | /// 15 | static void Main() 16 | { 17 | #if DEBUG 18 | var printerService = new PrinterService(); 19 | printerService.onDebug(); 20 | System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); 21 | #else 22 | ServiceBase[] ServicesToRun; 23 | ServicesToRun = new ServiceBase[] 24 | { 25 | new PrinterService() 26 | }; 27 | ServiceBase.Run(ServicesToRun); 28 | #endif 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 trehoffman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /RawPrint/PrinterService.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RawPrint 2 | { 3 | partial class PrinterService 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | components = new System.ComponentModel.Container(); 32 | this.ServiceName = "Service1"; 33 | } 34 | 35 | #endregion 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /RawPrint.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30517.126 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RawPrint", "RawPrint\RawPrint.csproj", "{0EBAFB0D-0180-470A-8B15-BED25A6D839A}" 7 | EndProject 8 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup1", "Setup1\Setup1.vdproj", "{62C981DA-10C2-4FD2-983E-436670F53965}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {0EBAFB0D-0180-470A-8B15-BED25A6D839A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {0EBAFB0D-0180-470A-8B15-BED25A6D839A}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {0EBAFB0D-0180-470A-8B15-BED25A6D839A}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {0EBAFB0D-0180-470A-8B15-BED25A6D839A}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {62C981DA-10C2-4FD2-983E-436670F53965}.Debug|Any CPU.ActiveCfg = Debug 21 | {62C981DA-10C2-4FD2-983E-436670F53965}.Release|Any CPU.ActiveCfg = Release 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | GlobalSection(ExtensibilityGlobals) = postSolution 27 | SolutionGuid = {10D53CB3-B4F1-4BC1-AA77-79728931909F} 28 | EndGlobalSection 29 | EndGlobal 30 | -------------------------------------------------------------------------------- /RawPrint/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("RawPrint")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("RawPrint")] 13 | [assembly: AssemblyCopyright("Copyright © 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0ebafb0d-0180-470a-8b15-bed25a6d839a")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.1.0.0")] 36 | [assembly: AssemblyFileVersion("1.1.0.0")] 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RawPrint 2 | 3 | RAW Print allows sending RAW data directly to local printers through http://localhost:9100 (configurable). This is useful for label printing applications. 4 | 5 | RAW Print functions as a Windows Service. You can try it out [here](https://trehoffman.github.io/RawPrint). 6 | 7 | I was inspired to write this by programs like [KwickPython](https://kwickpos.com/opensource/index.php) and [Zebra Browser Print](https://www.zebra.com/us/en/products/software/barcode-printers/link-os/browser-print.html). 8 | 9 | ## Quick Start Instructions 10 | 11 | Get list of available printers (GET): 12 | ``` 13 | http://localhost:9100 14 | ``` 15 | 16 | Send data to printer (GET): 17 | ``` 18 | http://localhost:9100/?printer=printer1&data=rawdata 19 | ``` 20 | 21 | Send data to printer (POST): 22 | ``` 23 | endpoint: http://localhost:9100/ 24 | 25 | body: 26 | { 27 | "printer": "printer1", 28 | "data": "rawdata" 29 | } 30 | ``` 31 | 32 | ## Configuration Instructions 33 | 34 | 1. Go to folder of RAW Print install. Might be: 35 | 36 | ``` 37 | C:\Program Files (x86)\TreHoffman Technologies\RAW Print 38 | ``` 39 | 40 | 2. Edit key values in RawPrint.exe.config file: 41 | 42 | ``` 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ``` 54 | 55 | 3. Restart RAW Print Windows Service via "Services" GUI or run the following commands in a Windows Terminal: 56 | 57 | ``` 58 | net stop "RAW Print" 59 | net start "RAW Print" 60 | ``` 61 | -------------------------------------------------------------------------------- /RawPrint/ProjectInstaller.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RawPrint 2 | { 3 | partial class ProjectInstaller 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller(); 32 | this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller(); 33 | // 34 | // serviceProcessInstaller1 35 | // 36 | this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 37 | this.serviceProcessInstaller1.Password = null; 38 | this.serviceProcessInstaller1.Username = null; 39 | // 40 | // serviceInstaller1 41 | // 42 | this.serviceInstaller1.Description = "Printer Service"; 43 | this.serviceInstaller1.DisplayName = "RAW Print"; 44 | this.serviceInstaller1.ServiceName = "RawPrint"; 45 | this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic; 46 | // 47 | // ProjectInstaller 48 | // 49 | this.Installers.AddRange(new System.Configuration.Install.Installer[] { 50 | this.serviceProcessInstaller1, 51 | this.serviceInstaller1}); 52 | 53 | } 54 | 55 | #endregion 56 | 57 | private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1; 58 | private System.ServiceProcess.ServiceInstaller serviceInstaller1; 59 | } 60 | } -------------------------------------------------------------------------------- /RawPrint/WebServer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net; 5 | using System.Text; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | 9 | namespace RawPrint 10 | { 11 | public class WebServer 12 | { 13 | private readonly HttpListener _listener = new HttpListener(); 14 | private readonly Func _responderMethod; 15 | 16 | public WebServer(IReadOnlyCollection prefixes, Func method) 17 | { 18 | if (!HttpListener.IsSupported) 19 | { 20 | throw new NotSupportedException("Needs Windows XP SP2, Server 2003 or later."); 21 | } 22 | 23 | // URI prefixes are required eg: "http://localhost:8080/test/" 24 | if (prefixes == null || prefixes.Count == 0) 25 | { 26 | throw new ArgumentException("URI prefixes are required"); 27 | } 28 | 29 | if (method == null) 30 | { 31 | throw new ArgumentException("responder method required"); 32 | } 33 | 34 | foreach (var s in prefixes) 35 | { 36 | _listener.Prefixes.Add(s); 37 | } 38 | 39 | _responderMethod = method; 40 | _listener.Start(); 41 | } 42 | 43 | public WebServer(Func method, params string[] prefixes) 44 | : this(prefixes, method) 45 | { 46 | } 47 | 48 | public void Run() 49 | { 50 | ThreadPool.QueueUserWorkItem(o => 51 | { 52 | Console.WriteLine("Webserver running..."); 53 | try 54 | { 55 | while (_listener.IsListening) 56 | { 57 | ThreadPool.QueueUserWorkItem(c => 58 | { 59 | var ctx = c as HttpListenerContext; 60 | try 61 | { 62 | if (ctx == null) 63 | { 64 | return; 65 | } 66 | 67 | if (ctx.Request.HttpMethod == "OPTIONS") return; 68 | 69 | var rstr = _responderMethod(ctx.Request); 70 | var buf = Encoding.UTF8.GetBytes(rstr); 71 | ctx.Response.AppendHeader("Access-Control-Allow-Origin", "*"); 72 | ctx.Response.ContentLength64 = buf.Length; 73 | ctx.Response.OutputStream.Write(buf, 0, buf.Length); 74 | } 75 | catch 76 | { 77 | // ignored 78 | } 79 | finally 80 | { 81 | // always close the stream 82 | if (ctx != null) 83 | { 84 | ctx.Response.OutputStream.Close(); 85 | } 86 | } 87 | }, _listener.GetContext()); 88 | } 89 | } 90 | catch (Exception ex) 91 | { 92 | // ignored 93 | } 94 | }); 95 | } 96 | 97 | public void Stop() 98 | { 99 | _listener.Stop(); 100 | _listener.Close(); 101 | } 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /RawPrint/RawPrint.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0EBAFB0D-0180-470A-8B15-BED25A6D839A} 8 | WinExe 9 | Properties 10 | RawPrint 11 | RawPrint 12 | v4.5.2 13 | 512 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | RawPrint.Program 37 | 38 | 39 | true 40 | 41 | 42 | 43 | ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | Component 61 | 62 | 63 | PrinterService.cs 64 | 65 | 66 | 67 | Component 68 | 69 | 70 | ProjectInstaller.cs 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | ProjectInstaller.cs 83 | 84 | 85 | 86 | 93 | -------------------------------------------------------------------------------- /RawPrint/PrinterService.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Configuration; 6 | using System.Data; 7 | using System.Diagnostics; 8 | using System.Dynamic; 9 | using System.IO; 10 | using System.Linq; 11 | using System.Management; 12 | using System.Net; 13 | using System.Net.Http; 14 | using System.Net.Sockets; 15 | using System.ServiceProcess; 16 | using System.Text; 17 | using System.Threading; 18 | using System.Threading.Tasks; 19 | 20 | namespace RawPrint 21 | { 22 | public partial class PrinterService : ServiceBase 23 | { 24 | public static string BASE_ADDRESS = ConfigurationManager.AppSettings["Base Address"]; 25 | public static string PORT = ConfigurationManager.AppSettings["Port"]; 26 | WebServer ws; 27 | 28 | public PrinterService() 29 | { 30 | InitializeComponent(); 31 | } 32 | 33 | protected override void OnStart(string[] args) 34 | { 35 | string baseUrl = BASE_ADDRESS + ":" + PORT + "/"; 36 | ws = new WebServer(SendResponse, baseUrl); 37 | ws.Run(); 38 | } 39 | 40 | protected override void OnStop() 41 | { 42 | ws.Stop(); 43 | } 44 | 45 | public void onDebug() 46 | { 47 | OnStart(null); 48 | } 49 | 50 | public static string SendResponse(HttpListenerRequest request) 51 | { 52 | try 53 | { 54 | string printer_name = ""; 55 | string print_data = ""; 56 | 57 | if (request.HttpMethod == "GET") 58 | { 59 | foreach (string key in request.QueryString.Keys) 60 | { 61 | var values = request.QueryString.GetValues(key); 62 | foreach (string value in values) 63 | { 64 | if (key == "p" || key == "printer") 65 | { 66 | printer_name = value; 67 | } 68 | else if (key == "d" || key == "data") 69 | { 70 | print_data = value; 71 | } 72 | } 73 | } 74 | } 75 | if (request.HttpMethod == "POST") 76 | { 77 | string json = new StreamReader(request.InputStream).ReadToEnd(); 78 | dynamic body = JsonConvert.DeserializeObject(json); 79 | printer_name = (body.printer == null ? "" : (string)body.printer); 80 | print_data = (body.data == null ? "" : (string)body.data); 81 | } 82 | 83 | if (printer_name.Length > 0) 84 | { 85 | if (print_data.Length == 0) throw new Exception("NO PRINT DATA PROVIDED"); 86 | if (RawPrinterHelper.SendStringToPrinter(printer_name, print_data)) 87 | { 88 | return JsonConvert.SerializeObject(new { printer = printer_name, data = print_data }); 89 | } 90 | else 91 | { 92 | throw new Exception("ERROR SENDING DATA TO PRINTER"); 93 | } 94 | } 95 | 96 | return GetPrinters(); 97 | } 98 | catch (Exception ex) 99 | { 100 | System.Diagnostics.Debug.WriteLine(ex.ToString()); 101 | return JsonConvert.SerializeObject(new { error = ex.Message }); 102 | } 103 | } 104 | 105 | private static string GetPrinters() 106 | { 107 | try 108 | { 109 | var printers = new List(); 110 | var objScope = new ManagementScope(ManagementPath.DefaultPath); //For the local Access 111 | objScope.Connect(); 112 | 113 | var selectQuery = new SelectQuery(); 114 | selectQuery.QueryString = "Select * from win32_Printer"; 115 | var MOS = new ManagementObjectSearcher(objScope, selectQuery); 116 | var MOC = MOS.Get(); 117 | foreach (var mo in MOC) 118 | { 119 | printers.Add(new { Name = mo["Name"].ToString() }); 120 | } 121 | 122 | return JsonConvert.SerializeObject(printers); 123 | } 124 | catch (Exception ex) 125 | { 126 | return JsonConvert.SerializeObject(new { error = ex.Message }); 127 | } 128 | } 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | RAW Print Testing 6 | 7 | 8 | 9 | 19 | 20 | 21 |
22 |

RAW Print Testing

23 |
24 |
    25 |
  1. 26 | Download & Install RAW Print 27 |
  2. 28 |
  3. 29 | Modify address if necessary 30 | 31 |
  4. 32 |
  5. 33 | Select Printer 34 |
    Error retrieving local printers. RAW Print might not be installed or running or your address is incorrect.
    35 | 36 |
  6. 37 |
  7. 38 | Send RAW Data to Printer 39 |
    40 | 41 | 42 | 43 | 44 |
    45 | 46 | 47 |
  8. 48 |
49 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /RawPrint/RawPrinterHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace RawPrint 10 | { 11 | public class RawPrinterHelper 12 | { 13 | // Structure and API declarions: 14 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] 15 | public class DOCINFOA 16 | { 17 | [MarshalAs(UnmanagedType.LPStr)] 18 | public string pDocName; 19 | [MarshalAs(UnmanagedType.LPStr)] 20 | public string pOutputFile; 21 | [MarshalAs(UnmanagedType.LPStr)] 22 | public string pDataType; 23 | } 24 | [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 25 | public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); 26 | 27 | [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 28 | public static extern bool ClosePrinter(IntPtr hPrinter); 29 | 30 | [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 31 | public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di); 32 | 33 | [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 34 | public static extern bool EndDocPrinter(IntPtr hPrinter); 35 | 36 | [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 37 | public static extern bool StartPagePrinter(IntPtr hPrinter); 38 | 39 | [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 40 | public static extern bool EndPagePrinter(IntPtr hPrinter); 41 | 42 | [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] 43 | public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten); 44 | 45 | // SendBytesToPrinter() 46 | // When the function is given a printer name and an unmanaged array 47 | // of bytes, the function sends those bytes to the print queue. 48 | // Returns true on success, false on failure. 49 | public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount) 50 | { 51 | Int32 dwError = 0, dwWritten = 0; 52 | IntPtr hPrinter = new IntPtr(0); 53 | DOCINFOA di = new DOCINFOA(); 54 | bool bSuccess = false; // Assume failure unless you specifically succeed. 55 | di.pDocName = "My C#.NET RAW Document"; 56 | di.pDataType = "RAW"; 57 | 58 | // Open the printer. 59 | if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) 60 | { 61 | // Start a document. 62 | if (StartDocPrinter(hPrinter, 1, di)) 63 | { 64 | // Start a page. 65 | if (StartPagePrinter(hPrinter)) 66 | { 67 | // Write your bytes. 68 | bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); 69 | EndPagePrinter(hPrinter); 70 | } 71 | EndDocPrinter(hPrinter); 72 | } 73 | ClosePrinter(hPrinter); 74 | } 75 | // If you did not succeed, GetLastError may give more information 76 | // about why not. 77 | if (bSuccess == false) 78 | { 79 | dwError = Marshal.GetLastWin32Error(); 80 | } 81 | return bSuccess; 82 | } 83 | 84 | public static bool SendFileToPrinter(string szPrinterName, string szFileName) 85 | { 86 | // Open the file. 87 | FileStream fs = new FileStream(szFileName, FileMode.Open); 88 | // Create a BinaryReader on the file. 89 | BinaryReader br = new BinaryReader(fs); 90 | // Dim an array of bytes big enough to hold the file's contents. 91 | Byte[] bytes = new Byte[fs.Length]; 92 | bool bSuccess = false; 93 | // Your unmanaged pointer. 94 | IntPtr pUnmanagedBytes = new IntPtr(0); 95 | int nLength; 96 | 97 | nLength = Convert.ToInt32(fs.Length); 98 | // Read the contents of the file into the array. 99 | bytes = br.ReadBytes(nLength); 100 | // Allocate some unmanaged memory for those bytes. 101 | pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength); 102 | // Copy the managed byte array into the unmanaged array. 103 | Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength); 104 | // Send the unmanaged bytes to the printer. 105 | bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength); 106 | // Free the unmanaged memory that you allocated earlier. 107 | Marshal.FreeCoTaskMem(pUnmanagedBytes); 108 | return bSuccess; 109 | } 110 | 111 | public static bool SendStringToPrinter(string szPrinterName, string szString) 112 | { 113 | IntPtr pBytes; 114 | Int32 dwCount; 115 | Boolean bSuccess = false; 116 | 117 | // How many characters are in the string? 118 | // Fix from Nicholas Piasecki: 119 | // dwCount = szString.Length; 120 | dwCount = (szString.Length + 1) * Marshal.SystemMaxDBCSCharSize; 121 | 122 | // Assume that the printer is expecting ANSI text, and then convert 123 | // the string to ANSI text. 124 | pBytes = Marshal.StringToCoTaskMemAnsi(szString); 125 | // Send the converted ANSI string to the printer. 126 | bSuccess = SendBytesToPrinter(szPrinterName, pBytes, dwCount); 127 | Marshal.FreeCoTaskMem(pBytes); 128 | return true; 129 | } 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /RawPrint/ProjectInstaller.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 196, 17 125 | 126 | 127 | False 128 | 129 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015/2017 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # Visual Studio 2017 auto generated files 33 | Generated\ Files/ 34 | 35 | # MSTest test Results 36 | [Tt]est[Rr]esult*/ 37 | [Bb]uild[Ll]og.* 38 | 39 | # NUNIT 40 | *.VisualState.xml 41 | TestResult.xml 42 | 43 | # Build Results of an ATL Project 44 | [Dd]ebugPS/ 45 | [Rr]eleasePS/ 46 | dlldata.c 47 | 48 | # Benchmark Results 49 | BenchmarkDotNet.Artifacts/ 50 | 51 | # .NET Core 52 | project.lock.json 53 | project.fragment.lock.json 54 | artifacts/ 55 | **/Properties/launchSettings.json 56 | 57 | # StyleCop 58 | StyleCopReport.xml 59 | 60 | # Files built by Visual Studio 61 | *_i.c 62 | *_p.c 63 | *_i.h 64 | *.ilk 65 | *.meta 66 | *.obj 67 | *.iobj 68 | *.pch 69 | *.pdb 70 | *.ipdb 71 | *.pgc 72 | *.pgd 73 | *.rsp 74 | *.sbr 75 | *.tlb 76 | *.tli 77 | *.tlh 78 | *.tmp 79 | *.tmp_proj 80 | *.log 81 | *.vspscc 82 | *.vssscc 83 | .builds 84 | *.pidb 85 | *.svclog 86 | *.scc 87 | 88 | # Chutzpah Test files 89 | _Chutzpah* 90 | 91 | # Visual C++ cache files 92 | ipch/ 93 | *.aps 94 | *.ncb 95 | *.opendb 96 | *.opensdf 97 | *.sdf 98 | *.cachefile 99 | *.VC.db 100 | *.VC.VC.opendb 101 | 102 | # Visual Studio profiler 103 | *.psess 104 | *.vsp 105 | *.vspx 106 | *.sap 107 | 108 | # Visual Studio Trace Files 109 | *.e2e 110 | 111 | # TFS 2012 Local Workspace 112 | $tf/ 113 | 114 | # Guidance Automation Toolkit 115 | *.gpState 116 | 117 | # ReSharper is a .NET coding add-in 118 | _ReSharper*/ 119 | *.[Rr]e[Ss]harper 120 | *.DotSettings.user 121 | 122 | # JustCode is a .NET coding add-in 123 | .JustCode 124 | 125 | # TeamCity is a build add-in 126 | _TeamCity* 127 | 128 | # DotCover is a Code Coverage Tool 129 | *.dotCover 130 | 131 | # AxoCover is a Code Coverage Tool 132 | .axoCover/* 133 | !.axoCover/settings.json 134 | 135 | # Visual Studio code coverage results 136 | *.coverage 137 | *.coveragexml 138 | 139 | # NCrunch 140 | _NCrunch_* 141 | .*crunch*.local.xml 142 | nCrunchTemp_* 143 | 144 | # MightyMoose 145 | *.mm.* 146 | AutoTest.Net/ 147 | 148 | # Web workbench (sass) 149 | .sass-cache/ 150 | 151 | # Installshield output folder 152 | [Ee]xpress/ 153 | 154 | # DocProject is a documentation generator add-in 155 | DocProject/buildhelp/ 156 | DocProject/Help/*.HxT 157 | DocProject/Help/*.HxC 158 | DocProject/Help/*.hhc 159 | DocProject/Help/*.hhk 160 | DocProject/Help/*.hhp 161 | DocProject/Help/Html2 162 | DocProject/Help/html 163 | 164 | # Click-Once directory 165 | publish/ 166 | 167 | # Publish Web Output 168 | *.[Pp]ublish.xml 169 | *.azurePubxml 170 | # Note: Comment the next line if you want to checkin your web deploy settings, 171 | # but database connection strings (with potential passwords) will be unencrypted 172 | *.pubxml 173 | *.publishproj 174 | 175 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 176 | # checkin your Azure Web App publish settings, but sensitive information contained 177 | # in these scripts will be unencrypted 178 | PublishScripts/ 179 | 180 | # NuGet Packages 181 | *.nupkg 182 | # The packages folder can be ignored because of Package Restore 183 | **/[Pp]ackages/* 184 | # except build/, which is used as an MSBuild target. 185 | !**/[Pp]ackages/build/ 186 | # Uncomment if necessary however generally it will be regenerated when needed 187 | #!**/[Pp]ackages/repositories.config 188 | # NuGet v3's project.json files produces more ignorable files 189 | *.nuget.props 190 | *.nuget.targets 191 | 192 | # Microsoft Azure Build Output 193 | csx/ 194 | *.build.csdef 195 | 196 | # Microsoft Azure Emulator 197 | ecf/ 198 | rcf/ 199 | 200 | # Windows Store app package directories and files 201 | AppPackages/ 202 | BundleArtifacts/ 203 | Package.StoreAssociation.xml 204 | _pkginfo.txt 205 | *.appx 206 | 207 | # Visual Studio cache files 208 | # files ending in .cache can be ignored 209 | *.[Cc]ache 210 | # but keep track of directories ending in .cache 211 | !*.[Cc]ache/ 212 | 213 | # Others 214 | ClientBin/ 215 | ~$* 216 | *~ 217 | *.dbmdl 218 | *.dbproj.schemaview 219 | *.jfm 220 | *.pfx 221 | *.publishsettings 222 | orleans.codegen.cs 223 | 224 | # Including strong name files can present a security risk 225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 226 | #*.snk 227 | 228 | # Since there are multiple workflows, uncomment next line to ignore bower_components 229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 230 | #bower_components/ 231 | 232 | # RIA/Silverlight projects 233 | Generated_Code/ 234 | 235 | # Backup & report files from converting an old project file 236 | # to a newer Visual Studio version. Backup files are not needed, 237 | # because we have git ;-) 238 | _UpgradeReport_Files/ 239 | Backup*/ 240 | UpgradeLog*.XML 241 | UpgradeLog*.htm 242 | ServiceFabricBackup/ 243 | *.rptproj.bak 244 | 245 | # SQL Server files 246 | *.mdf 247 | *.ldf 248 | *.ndf 249 | 250 | # Business Intelligence projects 251 | *.rdl.data 252 | *.bim.layout 253 | *.bim_*.settings 254 | *.rptproj.rsuser 255 | 256 | # Microsoft Fakes 257 | FakesAssemblies/ 258 | 259 | # GhostDoc plugin setting file 260 | *.GhostDoc.xml 261 | 262 | # Node.js Tools for Visual Studio 263 | .ntvs_analysis.dat 264 | node_modules/ 265 | 266 | # Visual Studio 6 build log 267 | *.plg 268 | 269 | # Visual Studio 6 workspace options file 270 | *.opt 271 | 272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 273 | *.vbw 274 | 275 | # Visual Studio LightSwitch build output 276 | **/*.HTMLClient/GeneratedArtifacts 277 | **/*.DesktopClient/GeneratedArtifacts 278 | **/*.DesktopClient/ModelManifest.xml 279 | **/*.Server/GeneratedArtifacts 280 | **/*.Server/ModelManifest.xml 281 | _Pvt_Extensions 282 | 283 | # Paket dependency manager 284 | .paket/paket.exe 285 | paket-files/ 286 | 287 | # FAKE - F# Make 288 | .fake/ 289 | 290 | # JetBrains Rider 291 | .idea/ 292 | *.sln.iml 293 | 294 | # CodeRush 295 | .cr/ 296 | 297 | # Python Tools for Visual Studio (PTVS) 298 | __pycache__/ 299 | *.pyc 300 | 301 | # Cake - Uncomment if you are using it 302 | # tools/** 303 | # !tools/packages.config 304 | 305 | # Tabs Studio 306 | *.tss 307 | 308 | # Telerik's JustMock configuration file 309 | *.jmconfig 310 | 311 | # BizTalk build output 312 | *.btp.cs 313 | *.btm.cs 314 | *.odx.cs 315 | *.xsd.cs 316 | 317 | # OpenCover UI analysis results 318 | OpenCover/ 319 | 320 | # Azure Stream Analytics local run output 321 | ASALocalRun/ 322 | 323 | # MSBuild Binary and Structured Log 324 | *.binlog 325 | 326 | # NVidia Nsight GPU debugger configuration file 327 | *.nvuser 328 | 329 | # MFractors (Xamarin productivity tool) working folder 330 | .mfractor/ 331 | -------------------------------------------------------------------------------- /css/w3.css: -------------------------------------------------------------------------------- 1 | /* W3.CSS 2.99 Mar 2017 by Jan Egil and Borge Refsnes */ 2 | html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} 3 | /* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ 4 | html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} 5 | article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block} 6 | audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} 7 | audio:not([controls]){display:none;height:0}[hidden],template{display:none} 8 | a{background-color:transparent;-webkit-text-decoration-skip:objects} 9 | a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} 10 | dfn{font-style:italic}mark{background:#ff0;color:#000} 11 | small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} 12 | sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px} 13 | img{border-style:none}svg:not(:root){overflow:hidden} 14 | code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em} 15 | hr{box-sizing:content-box;height:0;overflow:visible} 16 | button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold} 17 | button,input{overflow:visible}button,select{text-transform:none} 18 | button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button} 19 | button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0} 20 | button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText} 21 | fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} 22 | legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} 23 | [type=checkbox],[type=radio]{padding:0} 24 | [type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} 25 | [type=search]{-webkit-appearance:textfield;outline-offset:-2px} 26 | [type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} 27 | ::-webkit-input-placeholder{color:inherit;opacity:0.54} 28 | ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} 29 | /* End extract */ 30 | html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} 31 | h1,h2,h3,h4,h5,h6,.w3-slim,.w3-wide{font-family:"Segoe UI",Arial,sans-serif} 32 | h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px} 33 | .w3-serif{font-family:"Times New Roman",Times,serif} 34 | h1,h2,h3,h4,h5,h6{font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} 35 | h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit} 36 | hr{border:0;border-top:1px solid #eee;margin:20px 0} 37 | img{margin-bottom:-5px}a{color:inherit} 38 | .w3-image{max-width:100%;height:auto} 39 | .w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table} 40 | .w3-table-all{border:1px solid #ccc} 41 | .w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd} 42 | .w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} 43 | .w3-table-all tr:nth-child(odd){background-color:#fff} 44 | .w3-table-all tr:nth-child(even){background-color:#f1f1f1} 45 | .w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc} 46 | .w3-centered tr th,.w3-centered tr td{text-align:center} 47 | .w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} 48 | .w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} 49 | .w3-btn,.w3-btn-block,.w3-button{border:none;display:inline-block;outline:0;padding:6px 16px;vertical-align:middle;overflow:hidden;text-decoration:none!important;color:#fff;background-color:#000;text-align:center;cursor:pointer;white-space:nowrap} 50 | .w3-btn:hover,.w3-btn-block:hover,.w3-btn-floating:hover,.w3-btn-floating-large:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} 51 | .w3-button{color:#000;background-color:#f1f1f1;padding:8px 16px}.w3-button:hover{color:#000!important;background-color:#ccc!important} 52 | .w3-btn,.w3-btn-floating,.w3-btn-floating-large,.w3-closenav,.w3-opennav,.w3-btn-block,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} 53 | .w3-btn-floating,.w3-btn-floating-large{display:inline-block;text-align:center;color:#fff;background-color:#000;position:relative;overflow:hidden;z-index:1;padding:0;border-radius:50%;cursor:pointer;font-size:24px} 54 | .w3-btn-floating{width:40px;height:40px;line-height:40px}.w3-btn-floating-large{width:56px;height:56px;line-height:56px} 55 | .w3-disabled,.w3-btn:disabled,.w3-button:disabled,.w3-btn-floating:disabled,.w3-btn-floating-large:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} 56 | .w3-btn.w3-disabled:hover,.w3-btn-block.w3-disabled:hover,.w3-btn:disabled:hover,.w3-btn-floating.w3-disabled:hover,.w3-btn-floating:disabled:hover, 57 | .w3-btn-floating-large.w3-disabled:hover,.w3-btn-floating-large:disabled:hover{box-shadow:none} 58 | .w3-btn-group .w3-btn{float:left}.w3-btn-block{width:100%} 59 | .w3-btn-bar .w3-btn{box-shadow:none;background-color:inherit;color:inherit;float:left}.w3-btn-bar .w3-btn:hover{background-color:#ccc} 60 | .w3-badge,.w3-tag,.w3-sign{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center} 61 | .w3-badge{border-radius:50%} 62 | ul.w3-ul{list-style-type:none;padding:0;margin:0}ul.w3-ul li{padding:6px 2px 6px 16px;border-bottom:1px solid #ddd}ul.w3-ul li:last-child{border-bottom:none} 63 | .w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} 64 | .w3-navbar{list-style-type:none;margin:0;padding:0;overflow:hidden} 65 | .w3-navbar li{float:left}.w3-navbar li a,.w3-navitem,.w3-navbar li .w3-btn,.w3-navbar li .w3-input{display:block;padding:8px 16px}.w3-navbar li .w3-btn,.w3-navbar li .w3-input{border:none;outline:none;width:100%} 66 | .w3-navbar li a:hover{color:#000;background-color:#ccc} 67 | .w3-navbar .w3-dropdown-hover,.w3-navbar .w3-dropdown-click{position:static} 68 | .w3-navbar .w3-dropdown-hover:hover,.w3-navbar .w3-dropdown-hover:first-child,.w3-navbar .w3-dropdown-click:hover{background-color:#ccc;color:#000} 69 | .w3-navbar a,.w3-topnav a,.w3-sidenav a,.w3-dropdown-content a,.w3-accordion-content a,.w3-dropnav a,.w3-navblock a{text-decoration:none!important} 70 | .w3-navbar .w3-opennav.w3-right{float:right!important}.w3-topnav{padding:8px 8px} 71 | .w3-navblock .w3-dropdown-hover:hover,.w3-navblock .w3-dropdown-hover:first-child,.w3-navblock .w3-dropdown-click:hover{background-color:#ccc;color:#000} 72 | .w3-navblock .w3-dropdown-hover,.w3-navblock .w3-dropdown-click{width:100%}.w3-navblock .w3-dropdown-hover .w3-dropdown-content,.w3-navblock .w3-dropdown-click .w3-dropdown-content{min-width:100%} 73 | .w3-topnav a{padding:0 8px;border-bottom:3px solid transparent;-webkit-transition:border-bottom .25s;transition:border-bottom .25s} 74 | .w3-topnav a:hover{border-bottom:3px solid #fff}.w3-topnav .w3-dropdown-hover a{border-bottom:0} 75 | .w3-opennav,.w3-closenav{color:inherit}.w3-opennav:hover,.w3-closenav:hover{cursor:pointer;opacity:0.8} 76 | .w3-btn,.w3-btn-floating,.w3-dropnav a,.w3-btn-floating-large,.w3-btn-block, .w3-navbar a,.w3-navblock a,.w3-sidenav a,.w3-pagination li a,.w3-hoverable tbody tr,.w3-hoverable li, 77 | .w3-accordion-content a,.w3-dropdown-content a,.w3-dropdown-click:hover,.w3-dropdown-hover:hover,.w3-opennav,.w3-closenav,.w3-closebtn,*[class*="w3-hover-"] 78 | {-webkit-transition:background-color .25s,color .15s,box-shadow .25s,opacity 0.25s,filter 0.25s,border 0.15s;transition:background-color .25s,color .15s,box-shadow .15s,opacity .25s,filter .25s,border .15s} 79 | .w3-ripple:active{opacity:0.5}.w3-ripple{-webkit-transition:opacity 0s;transition:opacity 0s} 80 | .w3-sidenav,.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} 81 | .w3-sidenav a,.w3-navblock a{padding:4px 2px 4px 16px}.w3-sidenav a:hover,.w3-navblock a:hover{background-color:#ccc;color:#000}.w3-sidenav a,.w3-dropnav a,.w3-navblock a{display:block} 82 | .w3-sidenav .w3-dropdown-hover:hover,.w3-sidenav .w3-dropdown-hover:first-child,.w3-sidenav .w3-dropdown-click:hover,.w3-dropnav a:hover{background-color:#ccc;color:#000} 83 | .w3-sidenav .w3-dropdown-hover,.w3-sidenav .w3-dropdown-click,.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} 84 | .w3-sidenav .w3-dropdown-hover .w3-dropdown-content,.w3-sidenav .w3-dropdown-click .w3-dropdown-content,.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} 85 | .w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;background-color:inherit;color:inherit;padding:6px 2px 6px 16px} 86 | .w3-main,#main{transition:margin-left .4s} 87 | .w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} 88 | .w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}.w3-closebtn{text-decoration:none;float:right;font-size:24px;font-weight:bold;color:inherit} 89 | .w3-closebtn:hover,.w3-closebtn:focus{color:#000;text-decoration:none;cursor:pointer} 90 | .w3-pagination{display:inline-block;padding:0;margin:0}.w3-pagination li{display:inline} 91 | .w3-pagination li a{text-decoration:none;color:#000;float:left;padding:8px 16px} 92 | .w3-pagination li a:hover{background-color:#ccc} 93 | .w3-input-group,.w3-group{margin-top:24px;margin-bottom:24px} 94 | .w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #808080;width:100%} 95 | .w3-label{color:#009688}.w3-input:not(:valid)~.w3-validate{color:#f44336} 96 | .w3-select{padding:9px 0;width:100%;color:#000;border:1px solid transparent;border-bottom:1px solid #009688} 97 | .w3-select select:focus{color:#000;border:1px solid #009688}.w3-select option[disabled]{color:#009688} 98 | .w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} 99 | .w3-dropdown-hover:hover .w3-dropdown-content{display:block;z-index:1} 100 | .w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} 101 | .w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} 102 | .w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0} 103 | .w3-dropdown-content a{padding:6px 16px;display:block} 104 | .w3-dropdown-content a:hover{background-color:#ccc} 105 | .w3-accordion{width:100%;cursor:pointer} 106 | .w3-accordion-content{cursor:auto;display:none;position:relative;width:100%;margin:0;padding:0} 107 | .w3-accordion-content a{padding:6px 16px;display:block}.w3-accordion-content a:hover{background-color:#ccc} 108 | .w3-progress-container{width:100%;height:1.5em;position:relative;background-color:#f1f1f1} 109 | .w3-progressbar{background-color:#757575;height:100%;position:absolute;line-height:inherit} 110 | input[type=checkbox].w3-check,input[type=radio].w3-radio{width:24px;height:24px;position:relative;top:6px} 111 | input[type=checkbox].w3-check:checked+.w3-validate,input[type=radio].w3-radio:checked+.w3-validate{color:#009688} 112 | input[type=checkbox].w3-check:disabled+.w3-validate,input[type=radio].w3-radio:disabled+.w3-validate{color:#aaa} 113 | .w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} 114 | .w3-bar .w3-bar-item{padding:8px 16px;float:left;background-color:inherit;color:inherit;width:auto;border:none;outline:none;display:block} 115 | .w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} 116 | .w3-bar .w3-button{background-color:inherit;color:inherit;white-space:normal} 117 | .w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;background-color:inherit;color:inherit;border:none;outline:none;white-space:normal} 118 | .w3-bar-block.w3-center .w3-bar-item{text-align:center} 119 | .w3-block{display:block;width:100%} 120 | .w3-responsive{overflow-x:auto} 121 | .w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,.w3-cell-row:before,.w3-cell-row:after, 122 | .w3-topnav:after,.w3-topnav:before,.w3-clear:after,.w3-clear:before,.w3-btn-group:before,.w3-btn-group:after,.w3-btn-bar:before,.w3-btn-bar:after,.w3-bar:before,.w3-bar:after 123 | {content:"";display:table;clear:both} 124 | .w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} 125 | .w3-col.s1{width:8.33333%} 126 | .w3-col.s2{width:16.66666%} 127 | .w3-col.s3{width:24.99999%} 128 | .w3-col.s4{width:33.33333%} 129 | .w3-col.s5{width:41.66666%} 130 | .w3-col.s6{width:49.99999%} 131 | .w3-col.s7{width:58.33333%} 132 | .w3-col.s8{width:66.66666%} 133 | .w3-col.s9{width:74.99999%} 134 | .w3-col.s10{width:83.33333%} 135 | .w3-col.s11{width:91.66666%} 136 | .w3-col.s12,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{width:99.99999%} 137 | @media (min-width:601px){ 138 | .w3-col.m1{width:8.33333%} 139 | .w3-col.m2{width:16.66666%} 140 | .w3-col.m3,.w3-quarter{width:24.99999%} 141 | .w3-col.m4,.w3-third{width:33.33333%} 142 | .w3-col.m5{width:41.66666%} 143 | .w3-col.m6,.w3-half{width:49.99999%} 144 | .w3-col.m7{width:58.33333%} 145 | .w3-col.m8,.w3-twothird{width:66.66666%} 146 | .w3-col.m9,.w3-threequarter{width:74.99999%} 147 | .w3-col.m10{width:83.33333%} 148 | .w3-col.m11{width:91.66666%} 149 | .w3-col.m12{width:99.99999%}} 150 | @media (min-width:993px){ 151 | .w3-col.l1{width:8.33333%} 152 | .w3-col.l2{width:16.66666%} 153 | .w3-col.l3,.w3-quarter{width:24.99999%} 154 | .w3-col.l4,.w3-third{width:33.33333%} 155 | .w3-col.l5{width:41.66666%} 156 | .w3-col.l6,.w3-half{width:49.99999%} 157 | .w3-col.l7{width:58.33333%} 158 | .w3-col.l8,.w3-twothird{width:66.66666%} 159 | .w3-col.l9,.w3-threequarter{width:74.99999%} 160 | .w3-col.l10{width:83.33333%} 161 | .w3-col.l11{width:91.66666%} 162 | .w3-col.l12{width:99.99999%}} 163 | .w3-content{max-width:980px;margin:auto} 164 | .w3-rest{overflow:hidden} 165 | .w3-layout-container,.w3-cell-row{display:table;width:100%}.w3-layout-row{display:table-row}.w3-layout-cell,.w3-layout-col,.w3-cell{display:table-cell} 166 | .w3-layout-top,.w3-cell-top{vertical-align:top}.w3-layout-middle,.w3-cell-middle{vertical-align:middle}.w3-layout-bottom,.w3-cell-bottom{vertical-align:bottom} 167 | .w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} 168 | @media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} 169 | .w3-topnav a{display:block}.w3-navbar li:not(.w3-opennav){float:none;width:100%!important}.w3-navbar li.w3-right{float:none!important} 170 | .w3-topnav .w3-dropdown-hover .w3-dropdown-content,.w3-navbar .w3-dropdown-click .w3-dropdown-content,.w3-navbar .w3-dropdown-hover .w3-dropdown-content,.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} 171 | .w3-topnav,.w3-navbar{text-align:center}.w3-hide-small{display:none!important}.w3-layout-col,.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} 172 | .w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} 173 | @media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} 174 | @media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:block!important}} 175 | @media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} 176 | @media (max-width:992px){.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}} 177 | .w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} 178 | .w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} 179 | .w3-left{float:left!important}.w3-right{float:right!important} 180 | .w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important} 181 | .w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} 182 | .w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important} 183 | .w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} 184 | .w3-vertical{word-break:break-all;line-height:1;text-align:center;width:0.6em} 185 | .w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important} 186 | .w3-justify{text-align:justify!important}.w3-center{text-align:center!important} 187 | .w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} 188 | .w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} 189 | .w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} 190 | .w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} 191 | .w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} 192 | .w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} 193 | .w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} 194 | .w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} 195 | .w3-display-position{position:absolute} 196 | .w3-circle{border-radius:50%!important} 197 | .w3-round-small{border-radius:2px!important}.w3-round,.w3-round-medium{border-radius:4px!important} 198 | .w3-round-large{border-radius:8px!important}.w3-round-xlarge{border-radius:16px!important} 199 | .w3-round-xxlarge{border-radius:32px!important}.w3-round-jumbo{border-radius:64px!important} 200 | .w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} 201 | .w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} 202 | .w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} 203 | .w3-margin{margin:16px!important}.w3-margin-0{margin:0!important} 204 | .w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} 205 | .w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} 206 | .w3-section{margin-top:16px!important;margin-bottom:16px!important} 207 | .w3-padding-tiny{padding:2px 4px!important}.w3-padding-small{padding:4px 8px!important} 208 | .w3-padding-medium,.w3-padding,.w3-form{padding:8px 16px!important} 209 | .w3-padding-large{padding:12px 24px!important}.w3-padding-xlarge{padding:16px 32px!important} 210 | .w3-padding-xxlarge{padding:24px 48px!important}.w3-padding-jumbo{padding:32px 64px!important} 211 | .w3-padding-4{padding-top:4px!important;padding-bottom:4px!important} 212 | .w3-padding-8{padding-top:8px!important;padding-bottom:8px!important} 213 | .w3-padding-12{padding-top:12px!important;padding-bottom:12px!important} 214 | .w3-padding-16{padding-top:16px!important;padding-bottom:16px!important} 215 | .w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} 216 | .w3-padding-32{padding-top:32px!important;padding-bottom:32px!important} 217 | .w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} 218 | .w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} 219 | .w3-padding-128{padding-top:128px!important;padding-bottom:128px!important} 220 | .w3-padding-0{padding:0!important} 221 | .w3-padding-top{padding-top:8px!important}.w3-padding-bottom{padding-bottom:8px!important} 222 | .w3-padding-left{padding-left:16px!important}.w3-padding-right{padding-right:16px!important} 223 | .w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} 224 | .w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} 225 | .w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} 226 | .w3-spin{animation:w3-spin 2s infinite linear;-webkit-animation:w3-spin 2s infinite linear} 227 | @-webkit-keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} 228 | @keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} 229 | .w3-container{padding:0.01em 16px} 230 | .w3-panel{padding:0.01em 16px;margin-top:16px!important;margin-bottom:16px!important} 231 | .w3-example{background-color:#f1f1f1;padding:0.01em 16px} 232 | .w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} 233 | .w3-code{line-height:1.4;width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} 234 | .w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} 235 | .w3-example,.w3-code{margin:20px 0}.w3-card{border:1px solid #ccc} 236 | .w3-card-2,.w3-example{box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)!important} 237 | .w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} 238 | .w3-card-8{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} 239 | .w3-card-12{box-shadow:0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)!important} 240 | .w3-card-16{box-shadow:0 16px 24px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)!important} 241 | .w3-card-24{box-shadow:0 24px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)!important} 242 | .w3-animate-fading{-webkit-animation:fading 10s infinite;animation:fading 10s infinite} 243 | @-webkit-keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} 244 | @keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} 245 | .w3-animate-opacity{-webkit-animation:opac 0.8s;animation:opac 0.8s} 246 | @-webkit-keyframes opac{from{opacity:0} to{opacity:1}} 247 | @keyframes opac{from{opacity:0} to{opacity:1}} 248 | .w3-animate-top{position:relative;-webkit-animation:animatetop 0.4s;animation:animatetop 0.4s} 249 | @-webkit-keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} 250 | @keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} 251 | .w3-animate-left{position:relative;-webkit-animation:animateleft 0.4s;animation:animateleft 0.4s} 252 | @-webkit-keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} 253 | @keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} 254 | .w3-animate-right{position:relative;-webkit-animation:animateright 0.4s;animation:animateright 0.4s} 255 | @-webkit-keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} 256 | @keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} 257 | .w3-animate-bottom{position:relative;-webkit-animation:animatebottom 0.4s;animation:animatebottom 0.4s} 258 | @-webkit-keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0px;opacity:1}} 259 | @keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} 260 | .w3-animate-zoom {-webkit-animation:animatezoom 0.6s;animation:animatezoom 0.6s} 261 | @-webkit-keyframes animatezoom{from{-webkit-transform:scale(0)} to{-webkit-transform:scale(1)}} 262 | @keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} 263 | .w3-animate-input{-webkit-transition:width 0.4s ease-in-out;transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} 264 | .w3-opacity,.w3-hover-opacity:hover{opacity:0.60;-webkit-backface-visibility:hidden} 265 | .w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1;-webkit-backface-visibility:hidden} 266 | .w3-opacity-max{opacity:0.25;-webkit-backface-visibility:hidden} 267 | .w3-opacity-min{opacity:0.75;-webkit-backface-visibility:hidden} 268 | .w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{-webkit-filter:grayscale(100%);filter:grayscale(100%)} 269 | .w3-greyscale,.w3-grayscale{-webkit-filter:grayscale(75%);filter:grayscale(75%)} 270 | .w3-greyscale-min,.w3-grayscale-min{-webkit-filter:grayscale(50%);filter:grayscale(50%)} 271 | .w3-sepia{-webkit-filter:sepia(75%);filter:sepia(75%)} 272 | .w3-sepia-max,.w3-hover-sepia:hover{-webkit-filter:sepia(100%);filter:sepia(100%)} 273 | .w3-sepia-min{-webkit-filter:sepia(50%);filter:sepia(50%)} 274 | .w3-text-shadow{text-shadow:1px 1px 0 #444}.w3-text-shadow-white{text-shadow:1px 1px 0 #ddd} 275 | .w3-transparent{background-color:transparent!important} 276 | .w3-hover-none:hover{box-shadow:none!important;background-color:transparent!important} 277 | /* Colors */ 278 | .w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} 279 | .w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} 280 | .w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important} 281 | .w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} 282 | .w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} 283 | .w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} 284 | .w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} 285 | .w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} 286 | .w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} 287 | .w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} 288 | .w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} 289 | .w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} 290 | .w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} 291 | .w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} 292 | .w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} 293 | .w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} 294 | .w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} 295 | .w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} 296 | .w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} 297 | .w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} 298 | .w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} 299 | .w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} 300 | .w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} 301 | .w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} 302 | .w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} 303 | .w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} 304 | .w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} 305 | .w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} 306 | .w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} 307 | .w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} 308 | .w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} 309 | .w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} 310 | .w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} 311 | .w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} 312 | .w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} 313 | .w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} 314 | .w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} 315 | .w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} 316 | .w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} 317 | .w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} 318 | .w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} 319 | .w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} 320 | .w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} 321 | .w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} 322 | .w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} 323 | .w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} 324 | .w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} 325 | .w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} 326 | .w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} 327 | .w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} 328 | .w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} 329 | .w3-text-white,.w3-hover-text-white:hover{color:#fff!important} 330 | .w3-text-black,.w3-hover-text-black:hover{color:#000!important} 331 | .w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} 332 | .w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} 333 | .w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} 334 | .w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} 335 | .w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} 336 | .w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} 337 | .w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} 338 | .w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} 339 | .w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} 340 | .w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} 341 | .w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} 342 | .w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} 343 | .w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} 344 | .w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} 345 | .w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} 346 | .w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} 347 | .w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} 348 | .w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} 349 | .w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} 350 | .w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} 351 | .w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} 352 | .w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} 353 | .w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} 354 | .w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} 355 | .w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} 356 | .w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} 357 | .w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} 358 | .w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} 359 | .w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} 360 | .w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} 361 | .w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} -------------------------------------------------------------------------------- /Setup1/Setup1.vdproj: -------------------------------------------------------------------------------- 1 | "DeployProject" 2 | { 3 | "VSVersion" = "3:800" 4 | "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" 5 | "IsWebType" = "8:FALSE" 6 | "ProjectName" = "8:Setup1" 7 | "LanguageId" = "3:1033" 8 | "CodePage" = "3:1252" 9 | "UILanguageId" = "3:1033" 10 | "SccProjectName" = "8:" 11 | "SccLocalPath" = "8:" 12 | "SccAuxPath" = "8:" 13 | "SccProvider" = "8:" 14 | "Hierarchy" 15 | { 16 | "Entry" 17 | { 18 | "MsmKey" = "8:_5B4FBE0D2BFAE559D4B454D3BD6DE73A" 19 | "OwnerKey" = "8:_825C198C322D44D7A3B02D3D76904093" 20 | "MsmSig" = "8:_UNDEFINED" 21 | } 22 | "Entry" 23 | { 24 | "MsmKey" = "8:_825C198C322D44D7A3B02D3D76904093" 25 | "OwnerKey" = "8:_UNDEFINED" 26 | "MsmSig" = "8:_UNDEFINED" 27 | } 28 | "Entry" 29 | { 30 | "MsmKey" = "8:_E17651D76D449596A3217A5FB9A9F86E" 31 | "OwnerKey" = "8:_825C198C322D44D7A3B02D3D76904093" 32 | "MsmSig" = "8:_UNDEFINED" 33 | } 34 | "Entry" 35 | { 36 | "MsmKey" = "8:_UNDEFINED" 37 | "OwnerKey" = "8:_825C198C322D44D7A3B02D3D76904093" 38 | "MsmSig" = "8:_UNDEFINED" 39 | } 40 | "Entry" 41 | { 42 | "MsmKey" = "8:_UNDEFINED" 43 | "OwnerKey" = "8:_E17651D76D449596A3217A5FB9A9F86E" 44 | "MsmSig" = "8:_UNDEFINED" 45 | } 46 | "Entry" 47 | { 48 | "MsmKey" = "8:_UNDEFINED" 49 | "OwnerKey" = "8:_5B4FBE0D2BFAE559D4B454D3BD6DE73A" 50 | "MsmSig" = "8:_UNDEFINED" 51 | } 52 | } 53 | "Configurations" 54 | { 55 | "Debug" 56 | { 57 | "DisplayName" = "8:Debug" 58 | "IsDebugOnly" = "11:TRUE" 59 | "IsReleaseOnly" = "11:FALSE" 60 | "OutputFilename" = "8:Debug/RawPrint.msi" 61 | "PackageFilesAs" = "3:2" 62 | "PackageFileSize" = "3:-2147483648" 63 | "CabType" = "3:1" 64 | "Compression" = "3:2" 65 | "SignOutput" = "11:FALSE" 66 | "CertificateFile" = "8:" 67 | "PrivateKeyFile" = "8:" 68 | "TimeStampServer" = "8:" 69 | "InstallerBootstrapper" = "3:2" 70 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" 71 | { 72 | "Enabled" = "11:TRUE" 73 | "PromptEnabled" = "11:TRUE" 74 | "PrerequisitesLocation" = "2:1" 75 | "Url" = "8:" 76 | "ComponentsUrl" = "8:" 77 | "Items" 78 | { 79 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" 80 | { 81 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" 82 | "ProductCode" = "8:.NETFramework,Version=v4.7.2" 83 | } 84 | } 85 | } 86 | } 87 | "Release" 88 | { 89 | "DisplayName" = "8:Release" 90 | "IsDebugOnly" = "11:FALSE" 91 | "IsReleaseOnly" = "11:TRUE" 92 | "OutputFilename" = "8:RawPrint.msi" 93 | "PackageFilesAs" = "3:2" 94 | "PackageFileSize" = "3:-2147483648" 95 | "CabType" = "3:1" 96 | "Compression" = "3:2" 97 | "SignOutput" = "11:FALSE" 98 | "CertificateFile" = "8:" 99 | "PrivateKeyFile" = "8:" 100 | "TimeStampServer" = "8:" 101 | "InstallerBootstrapper" = "3:2" 102 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" 103 | { 104 | "Enabled" = "11:TRUE" 105 | "PromptEnabled" = "11:TRUE" 106 | "PrerequisitesLocation" = "2:1" 107 | "Url" = "8:" 108 | "ComponentsUrl" = "8:" 109 | "Items" 110 | { 111 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" 112 | { 113 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" 114 | "ProductCode" = "8:.NETFramework,Version=v4.7.2" 115 | } 116 | } 117 | } 118 | } 119 | } 120 | "Deployable" 121 | { 122 | "CustomAction" 123 | { 124 | "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0690B3A9D79447CC8E05BFB826E17318" 125 | { 126 | "Name" = "8:Primary output from RawPrint (Active)" 127 | "Condition" = "8:" 128 | "Object" = "8:_825C198C322D44D7A3B02D3D76904093" 129 | "FileType" = "3:2" 130 | "InstallAction" = "3:2" 131 | "Arguments" = "8:" 132 | "EntryPoint" = "8:" 133 | "Sequence" = "3:1" 134 | "Identifier" = "8:_6409F5EF_D51D_4178_B7A6_4EE32FE5FE4F" 135 | "InstallerClass" = "11:TRUE" 136 | "CustomActionData" = "8:" 137 | } 138 | "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_5FAD2FDD5B484E18A79AF0FB2870D84A" 139 | { 140 | "Name" = "8:Primary output from RawPrint (Active)" 141 | "Condition" = "8:" 142 | "Object" = "8:_825C198C322D44D7A3B02D3D76904093" 143 | "FileType" = "3:2" 144 | "InstallAction" = "3:1" 145 | "Arguments" = "8:" 146 | "EntryPoint" = "8:" 147 | "Sequence" = "3:1" 148 | "Identifier" = "8:_546C40E2_4041_4D2E_A747_BE464AEF8A70" 149 | "InstallerClass" = "11:TRUE" 150 | "CustomActionData" = "8:" 151 | } 152 | "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_798E0F53E05449D785C204E204B8B79E" 153 | { 154 | "Name" = "8:Primary output from RawPrint (Active)" 155 | "Condition" = "8:" 156 | "Object" = "8:_825C198C322D44D7A3B02D3D76904093" 157 | "FileType" = "3:2" 158 | "InstallAction" = "3:3" 159 | "Arguments" = "8:" 160 | "EntryPoint" = "8:" 161 | "Sequence" = "3:1" 162 | "Identifier" = "8:_30DD9991_D7DF_40DC_AF5B_270F5A727E51" 163 | "InstallerClass" = "11:TRUE" 164 | "CustomActionData" = "8:" 165 | } 166 | "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_AE6DBEBD70BB46278C611F460C91E2D0" 167 | { 168 | "Name" = "8:Primary output from RawPrint (Active)" 169 | "Condition" = "8:" 170 | "Object" = "8:_825C198C322D44D7A3B02D3D76904093" 171 | "FileType" = "3:2" 172 | "InstallAction" = "3:4" 173 | "Arguments" = "8:" 174 | "EntryPoint" = "8:" 175 | "Sequence" = "3:1" 176 | "Identifier" = "8:_A9BF13E3_43D1_4A2D_882F_830222F183F3" 177 | "InstallerClass" = "11:TRUE" 178 | "CustomActionData" = "8:" 179 | } 180 | } 181 | "DefaultFeature" 182 | { 183 | "Name" = "8:DefaultFeature" 184 | "Title" = "8:" 185 | "Description" = "8:" 186 | } 187 | "ExternalPersistence" 188 | { 189 | "LaunchCondition" 190 | { 191 | "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_89930F9821344795ABE51BC0F660C268" 192 | { 193 | "Name" = "8:.NET Framework" 194 | "Message" = "8:[VSDNETMSG]" 195 | "FrameworkVersion" = "8:.NETFramework,Version=v4.6.1" 196 | "AllowLaterVersions" = "11:FALSE" 197 | "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" 198 | } 199 | } 200 | } 201 | "File" 202 | { 203 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5B4FBE0D2BFAE559D4B454D3BD6DE73A" 204 | { 205 | "AssemblyRegister" = "3:1" 206 | "AssemblyIsInGAC" = "11:FALSE" 207 | "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 208 | "ScatterAssemblies" 209 | { 210 | "_5B4FBE0D2BFAE559D4B454D3BD6DE73A" 211 | { 212 | "Name" = "8:System.Net.Http.dll" 213 | "Attributes" = "3:512" 214 | } 215 | } 216 | "SourcePath" = "8:System.Net.Http.dll" 217 | "TargetName" = "8:" 218 | "Tag" = "8:" 219 | "Folder" = "8:_E7E4433B81D3431090338ACD7F522668" 220 | "Condition" = "8:" 221 | "Transitive" = "11:FALSE" 222 | "Vital" = "11:TRUE" 223 | "ReadOnly" = "11:FALSE" 224 | "Hidden" = "11:FALSE" 225 | "System" = "11:FALSE" 226 | "Permanent" = "11:FALSE" 227 | "SharedLegacy" = "11:FALSE" 228 | "PackageAs" = "3:1" 229 | "Register" = "3:1" 230 | "Exclude" = "11:FALSE" 231 | "IsDependency" = "11:TRUE" 232 | "IsolateTo" = "8:" 233 | } 234 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E17651D76D449596A3217A5FB9A9F86E" 235 | { 236 | "AssemblyRegister" = "3:1" 237 | "AssemblyIsInGAC" = "11:FALSE" 238 | "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" 239 | "ScatterAssemblies" 240 | { 241 | "_E17651D76D449596A3217A5FB9A9F86E" 242 | { 243 | "Name" = "8:Newtonsoft.Json.dll" 244 | "Attributes" = "3:512" 245 | } 246 | } 247 | "SourcePath" = "8:Newtonsoft.Json.dll" 248 | "TargetName" = "8:" 249 | "Tag" = "8:" 250 | "Folder" = "8:_E7E4433B81D3431090338ACD7F522668" 251 | "Condition" = "8:" 252 | "Transitive" = "11:FALSE" 253 | "Vital" = "11:TRUE" 254 | "ReadOnly" = "11:FALSE" 255 | "Hidden" = "11:FALSE" 256 | "System" = "11:FALSE" 257 | "Permanent" = "11:FALSE" 258 | "SharedLegacy" = "11:FALSE" 259 | "PackageAs" = "3:1" 260 | "Register" = "3:1" 261 | "Exclude" = "11:FALSE" 262 | "IsDependency" = "11:TRUE" 263 | "IsolateTo" = "8:" 264 | } 265 | } 266 | "FileType" 267 | { 268 | } 269 | "Folder" 270 | { 271 | "{1525181F-901A-416C-8A58-119130FE478E}:_8A2DFF6EB062482AA591DD20DE9001BE" 272 | { 273 | "Name" = "8:#1919" 274 | "AlwaysCreate" = "11:FALSE" 275 | "Condition" = "8:" 276 | "Transitive" = "11:FALSE" 277 | "Property" = "8:ProgramMenuFolder" 278 | "Folders" 279 | { 280 | } 281 | } 282 | "{1525181F-901A-416C-8A58-119130FE478E}:_B1A1678C7F714DAE97685F9AA54E8905" 283 | { 284 | "Name" = "8:#1916" 285 | "AlwaysCreate" = "11:FALSE" 286 | "Condition" = "8:" 287 | "Transitive" = "11:FALSE" 288 | "Property" = "8:DesktopFolder" 289 | "Folders" 290 | { 291 | } 292 | } 293 | "{3C67513D-01DD-4637-8A68-80971EB9504F}:_E7E4433B81D3431090338ACD7F522668" 294 | { 295 | "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" 296 | "Name" = "8:#1925" 297 | "AlwaysCreate" = "11:FALSE" 298 | "Condition" = "8:" 299 | "Transitive" = "11:FALSE" 300 | "Property" = "8:TARGETDIR" 301 | "Folders" 302 | { 303 | } 304 | } 305 | } 306 | "LaunchCondition" 307 | { 308 | } 309 | "Locator" 310 | { 311 | } 312 | "MsiBootstrapper" 313 | { 314 | "LangId" = "3:1033" 315 | "RequiresElevation" = "11:FALSE" 316 | } 317 | "Product" 318 | { 319 | "Name" = "8:Microsoft Visual Studio" 320 | "ProductName" = "8:RAW Print" 321 | "ProductCode" = "8:{A92EB5FC-CB78-41A3-A619-1D4CF2F33F74}" 322 | "PackageCode" = "8:{7A8C2F39-4FEA-40DF-8DC2-D321A3F75EE7}" 323 | "UpgradeCode" = "8:{A113521F-54F1-427D-B29C-2721E2AA9D10}" 324 | "AspNetVersion" = "8:4.0.30319.0" 325 | "RestartWWWService" = "11:FALSE" 326 | "RemovePreviousVersions" = "11:FALSE" 327 | "DetectNewerInstalledVersion" = "11:TRUE" 328 | "InstallAllUsers" = "11:FALSE" 329 | "ProductVersion" = "8:1.0.0" 330 | "Manufacturer" = "8:TreHoffman Technologies" 331 | "ARPHELPTELEPHONE" = "8:" 332 | "ARPHELPLINK" = "8:" 333 | "Title" = "8:RAW Print Setup" 334 | "Subject" = "8:" 335 | "ARPCONTACT" = "8:TreHoffman Technologies" 336 | "Keywords" = "8:" 337 | "ARPCOMMENTS" = "8:" 338 | "ARPURLINFOABOUT" = "8:" 339 | "ARPPRODUCTICON" = "8:" 340 | "ARPIconIndex" = "3:0" 341 | "SearchPath" = "8:" 342 | "UseSystemSearchPath" = "11:TRUE" 343 | "TargetPlatform" = "3:0" 344 | "PreBuildEvent" = "8:" 345 | "PostBuildEvent" = "8:" 346 | "RunPostBuildEvent" = "3:0" 347 | } 348 | "Registry" 349 | { 350 | "HKLM" 351 | { 352 | "Keys" 353 | { 354 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EC6E913B55454BF68E2DBD5DA9C3290A" 355 | { 356 | "Name" = "8:Software" 357 | "Condition" = "8:" 358 | "AlwaysCreate" = "11:FALSE" 359 | "DeleteAtUninstall" = "11:FALSE" 360 | "Transitive" = "11:FALSE" 361 | "Keys" 362 | { 363 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_94D157FE5DF7434886BDDBBDF638B4CE" 364 | { 365 | "Name" = "8:[Manufacturer]" 366 | "Condition" = "8:" 367 | "AlwaysCreate" = "11:FALSE" 368 | "DeleteAtUninstall" = "11:FALSE" 369 | "Transitive" = "11:FALSE" 370 | "Keys" 371 | { 372 | } 373 | "Values" 374 | { 375 | } 376 | } 377 | } 378 | "Values" 379 | { 380 | } 381 | } 382 | } 383 | } 384 | "HKCU" 385 | { 386 | "Keys" 387 | { 388 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_2BD95440B8F34BD0A42F38823AFDC7E1" 389 | { 390 | "Name" = "8:Software" 391 | "Condition" = "8:" 392 | "AlwaysCreate" = "11:FALSE" 393 | "DeleteAtUninstall" = "11:FALSE" 394 | "Transitive" = "11:FALSE" 395 | "Keys" 396 | { 397 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7B6FD9227F5A489DBC3DB9587877F104" 398 | { 399 | "Name" = "8:[Manufacturer]" 400 | "Condition" = "8:" 401 | "AlwaysCreate" = "11:FALSE" 402 | "DeleteAtUninstall" = "11:FALSE" 403 | "Transitive" = "11:FALSE" 404 | "Keys" 405 | { 406 | } 407 | "Values" 408 | { 409 | } 410 | } 411 | } 412 | "Values" 413 | { 414 | } 415 | } 416 | } 417 | } 418 | "HKCR" 419 | { 420 | "Keys" 421 | { 422 | } 423 | } 424 | "HKU" 425 | { 426 | "Keys" 427 | { 428 | } 429 | } 430 | "HKPU" 431 | { 432 | "Keys" 433 | { 434 | } 435 | } 436 | } 437 | "Sequences" 438 | { 439 | } 440 | "Shortcut" 441 | { 442 | } 443 | "UserInterface" 444 | { 445 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_02197D8E1BFF4AB680B4ADC8F76F5E45" 446 | { 447 | "Name" = "8:#1900" 448 | "Sequence" = "3:1" 449 | "Attributes" = "3:1" 450 | "Dialogs" 451 | { 452 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1B7222B59F0D44A494B5B57E4490FD99" 453 | { 454 | "Sequence" = "3:200" 455 | "DisplayName" = "8:Installation Folder" 456 | "UseDynamicProperties" = "11:TRUE" 457 | "IsDependency" = "11:FALSE" 458 | "SourcePath" = "8:\\VsdFolderDlg.wid" 459 | "Properties" 460 | { 461 | "BannerBitmap" 462 | { 463 | "Name" = "8:BannerBitmap" 464 | "DisplayName" = "8:#1001" 465 | "Description" = "8:#1101" 466 | "Type" = "3:8" 467 | "ContextData" = "8:Bitmap" 468 | "Attributes" = "3:4" 469 | "Setting" = "3:1" 470 | "UsePlugInResources" = "11:TRUE" 471 | } 472 | "InstallAllUsersVisible" 473 | { 474 | "Name" = "8:InstallAllUsersVisible" 475 | "DisplayName" = "8:#1059" 476 | "Description" = "8:#1159" 477 | "Type" = "3:5" 478 | "ContextData" = "8:1;True=1;False=0" 479 | "Attributes" = "3:0" 480 | "Setting" = "3:0" 481 | "Value" = "3:1" 482 | "DefaultValue" = "3:1" 483 | "UsePlugInResources" = "11:TRUE" 484 | } 485 | } 486 | } 487 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_221DCC1E667F4DD599F3C713F97527C2" 488 | { 489 | "Sequence" = "3:100" 490 | "DisplayName" = "8:Welcome" 491 | "UseDynamicProperties" = "11:TRUE" 492 | "IsDependency" = "11:FALSE" 493 | "SourcePath" = "8:\\VsdWelcomeDlg.wid" 494 | "Properties" 495 | { 496 | "BannerBitmap" 497 | { 498 | "Name" = "8:BannerBitmap" 499 | "DisplayName" = "8:#1001" 500 | "Description" = "8:#1101" 501 | "Type" = "3:8" 502 | "ContextData" = "8:Bitmap" 503 | "Attributes" = "3:4" 504 | "Setting" = "3:1" 505 | "UsePlugInResources" = "11:TRUE" 506 | } 507 | "CopyrightWarning" 508 | { 509 | "Name" = "8:CopyrightWarning" 510 | "DisplayName" = "8:#1002" 511 | "Description" = "8:#1102" 512 | "Type" = "3:3" 513 | "ContextData" = "8:" 514 | "Attributes" = "3:0" 515 | "Setting" = "3:1" 516 | "Value" = "8:#1202" 517 | "DefaultValue" = "8:#1202" 518 | "UsePlugInResources" = "11:TRUE" 519 | } 520 | "Welcome" 521 | { 522 | "Name" = "8:Welcome" 523 | "DisplayName" = "8:#1003" 524 | "Description" = "8:#1103" 525 | "Type" = "3:3" 526 | "ContextData" = "8:" 527 | "Attributes" = "3:0" 528 | "Setting" = "3:1" 529 | "Value" = "8:#1203" 530 | "DefaultValue" = "8:#1203" 531 | "UsePlugInResources" = "11:TRUE" 532 | } 533 | } 534 | } 535 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_96B34E91881642979E148C69CE4DBFFA" 536 | { 537 | "Sequence" = "3:300" 538 | "DisplayName" = "8:Confirm Installation" 539 | "UseDynamicProperties" = "11:TRUE" 540 | "IsDependency" = "11:FALSE" 541 | "SourcePath" = "8:\\VsdConfirmDlg.wid" 542 | "Properties" 543 | { 544 | "BannerBitmap" 545 | { 546 | "Name" = "8:BannerBitmap" 547 | "DisplayName" = "8:#1001" 548 | "Description" = "8:#1101" 549 | "Type" = "3:8" 550 | "ContextData" = "8:Bitmap" 551 | "Attributes" = "3:4" 552 | "Setting" = "3:1" 553 | "UsePlugInResources" = "11:TRUE" 554 | } 555 | } 556 | } 557 | } 558 | } 559 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_1F3D5F3364514E9CAC70ED6CC832F0CF" 560 | { 561 | "UseDynamicProperties" = "11:FALSE" 562 | "IsDependency" = "11:FALSE" 563 | "SourcePath" = "8:\\VsdUserInterface.wim" 564 | } 565 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_2A8692DDD48B46A8984951E3565D85EA" 566 | { 567 | "UseDynamicProperties" = "11:FALSE" 568 | "IsDependency" = "11:FALSE" 569 | "SourcePath" = "8:\\VsdBasicDialogs.wim" 570 | } 571 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_76C95506D31146EAAB62F496FFBDB42C" 572 | { 573 | "Name" = "8:#1900" 574 | "Sequence" = "3:2" 575 | "Attributes" = "3:1" 576 | "Dialogs" 577 | { 578 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2511DE9741094C8F8F173E3E11FA0686" 579 | { 580 | "Sequence" = "3:200" 581 | "DisplayName" = "8:Installation Folder" 582 | "UseDynamicProperties" = "11:TRUE" 583 | "IsDependency" = "11:FALSE" 584 | "SourcePath" = "8:\\VsdAdminFolderDlg.wid" 585 | "Properties" 586 | { 587 | "BannerBitmap" 588 | { 589 | "Name" = "8:BannerBitmap" 590 | "DisplayName" = "8:#1001" 591 | "Description" = "8:#1101" 592 | "Type" = "3:8" 593 | "ContextData" = "8:Bitmap" 594 | "Attributes" = "3:4" 595 | "Setting" = "3:1" 596 | "UsePlugInResources" = "11:TRUE" 597 | } 598 | } 599 | } 600 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6CAFC7AC97F140E88C5E8DDA6A93DDD9" 601 | { 602 | "Sequence" = "3:300" 603 | "DisplayName" = "8:Confirm Installation" 604 | "UseDynamicProperties" = "11:TRUE" 605 | "IsDependency" = "11:FALSE" 606 | "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" 607 | "Properties" 608 | { 609 | "BannerBitmap" 610 | { 611 | "Name" = "8:BannerBitmap" 612 | "DisplayName" = "8:#1001" 613 | "Description" = "8:#1101" 614 | "Type" = "3:8" 615 | "ContextData" = "8:Bitmap" 616 | "Attributes" = "3:4" 617 | "Setting" = "3:1" 618 | "UsePlugInResources" = "11:TRUE" 619 | } 620 | } 621 | } 622 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EC82F293D9524B349931A97199E1E3B6" 623 | { 624 | "Sequence" = "3:100" 625 | "DisplayName" = "8:Welcome" 626 | "UseDynamicProperties" = "11:TRUE" 627 | "IsDependency" = "11:FALSE" 628 | "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" 629 | "Properties" 630 | { 631 | "BannerBitmap" 632 | { 633 | "Name" = "8:BannerBitmap" 634 | "DisplayName" = "8:#1001" 635 | "Description" = "8:#1101" 636 | "Type" = "3:8" 637 | "ContextData" = "8:Bitmap" 638 | "Attributes" = "3:4" 639 | "Setting" = "3:1" 640 | "UsePlugInResources" = "11:TRUE" 641 | } 642 | "CopyrightWarning" 643 | { 644 | "Name" = "8:CopyrightWarning" 645 | "DisplayName" = "8:#1002" 646 | "Description" = "8:#1102" 647 | "Type" = "3:3" 648 | "ContextData" = "8:" 649 | "Attributes" = "3:0" 650 | "Setting" = "3:1" 651 | "Value" = "8:#1202" 652 | "DefaultValue" = "8:#1202" 653 | "UsePlugInResources" = "11:TRUE" 654 | } 655 | "Welcome" 656 | { 657 | "Name" = "8:Welcome" 658 | "DisplayName" = "8:#1003" 659 | "Description" = "8:#1103" 660 | "Type" = "3:3" 661 | "ContextData" = "8:" 662 | "Attributes" = "3:0" 663 | "Setting" = "3:1" 664 | "Value" = "8:#1203" 665 | "DefaultValue" = "8:#1203" 666 | "UsePlugInResources" = "11:TRUE" 667 | } 668 | } 669 | } 670 | } 671 | } 672 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_7FADA242FEF14FF488FA0D7EE94243CB" 673 | { 674 | "Name" = "8:#1902" 675 | "Sequence" = "3:1" 676 | "Attributes" = "3:3" 677 | "Dialogs" 678 | { 679 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CF42BBFCD89C4AC48C3AEF19874C0C18" 680 | { 681 | "Sequence" = "3:100" 682 | "DisplayName" = "8:Finished" 683 | "UseDynamicProperties" = "11:TRUE" 684 | "IsDependency" = "11:FALSE" 685 | "SourcePath" = "8:\\VsdFinishedDlg.wid" 686 | "Properties" 687 | { 688 | "BannerBitmap" 689 | { 690 | "Name" = "8:BannerBitmap" 691 | "DisplayName" = "8:#1001" 692 | "Description" = "8:#1101" 693 | "Type" = "3:8" 694 | "ContextData" = "8:Bitmap" 695 | "Attributes" = "3:4" 696 | "Setting" = "3:1" 697 | "UsePlugInResources" = "11:TRUE" 698 | } 699 | "UpdateText" 700 | { 701 | "Name" = "8:UpdateText" 702 | "DisplayName" = "8:#1058" 703 | "Description" = "8:#1158" 704 | "Type" = "3:15" 705 | "ContextData" = "8:" 706 | "Attributes" = "3:0" 707 | "Setting" = "3:1" 708 | "Value" = "8:#1258" 709 | "DefaultValue" = "8:#1258" 710 | "UsePlugInResources" = "11:TRUE" 711 | } 712 | } 713 | } 714 | } 715 | } 716 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_916E5C2C0BAB4413BA7AF7E1D62254D5" 717 | { 718 | "Name" = "8:#1901" 719 | "Sequence" = "3:1" 720 | "Attributes" = "3:2" 721 | "Dialogs" 722 | { 723 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A7863A75B2DB47E4A2FA914773B859F8" 724 | { 725 | "Sequence" = "3:100" 726 | "DisplayName" = "8:Progress" 727 | "UseDynamicProperties" = "11:TRUE" 728 | "IsDependency" = "11:FALSE" 729 | "SourcePath" = "8:\\VsdProgressDlg.wid" 730 | "Properties" 731 | { 732 | "BannerBitmap" 733 | { 734 | "Name" = "8:BannerBitmap" 735 | "DisplayName" = "8:#1001" 736 | "Description" = "8:#1101" 737 | "Type" = "3:8" 738 | "ContextData" = "8:Bitmap" 739 | "Attributes" = "3:4" 740 | "Setting" = "3:1" 741 | "UsePlugInResources" = "11:TRUE" 742 | } 743 | "ShowProgress" 744 | { 745 | "Name" = "8:ShowProgress" 746 | "DisplayName" = "8:#1009" 747 | "Description" = "8:#1109" 748 | "Type" = "3:5" 749 | "ContextData" = "8:1;True=1;False=0" 750 | "Attributes" = "3:0" 751 | "Setting" = "3:0" 752 | "Value" = "3:1" 753 | "DefaultValue" = "3:1" 754 | "UsePlugInResources" = "11:TRUE" 755 | } 756 | } 757 | } 758 | } 759 | } 760 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_AC34B9C3448E4888B6478BC8D6965CD5" 761 | { 762 | "Name" = "8:#1902" 763 | "Sequence" = "3:2" 764 | "Attributes" = "3:3" 765 | "Dialogs" 766 | { 767 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0EFF3CE699594D5FA6E832E43108E7FF" 768 | { 769 | "Sequence" = "3:100" 770 | "DisplayName" = "8:Finished" 771 | "UseDynamicProperties" = "11:TRUE" 772 | "IsDependency" = "11:FALSE" 773 | "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" 774 | "Properties" 775 | { 776 | "BannerBitmap" 777 | { 778 | "Name" = "8:BannerBitmap" 779 | "DisplayName" = "8:#1001" 780 | "Description" = "8:#1101" 781 | "Type" = "3:8" 782 | "ContextData" = "8:Bitmap" 783 | "Attributes" = "3:4" 784 | "Setting" = "3:1" 785 | "UsePlugInResources" = "11:TRUE" 786 | } 787 | } 788 | } 789 | } 790 | } 791 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BFA4C65CF10549B9BC66D7D082F7B695" 792 | { 793 | "Name" = "8:#1901" 794 | "Sequence" = "3:2" 795 | "Attributes" = "3:2" 796 | "Dialogs" 797 | { 798 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DEDD54222DE742DB88ED21868EB91C8B" 799 | { 800 | "Sequence" = "3:100" 801 | "DisplayName" = "8:Progress" 802 | "UseDynamicProperties" = "11:TRUE" 803 | "IsDependency" = "11:FALSE" 804 | "SourcePath" = "8:\\VsdAdminProgressDlg.wid" 805 | "Properties" 806 | { 807 | "BannerBitmap" 808 | { 809 | "Name" = "8:BannerBitmap" 810 | "DisplayName" = "8:#1001" 811 | "Description" = "8:#1101" 812 | "Type" = "3:8" 813 | "ContextData" = "8:Bitmap" 814 | "Attributes" = "3:4" 815 | "Setting" = "3:1" 816 | "UsePlugInResources" = "11:TRUE" 817 | } 818 | "ShowProgress" 819 | { 820 | "Name" = "8:ShowProgress" 821 | "DisplayName" = "8:#1009" 822 | "Description" = "8:#1109" 823 | "Type" = "3:5" 824 | "ContextData" = "8:1;True=1;False=0" 825 | "Attributes" = "3:0" 826 | "Setting" = "3:0" 827 | "Value" = "3:1" 828 | "DefaultValue" = "3:1" 829 | "UsePlugInResources" = "11:TRUE" 830 | } 831 | } 832 | } 833 | } 834 | } 835 | } 836 | "MergeModule" 837 | { 838 | } 839 | "ProjectOutput" 840 | { 841 | "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_825C198C322D44D7A3B02D3D76904093" 842 | { 843 | "SourcePath" = "8:..\\RawPrint\\obj\\Release\\RawPrint.exe" 844 | "TargetName" = "8:" 845 | "Tag" = "8:" 846 | "Folder" = "8:_E7E4433B81D3431090338ACD7F522668" 847 | "Condition" = "8:" 848 | "Transitive" = "11:FALSE" 849 | "Vital" = "11:TRUE" 850 | "ReadOnly" = "11:FALSE" 851 | "Hidden" = "11:FALSE" 852 | "System" = "11:FALSE" 853 | "Permanent" = "11:FALSE" 854 | "SharedLegacy" = "11:FALSE" 855 | "PackageAs" = "3:1" 856 | "Register" = "3:1" 857 | "Exclude" = "11:FALSE" 858 | "IsDependency" = "11:FALSE" 859 | "IsolateTo" = "8:" 860 | "ProjectOutputGroupRegister" = "3:1" 861 | "OutputConfiguration" = "8:" 862 | "OutputGroupCanonicalName" = "8:Built" 863 | "OutputProjectGuid" = "8:{0EBAFB0D-0180-470A-8B15-BED25A6D839A}" 864 | "ShowKeyOutput" = "11:TRUE" 865 | "ExcludeFilters" 866 | { 867 | } 868 | } 869 | } 870 | } 871 | } 872 | --------------------------------------------------------------------------------