Click here to Skip to main content
15,881,709 members
Articles / Programming Languages / C#

Advanced Text Editor with Ruler

Rate me:
Please Sign up or sign in to vote.
4.85/5 (47 votes)
20 Mar 2008CPOL3 min read 429.2K   32.4K   164  
Extending RichTextBox with ruler and much more
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
        /wb///8Y////Nv///1f///9w////gf39/Y7s7Oyd19fXqcLCwrarq6vBn5+fyZycnMydnZ3Kpqamxbi4
        uLvQ0NCu4uLio/j4+JX///+G////eP///2P///9F////I////wz///8BAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAD///8D////Ef///yz///9N////af7+/n/r6+uUt7e3sYGBgcxeXl7iSEhI8Dk5OfcyMjL6Ly8v+yws
        LPwtLS38Ly8v+zU1NflAQEDzVFRU6HJyctaenp6919fXn/n5+Yf///9z////Wv///zr///8b////BgAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAP///wf///8e////QP///2H+/v552NjYlZSUlL5VVVXlNjY29y0tLf4qKir/Kioq/ysr
        K/8sLCz/Kysr/ykpKf8oKCj/KCgo/ykpKf8qKir/Kysr/ysrK/8wMDD7RERE7nZ2ds69vb2l9vb2g///
        /2z///9O////LP///xD///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAD///8B////DP///yj///9M////auXl5YaRkZG3S0tL5i8vL/wqKir/Kioq/yYm
        Jv8hISH/Hh4e/xsbG/8aGhr/FxcX/xISEv8QEBD/EhIS/xYWFv8dHR3/ISEh/yQkJP8mJib/JiYm/ycn
        J/85OTnybm5uzMjIyJj+/v5z////Wv///zf///8W////BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8P////Lf///1H9/f1subm5lllZWdguLi77KSkp/ykp
        Kf8mJib/HR0d/xUVFf8PDw//CAgI/wgICP8NDQ3/Kysr/zAwMP8sLCz/FBQU/wUFBf8JCQn/Dg4O/xER
        Ef8SEhL/Ghoa/yMjI/8nJyf/KCgo/kFBQeuPj4+w7Ozsef///13///89////Gv///wUAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Af///w////8t////T/Pz82yPj4+mPDw86Sgo
        KP8oKCj/JCQk/xwcHP8ZGRn/Hx8f/ywsLP8qKir/BwcH/wAAAP8ODg7/W1tb/3V1df9paWn/Jycn/wEB
        Af8BAQH/IyMj/zAwMP8bGxv/EBAQ/xEREf8dHR3/JiYm/yYmJv8rKyv3ZGRkxNPT037///9b////PP//
        /xr///8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////DP///yn///9K6urqaHh4
        eK4sLCzyJycn/yYmJv8cHBz/EhIS/wwMDP8nJyf/V1dX/2dnZ/9SUlL/Ghoa/xUVFf8sLCz/aWlp/4KC
        gv91dXX/PT09/x8fH/8UFBT/T09P/2xsbP9YWFj/Li4u/wgICP8NDQ3/FRUV/xwcHP8hISH/IiIi/ExM
        TM/Dw8N9////Vf///zf///8W////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8I////If//
        /0Lq6upeb29vqicnJ/QmJib/JSUl/xoaGv8TExP/CwsL/wQEBP8XFxf/ZmZm/3x8fP9zc3P/XV1d/2ho
        aP91dXX/g4OD/4mJif+Ghob/eXl5/29vb/9hYWH/dHR0/35+fv9wcHD/LS0t/wEBAf8EBAT/CgoK/w0N
        Df8VFRX/ICAg/yEhIfxERETPvb29dP7+/k3///8v////Ef///wEAAAAAAAAAAAAAAAAAAAAAAAAAAP//
        /wP///8Y////N/X19VJ1dXWaJSUl8iQkJP8kJCT/HBwc/x0dHf8zMzP/JCQk/woKCv8lJSX/aWlp/4aG
        hv+Li4v/j4+P/5OTk/+VlZX/lZWV/5WVlf+VlZX/lZWV/5SUlP+RkZH/jIyM/4mJif9zc3P/NjY2/w4O
        Dv8ODg7/MTEx/x4eHv8LCwv/FhYW/yEhIf8fHx/9R0dHxc7OzmT///9D////Jf///woAAAAAAAAAAAAA
        AAAAAAAAAAAAAP///w////8r////Qo+Pj3woKCjoHx8f/yEhIf8cHBz/JSUl/0lJSf9oaGj/VVVV/0VF
        Rf9wcHD/i4uL/5OTk/+YmJj/m5ub/56env+hoaH/o6Oj/6Ojo/+ioqL/oqKi/6CgoP+dnZ3/mZmZ/5WV
        lf+Pj4//d3d3/0tLS/9GRkb/a2tr/1FRUf8nJyf/EBAQ/xkZGf8hISH/Hh4e+VhYWKvo6OhO////Nv//
        /xn///8EAAAAAAAAAAAAAAAA////Bv///x3///82ubm5WTg4OM8aGhr/Hh4e/xkZGf8UFBT/LCws/2xs
        bP+BgYH/g4OD/4WFhf+Wlpb/nZ2d/6Kiov+np6f/q6ur/6+vr/+ysrL/tLS0/7W1tf+1tbX/s7Oz/7Cw
        sP+srKz/qKio/6SkpP+enp7/mpqa/4uLi/+AgID/g4OD/3h4eP9KSkr/Dw8P/w8PD/8ZGRn/HR0d/yEh
        IfF9fX2C////Pf///yn///8OAAAAAAAAAAD///8C////D////yjx8fE6VFRUnxcXF/0ZGRn/FxcX/xER
        Ef8NDQ3/Dg4O/0pKSv+Kior/lpaW/5+fn/+lpaX/rKys/7Kysv+4uLj/vb29/7y8vP+xsbH/pKSk/6Cg
        oP+jo6P/sLCw/7u7u/++vr7/urq6/7S0tP+urq7/qKio/6Ghof+ampr/kJCQ/3Jycv8lJSX/AwMD/wYG
        Bv8NDQ3/FxcX/xkZGf8yMjLUra2tUf///zD///8a////BQAAAAD///8I////Gf///yqPj49aICAg5BER
        Ef8VFRX/ERER/xcXF/8SEhL/ExMT/1xcXP+Xl5f/pKSk/6ysrP+0tLT/u7u7/8LCwv+4uLj/lpaW/3Nz
        c/9YWFj/Tk5O/0xMTP9OTk7/WFhY/3Fxcf+UlJT/tra2/8PDw/++vr7/t7e3/7CwsP+np6f/n5+f/3Z2
        dv8pKSn/CAgI/xISEv8NDQ3/EBAQ/xkZGf8bGxv6UlJSkvLy8jH///8i////DAAAAAD///8P////Hu7u
        7itBQUGeFRUV/REREf8ODg7/ExMT/zMzM/83Nzf/R0dH/4yMjP+lpaX/sLCw/7m5uf/CwsL/xcXF/6Ki
        ov9hYWH/Q0ND/z8/P/9AQED/QUFB/0JCQv9CQkL/QEBA/0BAQP9ERET/Xl5e/5ubm//Gxsb/xcXF/729
        vf+0tLT/q6ur/5ubm/9gYGD/QkJC/1NTU/8rKyv/DQ0N/xgYGP8aGhr/JSUl2KCgoEX///8j////E///
        /wP///8V////HH5+fkYiIiLcGhoa/xMTE/8JCQn/Gxsb/0FBQf9YWFj/cXFx/5WVlf+qqqr/uLi4/8PD
        w//ExMT/jY2N/0pKSv8+Pj7/RERE/0dHR/9HR0f/R0dH/0hISP9ISEj/R0dH/0dHR/9FRUX/Q0ND/01N
        Tf+JiYn/wcHB/8bGxv+9vb3/s7Oz/6qqqv+VlZX/hYWF/4GBgf9RUVH/HBwc/xUVFf8cHBz/GBgY+UhI
        SID///8f////GP///wj///8X/v7+GUVFRXgXFxf9HR0d/xoaGv8KCgr/Ghoa/zg4OP9VVVX/dHR0/5GR
        kf+pqan/vLy8/8TExP+Hh4f/Pj4+/z4+Pv9JSUn/SkpK/0tLS/9LS0v/TExM/0xMTP9MTEz/S0tL/0tL
        S/9KSkr/SUlJ/0ZGRv9JSUn/h4eH/8bGxv/ExMT/u7u7/7Gxsf+mpqb/m5ub/4+Pj/9xcXH/LCws/xIS
        Ev8aGhr/GBgY/yYmJr2enp4p////F////wz///8UpqamGiQkJLMWFhb/Hh4e/yAgIP8TExP/CQkJ/yAg
        IP9FRUX/ZWVl/4SEhP+fn5//t7e3/5qamv8+Pj7/Ozs7/0lJSf9NTU3/Tk5O/05OTv9PT0//UFBQ/1BQ
        UP9QUFD/T09P/09PT/9OTk7/TU1N/0xMTP9ISEj/UVFR/52dnf/ExMT/urq6/7Gxsf+np6f/m5ub/3l5
        ef8yMjL/CwsL/wwMDP8UFBT/FxcX/xgYGOdNTU1E////Ef///w76+voNXl5eLRgYGN0ZGRn/Hh4e/yIi
        Iv8iIiL/DAwM/xQUFP81NTX/UVFR/29vb/+NjY3/m5ub/1JSUv8xMTH/RkZG/05OTv9RUVH/UlJS/1JS
        Uv9TU1P/U1NT/1RUVP9UVFT/U1NT/1NTU/9SUlL/UVFR/1BQUP9NTU3/SkpK/2RkZP+wsLD/tLS0/6mp
        qf+goKD/lZWV/2ZmZv8ZGRn/BAQE/wgICP8ODg7/FBQU/xQUFPwuLi5sUlJSDP///w4pKSkELCwsTxYW
        Fu4bGxv/Hx8f/yMjI/8oKCj/ICAg/xYWFv8nJyf/Pj4+/1lZWf90dHT/b29v/y8vL/86Ojr/TExM/1RU
        VP9VVVX/VlZW/1dXV/9YWFj/WFhY/1hYWP9YWFj/WFhY/1dXV/9XV1f/VlZW/1VVVf9SUlL/UFBQ/1BQ
        UP+RkZH/q6ur/52dnf+VlZX/jY2N/3BwcP8/Pz//MjIy/ykpKf8PDw//FRUV/xUVFf8eHh6YUFBQC///
        /wsAAAABCgoKbhMTE/kcHBz/ICAg/yUlJf8pKSn/LS0t/yAgIP8fHx//MTEx/0dHR/9dXV3/RkZG/ycn
        J/9BQUH/UlJS/1lZWf9bW1v/XFxc/1xcXP9dXV3/XV1d/11dXf9dXV3/XV1d/1xcXP9cXFz/W1tb/1pa
        Wv9YWFj/V1dX/1NTU/93d3f/oaGh/5OTk/+MjIz/g4OD/3R0dP9eXl7/VlZW/zs7O/8XFxf/GRkZ/xgY
        GP8LCwu6GBgYD////wcAAAAMAgICjhQUFP4dHR3/ISEh/yYmJv8qKir/MDAw/zU1Nf8mJib/KCgo/zk5
        Of9LS0v/MzMz/ykpKf9FRUX/VlZW/15eXv9hYWH/YmJi/2JiYv9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2Ji
        Yv9iYmL/YWFh/2BgYP9eXl7/XV1d/1lZWf9nZ2f/mJiY/4uLi/+EhIT/fHx8/3Nzc/9nZ2f/W1tb/0RE
        RP8jIyP/HR0d/xsbG/8JCQnSAAAAJA8PDwEAAAAjAgICqBUVFf8eHh7/IyMj/ycnJ/8rKyv/NjY2/0VF
        Rf8+Pj7/Kioq/zExMf8/Pz//Kioq/ysrK/9ERET/V1dX/2FhYf9lZWX/Z2dn/2dnZ/9oaGj/aGho/2ho
        aP9oaGj/aGho/2hoaP9nZ2f/ZmZm/2VlZf9kZGT/YmJi/19fX/9mZmb/lJSU/4iIiP+AgID/enp6/3Nz
        c/9oaGj/Xl5e/0xMTP8mJib/Hh4e/xwcHP8JCQnhAAAAPQAAAAUAAAA5AgICtxQUFP8eHh7/IyMj/ycn
        J/8uLi7/Q0ND/0xMTP9PT0//QEBA/zAwMP84ODj/Jycn/ysrK/9BQUH/VVVV/2NjY/9paWn/a2tr/21t
        bf9ubm7/bm5u/29vb/9vb2//bm5u/21tbf9tbW3/bGxs/2tra/9qamr/aGho/2RkZP9nZ2f/k5OT/4qK
        iv+CgoL/fHx8/3V1df9hYWH/KCgo/xYWFv8XFxf/Gxsb/xsbG/8ICAjoAAAAUAAAABAAAABIAgICvRMT
        E/8dHR3/IyMj/ygoKP83Nzf/TU1N/1JSUv9VVVX/VlZW/0FBQf84ODj/LCws/y4uLv8/Pz//UlJS/2Ji
        Yv9qamr/cHBw/3Jycv9zc3P/dHR0/3R0dP90dHT/c3Nz/3Nzc/9zc3P/cXFx/3BwcP9vb2//bm5u/2lp
        af9ra2v/mJiY/5KSkv+Kior/hISE/319ff9jY2P/Gxsb/wUFBf8RERH/GBgY/xkZGf8ICAjpAAAAWwAA
        ABwAAABRAQEBuxEREf8cHBz/IyMj/ykpKf9ERET/VVVV/1hYWP9bW1v/X19f/11dXf9FRUX/MzMz/zAw
        MP88PDz/Tk5O/15eXv9qamr/cnJy/3Z2dv94eHj/eXl5/3l5ef95eXn/eHh4/3l5ef94eHj/d3d3/3Z2
        dv91dXX/c3Nz/2tra/9wcHD/oaGh/5ycnP+Wlpb/kJCQ/4eHh/9vb2//TU1N/yEhIf8UFBT/GBgY/xgY
        GP8HBwfnAAAAYQAAACcAAABPAAAAshAQEP4bGxv/IiIi/y4uLv9RUVH/W1tb/15eXv9iYmL/ZWVl/2ho
        aP9gYGD/QUFB/zQ0NP88PDz/SUlJ/1lZWf9nZ2f/cnJy/3h4eP97e3v/fX19/35+fv99fX3/fX19/35+
        fv99fX3/fX19/3x8fP96enr/dnZ2/2tra/+BgYH/sLCw/6ioqP+ioqL/nJyc/5SUlP+Hh4f/e3t7/0xM
        TP8dHR3/Ghoa/xYWFv8GBgbgAAAAXwAAAC0AAABJAAAAoA0NDfsYGBj/ICAg/zMzM/9bW1v/YWFh/2Rk
        ZP9nZ2f/ampq/21tbf9wcHD/ZGRk/0NDQ/8+Pj7/R0dH/1RUVP9iYmL/bm5u/3d3d/99fX3/gICA/4KC
        gv+Dg4P/g4OD/4KCgv+CgoL/gYGB/4CAgP99fX3/dXV1/2lpaf+dnZ3/vr6+/7W1tf+vr6//qKio/6Cg
        oP+ampr/j4+P/1NTU/8gICD/HBwc/xQUFP8FBQXUAAAAVgAAAC8AAABHAAAAjgsLC/UWFhb/Hh4e/zk5
        Of9jY2P/Z2dn/2tra/9ubm7/cHBw/3Nzc/91dXX/eHh4/2RkZP9ISEj/SEhI/1BQUP9bW1v/aWlp/3Nz
        c/98fHz/goKC/4aGhv+Hh4f/h4eH/4iIiP+Hh4f/hYWF/4KCgv97e3v/bm5u/3Z2dv+6urr/x8fH/8DA
        wP+6urr/srKy/6enp/+YmJj/kpKS/1ZWVv8fHx//Gxsb/xISEv8DAwPAAAAAUQAAAC0AAABGAAAAdwgI
        COoTExP/Gxsb/zw8PP9ra2v/bm5u/3Fxcf90dHT/dnZ2/3l5ef97e3v/fX19/35+fv9paWn/UVFR/1FR
        Uf9YWFj/YmJi/2xsbP93d3f/f39//4WFhf+IiIj/iYmJ/4mJif+IiIj/hISE/35+fv9zc3P/bGxs/6Sk
        pP/S0tL/z8/P/8jIyP/CwsL/u7u7/5mZmf9jY2P/Z2dn/0VFRf8dHR3/GBgY/w0NDf0BAQGmAAAATQAA
        ACcAAABCAAAAZgMDA9QPDw//FxcX/zs7O/9wcHD/dHR0/3d3d/96enr/fHx8/319ff+AgID/goKC/4SE
        hP+EhIT/b29v/1hYWP9ZWVn/Xl5e/2ZmZv9vb2//dnZ2/35+fv+CgoL/hYWF/4SEhP+CgoL/fHx8/3R0
        dP9ra2v/kpKS/9HR0f/a2tr/1NTU/83Nzf/Hx8f/vLy8/5GRkf9ra2v/ZGRk/0BAQP8aGhr/FRUV/wgI
        CPIAAACNAAAARwAAAB8AAAA4AAAAXQICArMKCgr8ExMT/zMzM/9zc3P/enp6/3x8fP9+fn7/gICA/4OD
        g/+FhYX/hoaG/4iIiP+Kior/i4uL/3h4eP9iYmL/YGBg/2NjY/9oaGj/bW1t/3Nzc/93d3f/eXl5/3l5
        ef92dnb/cHBw/3BwcP+Wlpb/zc3N/+Dg4P/b29v/1dXV/8/Pz//Jycn/wcHB/66urv+Xl5f/eHh4/z09
        Pf8WFhb/Dw8P/wQEBNsAAAB6AAAAQAAAABUAAAApAAAAUgAAAJYFBQXuDg4O/yUlJf9xcXH/gYGB/4GB
        gf+EhIT/hoaG/4iIiP+Kior/i4uL/42Njf+Ojo7/kJCQ/5CQkP9/f3//ampq/2dnZ/9paWn/a2tr/21t
        bf9vb2//cHBw/3BwcP9wcHD/e3t7/6Kiov/R0dH/4eHh/93d3f/Z2dn/09PT/83Nzf/Gxsb/wMDA/7m5
        uf+goKD/enp6/zQ0NP8TExP/CQkJ/AAAALwAAABqAAAAMgAAAAsAAAAZAAAAQAAAAH4AAADQCQkJ/hgY
        GP9jY2P/h4eH/4eHh/+JiYn/i4uL/4yMjP+Ojo7/kJCQ/5KSkv+Tk5P/lJSU/5WVlf+Wlpb/iIiI/3Z2
        dv9xcXH/cnJy/3Nzc/91dXX/eHh4/4GBgf+ZmZn/uLi4/9bW1v/f39//3Nzc/9nZ2f/U1NT/0NDQ/8fH
        x/+np6f/pqam/6ysrP+SkpL/cHBw/yIiIv8NDQ3/AwMD7QAAAJwAAABaAAAAIQAAAAMAAAALAAAAKgAA
        AGgAAACuBAQE8wwMDP9DQ0P/iIiI/4yMjP+Ojo7/j4+P/5GRkf+Tk5P/lZWV/5aWlv+Xl5f/mJiY/5mZ
        mf+ampr/m5ub/5OTk/+EhIT/hISE/4mJif+Pj4//mZmZ/6ysrP/AwMD/zc3N/9PT0//V1dX/1dXV/9LS
        0v/Pz8//ycnJ/6ysrP+FhYX/h4eH/5CQkP+Ojo7/VlZW/xISEv8ICAj9AAAAzwAAAIQAAABEAAAAEQAA
        AAAAAAACAAAAFQAAAE0AAACQAAAA2AYGBv0eHh7/eHh4/5KSkv+Tk5P/lJSU/5aWlv+Xl5f/mZmZ/5qa
        mv+bm5v/nJyc/52dnf+enp7/np6e/5+fn/+bm5v/kpKS/5KSkv+ampr/o6Oj/6+vr/+3t7f/vr6+/8XF
        xf/Kysr/y8vL/8zMzP/Kysr/wcHB/6Kiov+NjY3/jY2N/5CQkP+FhYX/Li4u/wkJCf8CAgLuAAAArQAA
        AGkAAAApAAAABQAAAAAAAAAAAAAABgAAAC4AAABwAAAAtAEBAe0HBwf+RkZG/5KSkv+Wlpb/mJiY/5qa
        mv+bm5v/nJyc/56env+fn5//oKCg/6CgoP+hoaH/oaGh/6Kiov+jo6P/n5+f/5eXl/+Wlpb/m5ub/6Ki
        ov+qqqr/srKy/7i4uP++vr7/wcHB/8LCwv/Dw8P/wsLC/7W1tf+enp7/lZWV/5aWlv9bW1v/Dw8P/wIC
        AvkAAADOAAAAjgAAAEgAAAASAAAAAAAAAAAAAAAAAAAAAAAAABIAAABIAAAAkAAAAMwAAAD3EhIS/25u
        bv+cnJz/nJyc/52dnf+fn5//oKCg/6Ghof+hoaH/oqKi/6Ojo/+jo6P/pKSk/6Wlpf+lpaX/pqam/6Sk
        pP+enp7/mZmZ/5ycnP+ioqL/qKio/62trf+xsbH/ra2t/6ampv+1tbX/vLy8/6+vr/+fn5//nZ2d/319
        ff8fHx//AgIC/QAAAOEAAACqAAAAZwAAACUAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAhAAAAYgAA
        AKcAAADZAAAA+iMjI/+CgoL/oaGh/6CgoP+ioqL/o6Oj/6SkpP+lpaX/paWl/6ampv+np6f/p6en/6io
        qP+oqKj/qKio/6mpqf+oqKj/o6Oj/56env+fn5//oqKi/6Wlpf+goKD/m5ub/5ubm/+jo6P/qamp/6Gh
        of+goKD/j4+P/zMzM/8CAgL+AAAA6QAAAL4AAACBAAAAOQAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAIAAAALwAAAHYAAAC1AAAA3QAAAPotLS3/iYmJ/6SkpP+jo6P/paWl/6ampv+np6f/qKio/6io
        qP+oqKj/qamp/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6enp/+jo6P/oaGh/6Kiov+goKD/np6e/56e
        nv+fn5//oKCg/6Kiov+Tk5P/Pz8//wQEBP4AAADrAAAAxgAAAJUAAABLAAAAFAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADoAAACEAAAAugAAANwAAAD5Kysr/4GBgf+lpaX/pqam/6en
        p/+oqKj/qamp/6mpqf+pqan/qamp/6qqqv+qqqr/qqqq/6qqqv+rq6v/qqqq/6qqqv+pqan/pqam/6Ki
        ov+fn5//np6e/56env+goKD/o6Oj/4qKiv86Ojr/BAQE/QAAAOoAAADIAAAAoAAAAFgAAAAbAAAAAgAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAA+AAAAhwAAALoAAADWAAAA9B4e
        Hv5nZ2f/nJyc/6Wlpf+lpaX/pqam/6enp/+oqKj/qKio/6mpqf+pqan/qamp/6ioqP+pqan/qamp/6mp
        qf+pqan/qKio/6Wlpf+fn5//nZ2d/5+fn/+bm5v/cHBw/yUlJf8CAgL6AAAA4wAAAMUAAACiAAAAXQAA
        AB4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAOwAA
        AIMAAAC2AAAAzQAAAOoKCgr7PDw8/3t7e/+dnZ3/paWl/6Wlpf+lpaX/pqam/6enp/+np6f/p6en/6io
        qP+oqKj/p6en/6enp/+mpqb/pqam/6ampv+lpaX/np6e/4GBgf9FRUX/DQ0N/gAAAPMAAADYAAAAwQAA
        AJ4AAABYAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAACwAAAC8AAABxAAAAqwAAAMMAAADYAAAA8BEREfw7Ozv/bW1t/46Ojv+dnZ3/o6Oj/6Wl
        pf+mpqb/paWl/6Wlpf+lpaX/paWl/6Wlpf+kpKT/n5+f/5KSkv90dHT/RUVF/xYWFv4BAQH2AAAA4gAA
        AMoAAAC4AAAAjgAAAEkAAAAWAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfAAAAVAAAAJQAAAC3AAAAyAAAANkAAADuCAgI+SAg
        IP4+Pj7/W1tb/3Fxcf9/f3//hoaG/4mJif+Hh4f/gYGB/3R0dP9gYGD/Q0ND/yQkJP8LCwv8AAAA8wAA
        AOIAAADOAAAAvwAAAKcAAAByAAAAMgAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADgAAADAAAABoAAAAnAAA
        ALgAAADEAAAA0QAAAOAAAADrAwMD9AgICPoMDAz8EhIS/hUVFf4TExP+DQ0N/QgICPoEBAT3AAAA7wAA
        AOUAAADXAAAAyQAAAL8AAACrAAAAgAAAAEYAAAAZAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAMAAAASAAAAMgAAAGAAAACOAAAArAAAALsAAADEAAAAywAAANAAAADUAAAA1wAAANkAAADYAAAA1gAA
        ANEAAADNAAAAxwAAAL8AAAC0AAAAnQAAAHYAAABFAAAAHAAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAwAAAAhAAAAQAAAAGMAAACCAAAAmAAAAKYAAACuAAAAtAAA
        ALcAAAC1AAAAsgAAAKoAAACgAAAAjAAAAHAAAABPAAAALAAAABMAAAAFAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP/gAAAH/wAA/4AAAAP/
        AAD/AAAAAP8AAPwAAAAAfwAA+AAAAAA/AADwAAAAAB8AAPAAAAAADwAA4AAAAAAHAADAAAAAAAcAAMAA
        AAAAAwAAgAAAAAADAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAAHAADgAAAAAA8AAPAA
        AAAADwAA+AAAAAAfAAD4AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAA/8AAP/gAAAH/wAA//gAAD//
        AAA=
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Kazakstan Kazakstan
Currently I am studying at East Kazakhstan State Technical University. My future occupation is engineer-programmer.

I use Visual Basic, C#, Delphi and a little C++. Also I am interested in using SQL and Perl.

Comments and Discussions