diff options
author | Julien Dessaux | 2009-08-09 21:32:40 +0200 |
---|---|---|
committer | Julien Dessaux | 2009-08-09 21:32:40 +0200 |
commit | 8caf09e50b9825206bb68fbcb3e8b4da3447afad (patch) | |
tree | e87197615bc57bbb1c123905bd85b73039022a08 | |
parent | Added LICENCE, and rfc2812 (IRC protocol) as documentation. (diff) | |
download | hsbot-8caf09e50b9825206bb68fbcb3e8b4da3447afad.tar.gz hsbot-8caf09e50b9825206bb68fbcb3e8b4da3447afad.tar.bz2 hsbot-8caf09e50b9825206bb68fbcb3e8b4da3447afad.zip |
Fixed my mess with the rfc doc stuff... :p
-rw-r--r-- | doc/rfc2812.txt | 7594 |
1 files changed, 3531 insertions, 4063 deletions
diff --git a/doc/rfc2812.txt b/doc/rfc2812.txt index 3c379ed..bfa2711 100644 --- a/doc/rfc2812.txt +++ b/doc/rfc2812.txt @@ -1,4063 +1,3531 @@ - - - - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> - <head> - <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> - <title>doc/rfc2812.txt at 0b7a6d5cde1552f37ce7cc51531ad19555dcab68 from galdor's wintermute - GitHub</title> - <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" /> - <link rel="fluid-icon" href="http://github.com/fluidicon.png" title="GitHub" /> - - - <link href="http://assets1.github.com/stylesheets/bundle.css?6f31b78746b7d07b4a33b1593ffd193d896784bd" media="screen" rel="stylesheet" type="text/css" /> - - - - - <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> - <script src="http://assets3.github.com/javascripts/bundle.js?6f31b78746b7d07b4a33b1593ffd193d896784bd" type="text/javascript"></script> - - - - - - - - <link href="http://github.com/feeds/galdor/commits/wintermute/0b7a6d5cde1552f37ce7cc51531ad19555dcab68" rel="alternate" title="Recent Commits to wintermute:0b7a6d5cde1552f37ce7cc51531ad19555dcab68" type="application/atom+xml" /> - - <meta name="description" content="An IRC bot written in Common Lisp" /> - - - - - <script type="text/javascript"> - github_user = null - </script> - </head> - - - - <body> - - - <div id="main"> - <div id="header" class=""> - <div class="site"> - <div class="logo"> - <a href="http://github.com"><img src="/images/modules/header/logov3.png" alt="github" /></a> - </div> - - <div class="topsearch"> - <form action="/search" id="top_search_form" method="get"> - <input type="search" class="search" name="q" /> <input type="submit" value="Search" /> - <input type="hidden" name="type" value="Everything" /> - <input type="hidden" name="repo" value="" /> - <input type="hidden" name="langOverride" value="" /> - <input type="hidden" name="start_value" value="1" /> - </form> - <div class="links"> - <a href="/repositories">Browse</a> | <a href="/guides">Guides</a> | <a href="/search">Advanced</a> - </div> -</div> - - - <div class="actions"> - - <a href="http://github.com">Home</a> - <a href="/plans"><b><u>Pricing and Signup</u></b></a> - <a href="http://github.com/popular/forked">Repositories</a> - - <a href="/blog">Blog</a> - - <a href="https://github.com/login">Login</a> - </div> - - </div> - </div> - - - - <div id="repo_menu"> - <div class="site"> - <ul> - - <li class="active"><a href="http://github.com/galdor/wintermute/tree/">Source</a></li> - - <li class=""><a href="http://github.com/galdor/wintermute/commits/">Commits</a></li> - - - <li class=""><a href="/galdor/wintermute/network">Network (1)</a></li> - - - - - - <li class=""><a href="/galdor/wintermute/issues">Issues (0)</a></li> - - - - - <li class=""><a href="/galdor/wintermute/downloads">Downloads (0)</a></li> - - - - - <li class=""><a href="http://wiki.github.com/galdor/wintermute">Wiki (1)</a></li> - - - <li class=""><a href="/galdor/wintermute/graphs">Graphs</a></li> - - - - - </ul> - </div> - </div> - - <div id="repo_sub_menu"> - <div class="site"> - <div class="joiner"></div> - - - - - - - - </div> - </div> - - <div class="site"> - - - - - - -<div id="repos"> - - - -<script type="text/javascript"> - GitHub.currentCommitRef = "0b7a6d5cde1552f37ce7cc51531ad19555dcab68" - GitHub.currentRepoOwner = "galdor" - GitHub.currentRepo = "wintermute" - -</script> - - - - <div class="repo public" id="repo_details"> - <div class="title"> - <div class="path"> - <a href="/galdor">galdor</a> / <b><a href="http://github.com/galdor/wintermute/tree">wintermute</a></b> - - - - <span id="edit_button" style="display:none;"> - <a href="/galdor/wintermute/edit"><img alt="edit" class="button" src="http://assets0.github.com/images/modules/repos/edit_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - - <span id="pull_request_button" style="display:none;"> - <a href="/galdor/wintermute/pull_request/" class="pull_request_button"><img alt="pull request" class="button" src="http://assets0.github.com/images/modules/repos/pull_request_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - <span id="fast_forward_button" style="display:none;"> - <a href="/galdor/wintermute/fast_forward" id="ff_button"><img alt="fast forward" class="button" src="http://assets3.github.com/images/modules/repos/fast_forward_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - <span id="fork_button"> - <a href="/galdor/wintermute/fork"><img alt="fork" class="button" src="http://assets0.github.com/images/modules/repos/fork_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - - <span id="watch_button"> - <a href="/galdor/wintermute/toggle_watch" class="toggle_watch"><img alt="watch" class="button" src="http://assets3.github.com/images/modules/repos/watch_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - <span id="unwatch_button" style="display:none;"> - <a href="/galdor/wintermute/toggle_watch" class="toggle_watch"><img alt="watch" class="button" src="http://assets3.github.com/images/modules/repos/unwatch_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - </span> - - - <a href="#" id="download_button" rel="galdor/wintermute"><img alt="download tarball" class="button" src="http://assets2.github.com/images/modules/repos/download_button.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></a> - - - </div> - - <div class="security private_security" style="display:none"> - <a href="#private_repo" rel="facebox"><img src="/images/icons/private.png" alt="private" /></a> - </div> - - <div id="private_repo" class="hidden"> - This repository is private. - All pages are served over SSL and all pushing and pulling is done over SSH. - No one may fork, clone, or view it unless they are added as a <a href="/galdor/wintermute/edit">member</a>. - - <br/> - <br/> - Every repository with this icon (<img src="/images/icons/private.png" alt="private" />) is private. - </div> - - <div class="security public_security" style=""> - <a href="#public_repo" rel="facebox"><img src="/images/icons/public.png" alt="public" /></a> - </div> - - <div id="public_repo" class="hidden"> - This repository is public. - Anyone may fork, clone, or view it. - - <br/> - <br/> - Every repository with this icon (<img src="/images/icons/public.png" alt="public" />) is public. - </div> - - - - <div class="flexipill"> - <a href="/galdor/wintermute/network"> - <table cellpadding="0" cellspacing="0"> - <tr><td><img alt="Forks" src="http://assets1.github.com/images/modules/repos/pills/forks.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></td><td class="middle"><span>1</span></td><td><img alt="Right" src="http://assets1.github.com/images/modules/repos/pills/right.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></td></tr> - </table> - </a> - </div> - - <div class="flexipill"> - <a href="/galdor/wintermute/watchers"> - <table cellpadding="0" cellspacing="0"> - <tr><td><img alt="Watchers" src="http://assets0.github.com/images/modules/repos/pills/watchers.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></td><td class="middle"><span>2</span></td><td><img alt="Right" src="http://assets1.github.com/images/modules/repos/pills/right.png?6f31b78746b7d07b4a33b1593ffd193d896784bd" /></td></tr> - </table> - </a> - </div> - </div> - - <div class="meta"> - <table> - - <tr> - <td class="label">Description:</td> - <td> - <span id="repository_description" rel="/galdor/wintermute/edit/update">An IRC bot written in Common Lisp</span> - <a href="#description" class="edit_link action" style="display:none;">edit</a> - </td> - </tr> - - - <tr> - <td class="label">Homepage:</td> - <td> - - <span id="repository_homepage" rel="/galdor/wintermute/edit/update"> - <a href="http://"></a> - </span> - <a href="#homepage" class="edit_link action" style="display:none;">edit</a> - </td> - </tr> - - - <tr> - <td class="label"><span id="public_clone_text" style="display:none;">Public </span>Clone URL:</td> - - <td> - <a href="git://github.com/galdor/wintermute.git" class="git_url_facebox" rel="#git-clone">git://github.com/galdor/wintermute.git</a> - <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" - width="110" - height="14" - class="clippy" - id="clippy" > - <param name="movie" value="/flash/clippy.swf"/> - <param name="allowScriptAccess" value="always" /> - <param name="quality" value="high" /> - <param name="scale" value="noscale" /> - <param NAME="FlashVars" value="text=git://github.com/galdor/wintermute.git"> - <param name="bgcolor" value="#F0F0F0"> - <param name="wmode" value="opaque"> - <embed src="/flash/clippy.swf" - width="110" - height="14" - name="clippy" - quality="high" - allowScriptAccess="always" - type="application/x-shockwave-flash" - pluginspage="http://www.macromedia.com/go/getflashplayer" - FlashVars="text=git://github.com/galdor/wintermute.git" - bgcolor="#F0F0F0" - wmode="opaque" - /> - </object> - - <div id="git-clone" style="display:none;"> - Give this clone URL to anyone. - <br/> - <code>git clone git://github.com/galdor/wintermute.git </code> - </div> - </td> - </tr> - - - <tr id="private_clone_url" style="display:none;"> - <td class="label">Your Clone URL:</td> - - <td> - - <div id="private-clone-url"> - <a href="git@github.com:galdor/wintermute.git" class="git_url_facebox" rel="#your-git-clone">git@github.com:galdor/wintermute.git</a> - <input type="text" value="git@github.com:galdor/wintermute.git" style="display: none;" /> - <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" - width="110" - height="14" - class="clippy" - id="clippy" > - <param name="movie" value="/flash/clippy.swf"/> - <param name="allowScriptAccess" value="always" /> - <param name="quality" value="high" /> - <param name="scale" value="noscale" /> - <param NAME="FlashVars" value="text=git@github.com:galdor/wintermute.git"> - <param name="bgcolor" value="#F0F0F0"> - <param name="wmode" value="opaque"> - <embed src="/flash/clippy.swf" - width="110" - height="14" - name="clippy" - quality="high" - allowScriptAccess="always" - type="application/x-shockwave-flash" - pluginspage="http://www.macromedia.com/go/getflashplayer" - FlashVars="text=git@github.com:galdor/wintermute.git" - bgcolor="#F0F0F0" - wmode="opaque" - /> - </object> - - </div> - - <div id="your-git-clone" style="display:none;"> - Use this clone URL yourself. - <br/> - <code>git clone git@github.com:galdor/wintermute.git </code> - </div> - </td> - </tr> - - - - - - - </table> - - </div> - </div> - - - - - - -</div> - - - <div id="commit"> - <div class="group"> - - <div class="envelope commit"> - <div class="human"> - - <div class="message"><pre><a href="/galdor/wintermute/commit/0b7a6d5cde1552f37ce7cc51531ad19555dcab68">ignore decoding errors</a> </pre></div> - - - <div class="actor"> - <div class="gravatar"> - - <img alt="" height="30" src="http://www.gravatar.com/avatar/035da19620f3e09b13bf90b1f7d40905?s=30&d=http%3A%2F%2Fgithub.com%2Fimages%2Fgravatars%2Fgravatar-30.png" width="30" /> - </div> - <div class="name">Nicolas Martyanoff <span>(author)</span></div> - <div class="date"> - <abbr class="relatize" title="2009-07-28 07:11:24">Tue Jul 28 07:11:24 -0700 2009</abbr> - </div> - </div> - - - - </div> - <div class="machine"> - <span>c</span>ommit <a href="/galdor/wintermute/commit/0b7a6d5cde1552f37ce7cc51531ad19555dcab68" hotkey="c">0b7a6d5cde1552f37ce7cc51531ad19555dcab68</a><br /> - <span>t</span>ree <a href="/galdor/wintermute/tree/0b7a6d5cde1552f37ce7cc51531ad19555dcab68" hotkey="t">9c92bebdd5288d9e910b318357d8ebdab2034584</a><br /> - - - <span>p</span>arent - - <a href="/galdor/wintermute/tree/e1e6c958fe86f40861752e68b2bab32baaeb4555" hotkey="p">e1e6c958fe86f40861752e68b2bab32baaeb4555</a> - - - </div> - </div> - - </div> - </div> - - - - - <div id="path"> - <b><a href="/galdor/wintermute/tree/0b7a6d5cde1552f37ce7cc51531ad19555dcab68">wintermute</a></b> / <a href="/galdor/wintermute/tree/0b7a6d5cde1552f37ce7cc51531ad19555dcab68/doc">doc</a> / rfc2812.txt <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" - width="110" - height="14" - class="clippy" - id="clippy" > - <param name="movie" value="/flash/clippy.swf"/> - <param name="allowScriptAccess" value="always" /> - <param name="quality" value="high" /> - <param name="scale" value="noscale" /> - <param NAME="FlashVars" value="text=doc/rfc2812.txt"> - <param name="bgcolor" value="#FFFFFF"> - <param name="wmode" value="opaque"> - <embed src="/flash/clippy.swf" - width="110" - height="14" - name="clippy" - quality="high" - allowScriptAccess="always" - type="application/x-shockwave-flash" - pluginspage="http://www.macromedia.com/go/getflashplayer" - FlashVars="text=doc/rfc2812.txt" - bgcolor="#FFFFFF" - wmode="opaque" - /> - </object> - - </div> - - <div id="files"> - <div class="file"> - <div class="meta"> - <div class="info"> - <span>100644</span> - <span>3532 lines (2279 sloc)</span> - <span>126.168 kb</span> - </div> - <div class="actions"> - - <a href="/galdor/wintermute/raw/0b7a6d5cde1552f37ce7cc51531ad19555dcab68/doc/rfc2812.txt" id="raw-url">raw</a> - - <a href="/galdor/wintermute/blame/0b7a6d5cde1552f37ce7cc51531ad19555dcab68/doc/rfc2812.txt">blame</a> - - <a href="/galdor/wintermute/commits/master/doc/rfc2812.txt">history</a> - </div> - </div> - - <div class="data syntax"> - - <table cellpadding="0" cellspacing="0"> - <tr> - <td> - - <pre class="line_numbers"> -<span id="LID1" rel="#L1">1</span> -<span id="LID2" rel="#L2">2</span> -<span id="LID3" rel="#L3">3</span> -<span id="LID4" rel="#L4">4</span> -<span id="LID5" rel="#L5">5</span> -<span id="LID6" rel="#L6">6</span> -<span id="LID7" rel="#L7">7</span> -<span id="LID8" rel="#L8">8</span> -<span id="LID9" rel="#L9">9</span> -<span id="LID10" rel="#L10">10</span> -<span id="LID11" rel="#L11">11</span> -<span id="LID12" rel="#L12">12</span> -<span id="LID13" rel="#L13">13</span> -<span id="LID14" rel="#L14">14</span> -<span id="LID15" rel="#L15">15</span> -<span id="LID16" rel="#L16">16</span> -<span id="LID17" rel="#L17">17</span> -<span id="LID18" rel="#L18">18</span> -<span id="LID19" rel="#L19">19</span> -<span id="LID20" rel="#L20">20</span> -<span id="LID21" rel="#L21">21</span> -<span id="LID22" rel="#L22">22</span> -<span id="LID23" rel="#L23">23</span> -<span id="LID24" rel="#L24">24</span> -<span id="LID25" rel="#L25">25</span> -<span id="LID26" rel="#L26">26</span> -<span id="LID27" rel="#L27">27</span> -<span id="LID28" rel="#L28">28</span> -<span id="LID29" rel="#L29">29</span> -<span id="LID30" rel="#L30">30</span> -<span id="LID31" rel="#L31">31</span> -<span id="LID32" rel="#L32">32</span> -<span id="LID33" rel="#L33">33</span> -<span id="LID34" rel="#L34">34</span> -<span id="LID35" rel="#L35">35</span> -<span id="LID36" rel="#L36">36</span> -<span id="LID37" rel="#L37">37</span> -<span id="LID38" rel="#L38">38</span> -<span id="LID39" rel="#L39">39</span> -<span id="LID40" rel="#L40">40</span> -<span id="LID41" rel="#L41">41</span> -<span id="LID42" rel="#L42">42</span> -<span id="LID43" rel="#L43">43</span> -<span id="LID44" rel="#L44">44</span> -<span id="LID45" rel="#L45">45</span> -<span id="LID46" rel="#L46">46</span> -<span id="LID47" rel="#L47">47</span> -<span id="LID48" rel="#L48">48</span> -<span id="LID49" rel="#L49">49</span> -<span id="LID50" rel="#L50">50</span> -<span id="LID51" rel="#L51">51</span> -<span id="LID52" rel="#L52">52</span> -<span id="LID53" rel="#L53">53</span> -<span id="LID54" rel="#L54">54</span> -<span id="LID55" rel="#L55">55</span> -<span id="LID56" rel="#L56">56</span> -<span id="LID57" rel="#L57">57</span> -<span id="LID58" rel="#L58">58</span> -<span id="LID59" rel="#L59">59</span> -<span id="LID60" rel="#L60">60</span> -<span id="LID61" rel="#L61">61</span> -<span id="LID62" rel="#L62">62</span> -<span id="LID63" rel="#L63">63</span> -<span id="LID64" rel="#L64">64</span> -<span id="LID65" rel="#L65">65</span> -<span id="LID66" rel="#L66">66</span> -<span id="LID67" rel="#L67">67</span> -<span id="LID68" rel="#L68">68</span> -<span id="LID69" rel="#L69">69</span> -<span id="LID70" rel="#L70">70</span> -<span id="LID71" rel="#L71">71</span> -<span id="LID72" rel="#L72">72</span> -<span id="LID73" rel="#L73">73</span> -<span id="LID74" rel="#L74">74</span> -<span id="LID75" rel="#L75">75</span> -<span id="LID76" rel="#L76">76</span> -<span id="LID77" rel="#L77">77</span> -<span id="LID78" rel="#L78">78</span> -<span id="LID79" rel="#L79">79</span> -<span id="LID80" rel="#L80">80</span> -<span id="LID81" rel="#L81">81</span> -<span id="LID82" rel="#L82">82</span> -<span id="LID83" rel="#L83">83</span> -<span id="LID84" rel="#L84">84</span> -<span id="LID85" rel="#L85">85</span> -<span id="LID86" rel="#L86">86</span> -<span id="LID87" rel="#L87">87</span> -<span id="LID88" rel="#L88">88</span> -<span id="LID89" rel="#L89">89</span> -<span id="LID90" rel="#L90">90</span> -<span id="LID91" rel="#L91">91</span> -<span id="LID92" rel="#L92">92</span> -<span id="LID93" rel="#L93">93</span> -<span id="LID94" rel="#L94">94</span> -<span id="LID95" rel="#L95">95</span> -<span id="LID96" rel="#L96">96</span> -<span id="LID97" rel="#L97">97</span> -<span id="LID98" rel="#L98">98</span> -<span id="LID99" rel="#L99">99</span> -<span id="LID100" rel="#L100">100</span> -<span id="LID101" rel="#L101">101</span> -<span id="LID102" rel="#L102">102</span> -<span id="LID103" rel="#L103">103</span> -<span id="LID104" rel="#L104">104</span> -<span id="LID105" rel="#L105">105</span> -<span id="LID106" rel="#L106">106</span> -<span id="LID107" rel="#L107">107</span> -<span id="LID108" rel="#L108">108</span> -<span id="LID109" rel="#L109">109</span> -<span id="LID110" rel="#L110">110</span> -<span id="LID111" rel="#L111">111</span> -<span id="LID112" rel="#L112">112</span> -<span id="LID113" rel="#L113">113</span> -<span id="LID114" rel="#L114">114</span> -<span id="LID115" rel="#L115">115</span> -<span id="LID116" rel="#L116">116</span> -<span id="LID117" rel="#L117">117</span> -<span id="LID118" rel="#L118">118</span> -<span id="LID119" rel="#L119">119</span> -<span id="LID120" rel="#L120">120</span> -<span id="LID121" rel="#L121">121</span> -<span id="LID122" rel="#L122">122</span> -<span id="LID123" rel="#L123">123</span> -<span id="LID124" rel="#L124">124</span> -<span id="LID125" rel="#L125">125</span> -<span id="LID126" rel="#L126">126</span> -<span id="LID127" rel="#L127">127</span> -<span id="LID128" rel="#L128">128</span> -<span id="LID129" rel="#L129">129</span> -<span id="LID130" rel="#L130">130</span> -<span id="LID131" rel="#L131">131</span> -<span id="LID132" rel="#L132">132</span> -<span id="LID133" rel="#L133">133</span> -<span id="LID134" rel="#L134">134</span> -<span id="LID135" rel="#L135">135</span> -<span id="LID136" rel="#L136">136</span> -<span id="LID137" rel="#L137">137</span> -<span id="LID138" rel="#L138">138</span> -<span id="LID139" rel="#L139">139</span> -<span id="LID140" rel="#L140">140</span> -<span id="LID141" rel="#L141">141</span> -<span id="LID142" rel="#L142">142</span> -<span id="LID143" rel="#L143">143</span> -<span id="LID144" rel="#L144">144</span> -<span id="LID145" rel="#L145">145</span> -<span id="LID146" rel="#L146">146</span> -<span id="LID147" rel="#L147">147</span> -<span id="LID148" rel="#L148">148</span> -<span id="LID149" rel="#L149">149</span> -<span id="LID150" rel="#L150">150</span> -<span id="LID151" rel="#L151">151</span> -<span id="LID152" rel="#L152">152</span> -<span id="LID153" rel="#L153">153</span> -<span id="LID154" rel="#L154">154</span> -<span id="LID155" rel="#L155">155</span> -<span id="LID156" rel="#L156">156</span> -<span id="LID157" rel="#L157">157</span> -<span id="LID158" rel="#L158">158</span> -<span id="LID159" rel="#L159">159</span> -<span id="LID160" rel="#L160">160</span> -<span id="LID161" rel="#L161">161</span> -<span id="LID162" rel="#L162">162</span> -<span id="LID163" rel="#L163">163</span> -<span id="LID164" rel="#L164">164</span> -<span id="LID165" rel="#L165">165</span> -<span id="LID166" rel="#L166">166</span> -<span id="LID167" rel="#L167">167</span> -<span id="LID168" rel="#L168">168</span> -<span id="LID169" rel="#L169">169</span> -<span id="LID170" rel="#L170">170</span> -<span id="LID171" rel="#L171">171</span> -<span id="LID172" rel="#L172">172</span> -<span id="LID173" rel="#L173">173</span> -<span id="LID174" rel="#L174">174</span> -<span id="LID175" rel="#L175">175</span> -<span id="LID176" rel="#L176">176</span> -<span id="LID177" rel="#L177">177</span> -<span id="LID178" rel="#L178">178</span> -<span id="LID179" rel="#L179">179</span> -<span id="LID180" rel="#L180">180</span> -<span id="LID181" rel="#L181">181</span> -<span id="LID182" rel="#L182">182</span> -<span id="LID183" rel="#L183">183</span> -<span id="LID184" rel="#L184">184</span> -<span id="LID185" rel="#L185">185</span> -<span id="LID186" rel="#L186">186</span> -<span id="LID187" rel="#L187">187</span> -<span id="LID188" rel="#L188">188</span> -<span id="LID189" rel="#L189">189</span> -<span id="LID190" rel="#L190">190</span> -<span id="LID191" rel="#L191">191</span> -<span id="LID192" rel="#L192">192</span> -<span id="LID193" rel="#L193">193</span> -<span id="LID194" rel="#L194">194</span> -<span id="LID195" rel="#L195">195</span> -<span id="LID196" rel="#L196">196</span> -<span id="LID197" rel="#L197">197</span> -<span id="LID198" rel="#L198">198</span> -<span id="LID199" rel="#L199">199</span> -<span id="LID200" rel="#L200">200</span> -<span id="LID201" rel="#L201">201</span> -<span id="LID202" rel="#L202">202</span> -<span id="LID203" rel="#L203">203</span> -<span id="LID204" rel="#L204">204</span> -<span id="LID205" rel="#L205">205</span> -<span id="LID206" rel="#L206">206</span> -<span id="LID207" rel="#L207">207</span> -<span id="LID208" rel="#L208">208</span> -<span id="LID209" rel="#L209">209</span> -<span id="LID210" rel="#L210">210</span> -<span id="LID211" rel="#L211">211</span> -<span id="LID212" rel="#L212">212</span> -<span id="LID213" rel="#L213">213</span> -<span id="LID214" rel="#L214">214</span> -<span id="LID215" rel="#L215">215</span> -<span id="LID216" rel="#L216">216</span> -<span id="LID217" rel="#L217">217</span> -<span id="LID218" rel="#L218">218</span> -<span id="LID219" rel="#L219">219</span> -<span id="LID220" rel="#L220">220</span> -<span id="LID221" rel="#L221">221</span> -<span id="LID222" rel="#L222">222</span> -<span id="LID223" rel="#L223">223</span> -<span id="LID224" rel="#L224">224</span> -<span id="LID225" rel="#L225">225</span> -<span id="LID226" rel="#L226">226</span> -<span id="LID227" rel="#L227">227</span> -<span id="LID228" rel="#L228">228</span> -<span id="LID229" rel="#L229">229</span> -<span id="LID230" rel="#L230">230</span> -<span id="LID231" rel="#L231">231</span> -<span id="LID232" rel="#L232">232</span> -<span id="LID233" rel="#L233">233</span> -<span id="LID234" rel="#L234">234</span> -<span id="LID235" rel="#L235">235</span> -<span id="LID236" rel="#L236">236</span> -<span id="LID237" rel="#L237">237</span> -<span id="LID238" rel="#L238">238</span> -<span id="LID239" rel="#L239">239</span> -<span id="LID240" rel="#L240">240</span> -<span id="LID241" rel="#L241">241</span> -<span id="LID242" rel="#L242">242</span> -<span id="LID243" rel="#L243">243</span> -<span id="LID244" rel="#L244">244</span> -<span id="LID245" rel="#L245">245</span> -<span id="LID246" rel="#L246">246</span> -<span id="LID247" rel="#L247">247</span> -<span id="LID248" rel="#L248">248</span> -<span id="LID249" rel="#L249">249</span> -<span id="LID250" rel="#L250">250</span> -<span id="LID251" rel="#L251">251</span> -<span id="LID252" rel="#L252">252</span> -<span id="LID253" rel="#L253">253</span> -<span id="LID254" rel="#L254">254</span> -<span id="LID255" rel="#L255">255</span> -<span id="LID256" rel="#L256">256</span> -<span id="LID257" rel="#L257">257</span> -<span id="LID258" rel="#L258">258</span> -<span id="LID259" rel="#L259">259</span> -<span id="LID260" rel="#L260">260</span> -<span id="LID261" rel="#L261">261</span> -<span id="LID262" rel="#L262">262</span> -<span id="LID263" rel="#L263">263</span> -<span id="LID264" rel="#L264">264</span> -<span id="LID265" rel="#L265">265</span> -<span id="LID266" rel="#L266">266</span> -<span id="LID267" rel="#L267">267</span> -<span id="LID268" rel="#L268">268</span> -<span id="LID269" rel="#L269">269</span> -<span id="LID270" rel="#L270">270</span> -<span id="LID271" rel="#L271">271</span> -<span id="LID272" rel="#L272">272</span> -<span id="LID273" rel="#L273">273</span> -<span id="LID274" rel="#L274">274</span> -<span id="LID275" rel="#L275">275</span> -<span id="LID276" rel="#L276">276</span> -<span id="LID277" rel="#L277">277</span> -<span id="LID278" rel="#L278">278</span> -<span id="LID279" rel="#L279">279</span> -<span id="LID280" rel="#L280">280</span> -<span id="LID281" rel="#L281">281</span> -<span id="LID282" rel="#L282">282</span> -<span id="LID283" rel="#L283">283</span> -<span id="LID284" rel="#L284">284</span> -<span id="LID285" rel="#L285">285</span> -<span id="LID286" rel="#L286">286</span> -<span id="LID287" rel="#L287">287</span> -<span id="LID288" rel="#L288">288</span> -<span id="LID289" rel="#L289">289</span> -<span id="LID290" rel="#L290">290</span> -<span id="LID291" rel="#L291">291</span> -<span id="LID292" rel="#L292">292</span> -<span id="LID293" rel="#L293">293</span> -<span id="LID294" rel="#L294">294</span> -<span id="LID295" rel="#L295">295</span> -<span id="LID296" rel="#L296">296</span> -<span id="LID297" rel="#L297">297</span> -<span id="LID298" rel="#L298">298</span> -<span id="LID299" rel="#L299">299</span> -<span id="LID300" rel="#L300">300</span> -<span id="LID301" rel="#L301">301</span> -<span id="LID302" rel="#L302">302</span> -<span id="LID303" rel="#L303">303</span> -<span id="LID304" rel="#L304">304</span> -<span id="LID305" rel="#L305">305</span> -<span id="LID306" rel="#L306">306</span> -<span id="LID307" rel="#L307">307</span> -<span id="LID308" rel="#L308">308</span> -<span id="LID309" rel="#L309">309</span> -<span id="LID310" rel="#L310">310</span> -<span id="LID311" rel="#L311">311</span> -<span id="LID312" rel="#L312">312</span> -<span id="LID313" rel="#L313">313</span> -<span id="LID314" rel="#L314">314</span> -<span id="LID315" rel="#L315">315</span> -<span id="LID316" rel="#L316">316</span> -<span id="LID317" rel="#L317">317</span> -<span id="LID318" rel="#L318">318</span> -<span id="LID319" rel="#L319">319</span> -<span id="LID320" rel="#L320">320</span> -<span id="LID321" rel="#L321">321</span> -<span id="LID322" rel="#L322">322</span> -<span id="LID323" rel="#L323">323</span> -<span id="LID324" rel="#L324">324</span> -<span id="LID325" rel="#L325">325</span> -<span id="LID326" rel="#L326">326</span> -<span id="LID327" rel="#L327">327</span> -<span id="LID328" rel="#L328">328</span> -<span id="LID329" rel="#L329">329</span> -<span id="LID330" rel="#L330">330</span> -<span id="LID331" rel="#L331">331</span> -<span id="LID332" rel="#L332">332</span> -<span id="LID333" rel="#L333">333</span> -<span id="LID334" rel="#L334">334</span> -<span id="LID335" rel="#L335">335</span> -<span id="LID336" rel="#L336">336</span> -<span id="LID337" rel="#L337">337</span> -<span id="LID338" rel="#L338">338</span> -<span id="LID339" rel="#L339">339</span> -<span id="LID340" rel="#L340">340</span> -<span id="LID341" rel="#L341">341</span> -<span id="LID342" rel="#L342">342</span> -<span id="LID343" rel="#L343">343</span> -<span id="LID344" rel="#L344">344</span> -<span id="LID345" rel="#L345">345</span> -<span id="LID346" rel="#L346">346</span> -<span id="LID347" rel="#L347">347</span> -<span id="LID348" rel="#L348">348</span> -<span id="LID349" rel="#L349">349</span> -<span id="LID350" rel="#L350">350</span> -<span id="LID351" rel="#L351">351</span> -<span id="LID352" rel="#L352">352</span> -<span id="LID353" rel="#L353">353</span> -<span id="LID354" rel="#L354">354</span> -<span id="LID355" rel="#L355">355</span> -<span id="LID356" rel="#L356">356</span> -<span id="LID357" rel="#L357">357</span> -<span id="LID358" rel="#L358">358</span> -<span id="LID359" rel="#L359">359</span> -<span id="LID360" rel="#L360">360</span> -<span id="LID361" rel="#L361">361</span> -<span id="LID362" rel="#L362">362</span> -<span id="LID363" rel="#L363">363</span> -<span id="LID364" rel="#L364">364</span> -<span id="LID365" rel="#L365">365</span> -<span id="LID366" rel="#L366">366</span> -<span id="LID367" rel="#L367">367</span> -<span id="LID368" rel="#L368">368</span> -<span id="LID369" rel="#L369">369</span> -<span id="LID370" rel="#L370">370</span> -<span id="LID371" rel="#L371">371</span> -<span id="LID372" rel="#L372">372</span> -<span id="LID373" rel="#L373">373</span> -<span id="LID374" rel="#L374">374</span> -<span id="LID375" rel="#L375">375</span> -<span id="LID376" rel="#L376">376</span> -<span id="LID377" rel="#L377">377</span> -<span id="LID378" rel="#L378">378</span> -<span id="LID379" rel="#L379">379</span> -<span id="LID380" rel="#L380">380</span> -<span id="LID381" rel="#L381">381</span> -<span id="LID382" rel="#L382">382</span> -<span id="LID383" rel="#L383">383</span> -<span id="LID384" rel="#L384">384</span> -<span id="LID385" rel="#L385">385</span> -<span id="LID386" rel="#L386">386</span> -<span id="LID387" rel="#L387">387</span> -<span id="LID388" rel="#L388">388</span> -<span id="LID389" rel="#L389">389</span> -<span id="LID390" rel="#L390">390</span> -<span id="LID391" rel="#L391">391</span> -<span id="LID392" rel="#L392">392</span> -<span id="LID393" rel="#L393">393</span> -<span id="LID394" rel="#L394">394</span> -<span id="LID395" rel="#L395">395</span> -<span id="LID396" rel="#L396">396</span> -<span id="LID397" rel="#L397">397</span> -<span id="LID398" rel="#L398">398</span> -<span id="LID399" rel="#L399">399</span> -<span id="LID400" rel="#L400">400</span> -<span id="LID401" rel="#L401">401</span> -<span id="LID402" rel="#L402">402</span> -<span id="LID403" rel="#L403">403</span> -<span id="LID404" rel="#L404">404</span> -<span id="LID405" rel="#L405">405</span> -<span id="LID406" rel="#L406">406</span> -<span id="LID407" rel="#L407">407</span> -<span id="LID408" rel="#L408">408</span> -<span id="LID409" rel="#L409">409</span> -<span id="LID410" rel="#L410">410</span> -<span id="LID411" rel="#L411">411</span> -<span id="LID412" rel="#L412">412</span> -<span id="LID413" rel="#L413">413</span> -<span id="LID414" rel="#L414">414</span> -<span id="LID415" rel="#L415">415</span> -<span id="LID416" rel="#L416">416</span> -<span id="LID417" rel="#L417">417</span> -<span id="LID418" rel="#L418">418</span> -<span id="LID419" rel="#L419">419</span> -<span id="LID420" rel="#L420">420</span> -<span id="LID421" rel="#L421">421</span> -<span id="LID422" rel="#L422">422</span> -<span id="LID423" rel="#L423">423</span> -<span id="LID424" rel="#L424">424</span> -<span id="LID425" rel="#L425">425</span> -<span id="LID426" rel="#L426">426</span> -<span id="LID427" rel="#L427">427</span> -<span id="LID428" rel="#L428">428</span> -<span id="LID429" rel="#L429">429</span> -<span id="LID430" rel="#L430">430</span> -<span id="LID431" rel="#L431">431</span> -<span id="LID432" rel="#L432">432</span> -<span id="LID433" rel="#L433">433</span> -<span id="LID434" rel="#L434">434</span> -<span id="LID435" rel="#L435">435</span> -<span id="LID436" rel="#L436">436</span> -<span id="LID437" rel="#L437">437</span> -<span id="LID438" rel="#L438">438</span> -<span id="LID439" rel="#L439">439</span> -<span id="LID440" rel="#L440">440</span> -<span id="LID441" rel="#L441">441</span> -<span id="LID442" rel="#L442">442</span> -<span id="LID443" rel="#L443">443</span> -<span id="LID444" rel="#L444">444</span> -<span id="LID445" rel="#L445">445</span> -<span id="LID446" rel="#L446">446</span> -<span id="LID447" rel="#L447">447</span> -<span id="LID448" rel="#L448">448</span> -<span id="LID449" rel="#L449">449</span> -<span id="LID450" rel="#L450">450</span> -<span id="LID451" rel="#L451">451</span> -<span id="LID452" rel="#L452">452</span> -<span id="LID453" rel="#L453">453</span> -<span id="LID454" rel="#L454">454</span> -<span id="LID455" rel="#L455">455</span> -<span id="LID456" rel="#L456">456</span> -<span id="LID457" rel="#L457">457</span> -<span id="LID458" rel="#L458">458</span> -<span id="LID459" rel="#L459">459</span> -<span id="LID460" rel="#L460">460</span> -<span id="LID461" rel="#L461">461</span> -<span id="LID462" rel="#L462">462</span> -<span id="LID463" rel="#L463">463</span> -<span id="LID464" rel="#L464">464</span> -<span id="LID465" rel="#L465">465</span> -<span id="LID466" rel="#L466">466</span> -<span id="LID467" rel="#L467">467</span> -<span id="LID468" rel="#L468">468</span> -<span id="LID469" rel="#L469">469</span> -<span id="LID470" rel="#L470">470</span> -<span id="LID471" rel="#L471">471</span> -<span id="LID472" rel="#L472">472</span> -<span id="LID473" rel="#L473">473</span> -<span id="LID474" rel="#L474">474</span> -<span id="LID475" rel="#L475">475</span> -<span id="LID476" rel="#L476">476</span> -<span id="LID477" rel="#L477">477</span> -<span id="LID478" rel="#L478">478</span> -<span id="LID479" rel="#L479">479</span> -<span id="LID480" rel="#L480">480</span> -<span id="LID481" rel="#L481">481</span> -<span id="LID482" rel="#L482">482</span> -<span id="LID483" rel="#L483">483</span> -<span id="LID484" rel="#L484">484</span> -<span id="LID485" rel="#L485">485</span> -<span id="LID486" rel="#L486">486</span> -<span id="LID487" rel="#L487">487</span> -<span id="LID488" rel="#L488">488</span> -<span id="LID489" rel="#L489">489</span> -<span id="LID490" rel="#L490">490</span> -<span id="LID491" rel="#L491">491</span> -<span id="LID492" rel="#L492">492</span> -<span id="LID493" rel="#L493">493</span> -<span id="LID494" rel="#L494">494</span> -<span id="LID495" rel="#L495">495</span> -<span id="LID496" rel="#L496">496</span> -<span id="LID497" rel="#L497">497</span> -<span id="LID498" rel="#L498">498</span> -<span id="LID499" rel="#L499">499</span> -<span id="LID500" rel="#L500">500</span> -<span id="LID501" rel="#L501">501</span> -<span id="LID502" rel="#L502">502</span> -<span id="LID503" rel="#L503">503</span> -<span id="LID504" rel="#L504">504</span> -<span id="LID505" rel="#L505">505</span> -<span id="LID506" rel="#L506">506</span> -<span id="LID507" rel="#L507">507</span> -<span id="LID508" rel="#L508">508</span> -<span id="LID509" rel="#L509">509</span> -<span id="LID510" rel="#L510">510</span> -<span id="LID511" rel="#L511">511</span> -<span id="LID512" rel="#L512">512</span> -<span id="LID513" rel="#L513">513</span> -<span id="LID514" rel="#L514">514</span> -<span id="LID515" rel="#L515">515</span> -<span id="LID516" rel="#L516">516</span> -<span id="LID517" rel="#L517">517</span> -<span id="LID518" rel="#L518">518</span> -<span id="LID519" rel="#L519">519</span> -<span id="LID520" rel="#L520">520</span> -<span id="LID521" rel="#L521">521</span> -<span id="LID522" rel="#L522">522</span> -<span id="LID523" rel="#L523">523</span> -<span id="LID524" rel="#L524">524</span> -<span id="LID525" rel="#L525">525</span> -<span id="LID526" rel="#L526">526</span> -<span id="LID527" rel="#L527">527</span> -<span id="LID528" rel="#L528">528</span> -<span id="LID529" rel="#L529">529</span> -<span id="LID530" rel="#L530">530</span> -<span id="LID531" rel="#L531">531</span> -<span id="LID532" rel="#L532">532</span> -<span id="LID533" rel="#L533">533</span> -<span id="LID534" rel="#L534">534</span> -<span id="LID535" rel="#L535">535</span> -<span id="LID536" rel="#L536">536</span> -<span id="LID537" rel="#L537">537</span> -<span id="LID538" rel="#L538">538</span> -<span id="LID539" rel="#L539">539</span> -<span id="LID540" rel="#L540">540</span> -<span id="LID541" rel="#L541">541</span> -<span id="LID542" rel="#L542">542</span> -<span id="LID543" rel="#L543">543</span> -<span id="LID544" rel="#L544">544</span> -<span id="LID545" rel="#L545">545</span> -<span id="LID546" rel="#L546">546</span> -<span id="LID547" rel="#L547">547</span> -<span id="LID548" rel="#L548">548</span> -<span id="LID549" rel="#L549">549</span> -<span id="LID550" rel="#L550">550</span> -<span id="LID551" rel="#L551">551</span> -<span id="LID552" rel="#L552">552</span> -<span id="LID553" rel="#L553">553</span> -<span id="LID554" rel="#L554">554</span> -<span id="LID555" rel="#L555">555</span> -<span id="LID556" rel="#L556">556</span> -<span id="LID557" rel="#L557">557</span> -<span id="LID558" rel="#L558">558</span> -<span id="LID559" rel="#L559">559</span> -<span id="LID560" rel="#L560">560</span> -<span id="LID561" rel="#L561">561</span> -<span id="LID562" rel="#L562">562</span> -<span id="LID563" rel="#L563">563</span> -<span id="LID564" rel="#L564">564</span> -<span id="LID565" rel="#L565">565</span> -<span id="LID566" rel="#L566">566</span> -<span id="LID567" rel="#L567">567</span> -<span id="LID568" rel="#L568">568</span> -<span id="LID569" rel="#L569">569</span> -<span id="LID570" rel="#L570">570</span> -<span id="LID571" rel="#L571">571</span> -<span id="LID572" rel="#L572">572</span> -<span id="LID573" rel="#L573">573</span> -<span id="LID574" rel="#L574">574</span> -<span id="LID575" rel="#L575">575</span> -<span id="LID576" rel="#L576">576</span> -<span id="LID577" rel="#L577">577</span> -<span id="LID578" rel="#L578">578</span> -<span id="LID579" rel="#L579">579</span> -<span id="LID580" rel="#L580">580</span> -<span id="LID581" rel="#L581">581</span> -<span id="LID582" rel="#L582">582</span> -<span id="LID583" rel="#L583">583</span> -<span id="LID584" rel="#L584">584</span> -<span id="LID585" rel="#L585">585</span> -<span id="LID586" rel="#L586">586</span> -<span id="LID587" rel="#L587">587</span> -<span id="LID588" rel="#L588">588</span> -<span id="LID589" rel="#L589">589</span> -<span id="LID590" rel="#L590">590</span> -<span id="LID591" rel="#L591">591</span> -<span id="LID592" rel="#L592">592</span> -<span id="LID593" rel="#L593">593</span> -<span id="LID594" rel="#L594">594</span> -<span id="LID595" rel="#L595">595</span> -<span id="LID596" rel="#L596">596</span> -<span id="LID597" rel="#L597">597</span> -<span id="LID598" rel="#L598">598</span> -<span id="LID599" rel="#L599">599</span> -<span id="LID600" rel="#L600">600</span> -<span id="LID601" rel="#L601">601</span> -<span id="LID602" rel="#L602">602</span> -<span id="LID603" rel="#L603">603</span> -<span id="LID604" rel="#L604">604</span> -<span id="LID605" rel="#L605">605</span> -<span id="LID606" rel="#L606">606</span> -<span id="LID607" rel="#L607">607</span> -<span id="LID608" rel="#L608">608</span> -<span id="LID609" rel="#L609">609</span> -<span id="LID610" rel="#L610">610</span> -<span id="LID611" rel="#L611">611</span> -<span id="LID612" rel="#L612">612</span> -<span id="LID613" rel="#L613">613</span> -<span id="LID614" rel="#L614">614</span> -<span id="LID615" rel="#L615">615</span> -<span id="LID616" rel="#L616">616</span> -<span id="LID617" rel="#L617">617</span> -<span id="LID618" rel="#L618">618</span> -<span id="LID619" rel="#L619">619</span> -<span id="LID620" rel="#L620">620</span> -<span id="LID621" rel="#L621">621</span> -<span id="LID622" rel="#L622">622</span> -<span id="LID623" rel="#L623">623</span> -<span id="LID624" rel="#L624">624</span> -<span id="LID625" rel="#L625">625</span> -<span id="LID626" rel="#L626">626</span> -<span id="LID627" rel="#L627">627</span> -<span id="LID628" rel="#L628">628</span> -<span id="LID629" rel="#L629">629</span> -<span id="LID630" rel="#L630">630</span> -<span id="LID631" rel="#L631">631</span> -<span id="LID632" rel="#L632">632</span> -<span id="LID633" rel="#L633">633</span> -<span id="LID634" rel="#L634">634</span> -<span id="LID635" rel="#L635">635</span> -<span id="LID636" rel="#L636">636</span> -<span id="LID637" rel="#L637">637</span> -<span id="LID638" rel="#L638">638</span> -<span id="LID639" rel="#L639">639</span> -<span id="LID640" rel="#L640">640</span> -<span id="LID641" rel="#L641">641</span> -<span id="LID642" rel="#L642">642</span> -<span id="LID643" rel="#L643">643</span> -<span id="LID644" rel="#L644">644</span> -<span id="LID645" rel="#L645">645</span> -<span id="LID646" rel="#L646">646</span> -<span id="LID647" rel="#L647">647</span> -<span id="LID648" rel="#L648">648</span> -<span id="LID649" rel="#L649">649</span> -<span id="LID650" rel="#L650">650</span> -<span id="LID651" rel="#L651">651</span> -<span id="LID652" rel="#L652">652</span> -<span id="LID653" rel="#L653">653</span> -<span id="LID654" rel="#L654">654</span> -<span id="LID655" rel="#L655">655</span> -<span id="LID656" rel="#L656">656</span> -<span id="LID657" rel="#L657">657</span> -<span id="LID658" rel="#L658">658</span> -<span id="LID659" rel="#L659">659</span> -<span id="LID660" rel="#L660">660</span> -<span id="LID661" rel="#L661">661</span> -<span id="LID662" rel="#L662">662</span> -<span id="LID663" rel="#L663">663</span> -<span id="LID664" rel="#L664">664</span> -<span id="LID665" rel="#L665">665</span> -<span id="LID666" rel="#L666">666</span> -<span id="LID667" rel="#L667">667</span> -<span id="LID668" rel="#L668">668</span> -<span id="LID669" rel="#L669">669</span> -<span id="LID670" rel="#L670">670</span> -<span id="LID671" rel="#L671">671</span> -<span id="LID672" rel="#L672">672</span> -<span id="LID673" rel="#L673">673</span> -<span id="LID674" rel="#L674">674</span> -<span id="LID675" rel="#L675">675</span> -<span id="LID676" rel="#L676">676</span> -<span id="LID677" rel="#L677">677</span> -<span id="LID678" rel="#L678">678</span> -<span id="LID679" rel="#L679">679</span> -<span id="LID680" rel="#L680">680</span> -<span id="LID681" rel="#L681">681</span> -<span id="LID682" rel="#L682">682</span> -<span id="LID683" rel="#L683">683</span> -<span id="LID684" rel="#L684">684</span> -<span id="LID685" rel="#L685">685</span> -<span id="LID686" rel="#L686">686</span> -<span id="LID687" rel="#L687">687</span> -<span id="LID688" rel="#L688">688</span> -<span id="LID689" rel="#L689">689</span> -<span id="LID690" rel="#L690">690</span> -<span id="LID691" rel="#L691">691</span> -<span id="LID692" rel="#L692">692</span> -<span id="LID693" rel="#L693">693</span> -<span id="LID694" rel="#L694">694</span> -<span id="LID695" rel="#L695">695</span> -<span id="LID696" rel="#L696">696</span> -<span id="LID697" rel="#L697">697</span> -<span id="LID698" rel="#L698">698</span> -<span id="LID699" rel="#L699">699</span> -<span id="LID700" rel="#L700">700</span> -<span id="LID701" rel="#L701">701</span> -<span id="LID702" rel="#L702">702</span> -<span id="LID703" rel="#L703">703</span> -<span id="LID704" rel="#L704">704</span> -<span id="LID705" rel="#L705">705</span> -<span id="LID706" rel="#L706">706</span> -<span id="LID707" rel="#L707">707</span> -<span id="LID708" rel="#L708">708</span> -<span id="LID709" rel="#L709">709</span> -<span id="LID710" rel="#L710">710</span> -<span id="LID711" rel="#L711">711</span> -<span id="LID712" rel="#L712">712</span> -<span id="LID713" rel="#L713">713</span> -<span id="LID714" rel="#L714">714</span> -<span id="LID715" rel="#L715">715</span> -<span id="LID716" rel="#L716">716</span> -<span id="LID717" rel="#L717">717</span> -<span id="LID718" rel="#L718">718</span> -<span id="LID719" rel="#L719">719</span> -<span id="LID720" rel="#L720">720</span> -<span id="LID721" rel="#L721">721</span> -<span id="LID722" rel="#L722">722</span> -<span id="LID723" rel="#L723">723</span> -<span id="LID724" rel="#L724">724</span> -<span id="LID725" rel="#L725">725</span> -<span id="LID726" rel="#L726">726</span> -<span id="LID727" rel="#L727">727</span> -<span id="LID728" rel="#L728">728</span> -<span id="LID729" rel="#L729">729</span> -<span id="LID730" rel="#L730">730</span> -<span id="LID731" rel="#L731">731</span> -<span id="LID732" rel="#L732">732</span> -<span id="LID733" rel="#L733">733</span> -<span id="LID734" rel="#L734">734</span> -<span id="LID735" rel="#L735">735</span> -<span id="LID736" rel="#L736">736</span> -<span id="LID737" rel="#L737">737</span> -<span id="LID738" rel="#L738">738</span> -<span id="LID739" rel="#L739">739</span> -<span id="LID740" rel="#L740">740</span> -<span id="LID741" rel="#L741">741</span> -<span id="LID742" rel="#L742">742</span> -<span id="LID743" rel="#L743">743</span> -<span id="LID744" rel="#L744">744</span> -<span id="LID745" rel="#L745">745</span> -<span id="LID746" rel="#L746">746</span> -<span id="LID747" rel="#L747">747</span> -<span id="LID748" rel="#L748">748</span> -<span id="LID749" rel="#L749">749</span> -<span id="LID750" rel="#L750">750</span> -<span id="LID751" rel="#L751">751</span> -<span id="LID752" rel="#L752">752</span> -<span id="LID753" rel="#L753">753</span> -<span id="LID754" rel="#L754">754</span> -<span id="LID755" rel="#L755">755</span> -<span id="LID756" rel="#L756">756</span> -<span id="LID757" rel="#L757">757</span> -<span id="LID758" rel="#L758">758</span> -<span id="LID759" rel="#L759">759</span> -<span id="LID760" rel="#L760">760</span> -<span id="LID761" rel="#L761">761</span> -<span id="LID762" rel="#L762">762</span> -<span id="LID763" rel="#L763">763</span> -<span id="LID764" rel="#L764">764</span> -<span id="LID765" rel="#L765">765</span> -<span id="LID766" rel="#L766">766</span> -<span id="LID767" rel="#L767">767</span> -<span id="LID768" rel="#L768">768</span> -<span id="LID769" rel="#L769">769</span> -<span id="LID770" rel="#L770">770</span> -<span id="LID771" rel="#L771">771</span> -<span id="LID772" rel="#L772">772</span> -<span id="LID773" rel="#L773">773</span> -<span id="LID774" rel="#L774">774</span> -<span id="LID775" rel="#L775">775</span> -<span id="LID776" rel="#L776">776</span> -<span id="LID777" rel="#L777">777</span> -<span id="LID778" rel="#L778">778</span> -<span id="LID779" rel="#L779">779</span> -<span id="LID780" rel="#L780">780</span> -<span id="LID781" rel="#L781">781</span> -<span id="LID782" rel="#L782">782</span> -<span id="LID783" rel="#L783">783</span> -<span id="LID784" rel="#L784">784</span> -<span id="LID785" rel="#L785">785</span> -<span id="LID786" rel="#L786">786</span> -<span id="LID787" rel="#L787">787</span> -<span id="LID788" rel="#L788">788</span> -<span id="LID789" rel="#L789">789</span> -<span id="LID790" rel="#L790">790</span> -<span id="LID791" rel="#L791">791</span> -<span id="LID792" rel="#L792">792</span> -<span id="LID793" rel="#L793">793</span> -<span id="LID794" rel="#L794">794</span> -<span id="LID795" rel="#L795">795</span> -<span id="LID796" rel="#L796">796</span> -<span id="LID797" rel="#L797">797</span> -<span id="LID798" rel="#L798">798</span> -<span id="LID799" rel="#L799">799</span> -<span id="LID800" rel="#L800">800</span> -<span id="LID801" rel="#L801">801</span> -<span id="LID802" rel="#L802">802</span> -<span id="LID803" rel="#L803">803</span> -<span id="LID804" rel="#L804">804</span> -<span id="LID805" rel="#L805">805</span> -<span id="LID806" rel="#L806">806</span> -<span id="LID807" rel="#L807">807</span> -<span id="LID808" rel="#L808">808</span> -<span id="LID809" rel="#L809">809</span> -<span id="LID810" rel="#L810">810</span> -<span id="LID811" rel="#L811">811</span> -<span id="LID812" rel="#L812">812</span> -<span id="LID813" rel="#L813">813</span> -<span id="LID814" rel="#L814">814</span> -<span id="LID815" rel="#L815">815</span> -<span id="LID816" rel="#L816">816</span> -<span id="LID817" rel="#L817">817</span> -<span id="LID818" rel="#L818">818</span> -<span id="LID819" rel="#L819">819</span> -<span id="LID820" rel="#L820">820</span> -<span id="LID821" rel="#L821">821</span> -<span id="LID822" rel="#L822">822</span> -<span id="LID823" rel="#L823">823</span> -<span id="LID824" rel="#L824">824</span> -<span id="LID825" rel="#L825">825</span> -<span id="LID826" rel="#L826">826</span> -<span id="LID827" rel="#L827">827</span> -<span id="LID828" rel="#L828">828</span> -<span id="LID829" rel="#L829">829</span> -<span id="LID830" rel="#L830">830</span> -<span id="LID831" rel="#L831">831</span> -<span id="LID832" rel="#L832">832</span> -<span id="LID833" rel="#L833">833</span> -<span id="LID834" rel="#L834">834</span> -<span id="LID835" rel="#L835">835</span> -<span id="LID836" rel="#L836">836</span> -<span id="LID837" rel="#L837">837</span> -<span id="LID838" rel="#L838">838</span> -<span id="LID839" rel="#L839">839</span> -<span id="LID840" rel="#L840">840</span> -<span id="LID841" rel="#L841">841</span> -<span id="LID842" rel="#L842">842</span> -<span id="LID843" rel="#L843">843</span> -<span id="LID844" rel="#L844">844</span> -<span id="LID845" rel="#L845">845</span> -<span id="LID846" rel="#L846">846</span> -<span id="LID847" rel="#L847">847</span> -<span id="LID848" rel="#L848">848</span> -<span id="LID849" rel="#L849">849</span> -<span id="LID850" rel="#L850">850</span> -<span id="LID851" rel="#L851">851</span> -<span id="LID852" rel="#L852">852</span> -<span id="LID853" rel="#L853">853</span> -<span id="LID854" rel="#L854">854</span> -<span id="LID855" rel="#L855">855</span> -<span id="LID856" rel="#L856">856</span> -<span id="LID857" rel="#L857">857</span> -<span id="LID858" rel="#L858">858</span> -<span id="LID859" rel="#L859">859</span> -<span id="LID860" rel="#L860">860</span> -<span id="LID861" rel="#L861">861</span> -<span id="LID862" rel="#L862">862</span> -<span id="LID863" rel="#L863">863</span> -<span id="LID864" rel="#L864">864</span> -<span id="LID865" rel="#L865">865</span> -<span id="LID866" rel="#L866">866</span> -<span id="LID867" rel="#L867">867</span> -<span id="LID868" rel="#L868">868</span> -<span id="LID869" rel="#L869">869</span> -<span id="LID870" rel="#L870">870</span> -<span id="LID871" rel="#L871">871</span> -<span id="LID872" rel="#L872">872</span> -<span id="LID873" rel="#L873">873</span> -<span id="LID874" rel="#L874">874</span> -<span id="LID875" rel="#L875">875</span> -<span id="LID876" rel="#L876">876</span> -<span id="LID877" rel="#L877">877</span> -<span id="LID878" rel="#L878">878</span> -<span id="LID879" rel="#L879">879</span> -<span id="LID880" rel="#L880">880</span> -<span id="LID881" rel="#L881">881</span> -<span id="LID882" rel="#L882">882</span> -<span id="LID883" rel="#L883">883</span> -<span id="LID884" rel="#L884">884</span> -<span id="LID885" rel="#L885">885</span> -<span id="LID886" rel="#L886">886</span> -<span id="LID887" rel="#L887">887</span> -<span id="LID888" rel="#L888">888</span> -<span id="LID889" rel="#L889">889</span> -<span id="LID890" rel="#L890">890</span> -<span id="LID891" rel="#L891">891</span> -<span id="LID892" rel="#L892">892</span> -<span id="LID893" rel="#L893">893</span> -<span id="LID894" rel="#L894">894</span> -<span id="LID895" rel="#L895">895</span> -<span id="LID896" rel="#L896">896</span> -<span id="LID897" rel="#L897">897</span> -<span id="LID898" rel="#L898">898</span> -<span id="LID899" rel="#L899">899</span> -<span id="LID900" rel="#L900">900</span> -<span id="LID901" rel="#L901">901</span> -<span id="LID902" rel="#L902">902</span> -<span id="LID903" rel="#L903">903</span> -<span id="LID904" rel="#L904">904</span> -<span id="LID905" rel="#L905">905</span> -<span id="LID906" rel="#L906">906</span> -<span id="LID907" rel="#L907">907</span> -<span id="LID908" rel="#L908">908</span> -<span id="LID909" rel="#L909">909</span> -<span id="LID910" rel="#L910">910</span> -<span id="LID911" rel="#L911">911</span> -<span id="LID912" rel="#L912">912</span> -<span id="LID913" rel="#L913">913</span> -<span id="LID914" rel="#L914">914</span> -<span id="LID915" rel="#L915">915</span> -<span id="LID916" rel="#L916">916</span> -<span id="LID917" rel="#L917">917</span> -<span id="LID918" rel="#L918">918</span> -<span id="LID919" rel="#L919">919</span> -<span id="LID920" rel="#L920">920</span> -<span id="LID921" rel="#L921">921</span> -<span id="LID922" rel="#L922">922</span> -<span id="LID923" rel="#L923">923</span> -<span id="LID924" rel="#L924">924</span> -<span id="LID925" rel="#L925">925</span> -<span id="LID926" rel="#L926">926</span> -<span id="LID927" rel="#L927">927</span> -<span id="LID928" rel="#L928">928</span> -<span id="LID929" rel="#L929">929</span> -<span id="LID930" rel="#L930">930</span> -<span id="LID931" rel="#L931">931</span> -<span id="LID932" rel="#L932">932</span> -<span id="LID933" rel="#L933">933</span> -<span id="LID934" rel="#L934">934</span> -<span id="LID935" rel="#L935">935</span> -<span id="LID936" rel="#L936">936</span> -<span id="LID937" rel="#L937">937</span> -<span id="LID938" rel="#L938">938</span> -<span id="LID939" rel="#L939">939</span> -<span id="LID940" rel="#L940">940</span> -<span id="LID941" rel="#L941">941</span> -<span id="LID942" rel="#L942">942</span> -<span id="LID943" rel="#L943">943</span> -<span id="LID944" rel="#L944">944</span> -<span id="LID945" rel="#L945">945</span> -<span id="LID946" rel="#L946">946</span> -<span id="LID947" rel="#L947">947</span> -<span id="LID948" rel="#L948">948</span> -<span id="LID949" rel="#L949">949</span> -<span id="LID950" rel="#L950">950</span> -<span id="LID951" rel="#L951">951</span> -<span id="LID952" rel="#L952">952</span> -<span id="LID953" rel="#L953">953</span> -<span id="LID954" rel="#L954">954</span> -<span id="LID955" rel="#L955">955</span> -<span id="LID956" rel="#L956">956</span> -<span id="LID957" rel="#L957">957</span> -<span id="LID958" rel="#L958">958</span> -<span id="LID959" rel="#L959">959</span> -<span id="LID960" rel="#L960">960</span> -<span id="LID961" rel="#L961">961</span> -<span id="LID962" rel="#L962">962</span> -<span id="LID963" rel="#L963">963</span> -<span id="LID964" rel="#L964">964</span> -<span id="LID965" rel="#L965">965</span> -<span id="LID966" rel="#L966">966</span> -<span id="LID967" rel="#L967">967</span> -<span id="LID968" rel="#L968">968</span> -<span id="LID969" rel="#L969">969</span> -<span id="LID970" rel="#L970">970</span> -<span id="LID971" rel="#L971">971</span> -<span id="LID972" rel="#L972">972</span> -<span id="LID973" rel="#L973">973</span> -<span id="LID974" rel="#L974">974</span> -<span id="LID975" rel="#L975">975</span> -<span id="LID976" rel="#L976">976</span> -<span id="LID977" rel="#L977">977</span> -<span id="LID978" rel="#L978">978</span> -<span id="LID979" rel="#L979">979</span> -<span id="LID980" rel="#L980">980</span> -<span id="LID981" rel="#L981">981</span> -<span id="LID982" rel="#L982">982</span> -<span id="LID983" rel="#L983">983</span> -<span id="LID984" rel="#L984">984</span> -<span id="LID985" rel="#L985">985</span> -<span id="LID986" rel="#L986">986</span> -<span id="LID987" rel="#L987">987</span> -<span id="LID988" rel="#L988">988</span> -<span id="LID989" rel="#L989">989</span> -<span id="LID990" rel="#L990">990</span> -<span id="LID991" rel="#L991">991</span> -<span id="LID992" rel="#L992">992</span> -<span id="LID993" rel="#L993">993</span> -<span id="LID994" rel="#L994">994</span> -<span id="LID995" rel="#L995">995</span> -<span id="LID996" rel="#L996">996</span> -<span id="LID997" rel="#L997">997</span> -<span id="LID998" rel="#L998">998</span> -<span id="LID999" rel="#L999">999</span> -<span id="LID1000" rel="#L1000">1000</span> -<span id="LID1001" rel="#L1001">1001</span> -<span id="LID1002" rel="#L1002">1002</span> -<span id="LID1003" rel="#L1003">1003</span> -<span id="LID1004" rel="#L1004">1004</span> -<span id="LID1005" rel="#L1005">1005</span> -<span id="LID1006" rel="#L1006">1006</span> -<span id="LID1007" rel="#L1007">1007</span> -<span id="LID1008" rel="#L1008">1008</span> -<span id="LID1009" rel="#L1009">1009</span> -<span id="LID1010" rel="#L1010">1010</span> -<span id="LID1011" rel="#L1011">1011</span> -<span id="LID1012" rel="#L1012">1012</span> -<span id="LID1013" rel="#L1013">1013</span> -<span id="LID1014" rel="#L1014">1014</span> -<span id="LID1015" rel="#L1015">1015</span> -<span id="LID1016" rel="#L1016">1016</span> -<span id="LID1017" rel="#L1017">1017</span> -<span id="LID1018" rel="#L1018">1018</span> -<span id="LID1019" rel="#L1019">1019</span> -<span id="LID1020" rel="#L1020">1020</span> -<span id="LID1021" rel="#L1021">1021</span> -<span id="LID1022" rel="#L1022">1022</span> -<span id="LID1023" rel="#L1023">1023</span> -<span id="LID1024" rel="#L1024">1024</span> -<span id="LID1025" rel="#L1025">1025</span> -<span id="LID1026" rel="#L1026">1026</span> -<span id="LID1027" rel="#L1027">1027</span> -<span id="LID1028" rel="#L1028">1028</span> -<span id="LID1029" rel="#L1029">1029</span> -<span id="LID1030" rel="#L1030">1030</span> -<span id="LID1031" rel="#L1031">1031</span> -<span id="LID1032" rel="#L1032">1032</span> -<span id="LID1033" rel="#L1033">1033</span> -<span id="LID1034" rel="#L1034">1034</span> -<span id="LID1035" rel="#L1035">1035</span> -<span id="LID1036" rel="#L1036">1036</span> -<span id="LID1037" rel="#L1037">1037</span> -<span id="LID1038" rel="#L1038">1038</span> -<span id="LID1039" rel="#L1039">1039</span> -<span id="LID1040" rel="#L1040">1040</span> -<span id="LID1041" rel="#L1041">1041</span> -<span id="LID1042" rel="#L1042">1042</span> -<span id="LID1043" rel="#L1043">1043</span> -<span id="LID1044" rel="#L1044">1044</span> -<span id="LID1045" rel="#L1045">1045</span> -<span id="LID1046" rel="#L1046">1046</span> -<span id="LID1047" rel="#L1047">1047</span> -<span id="LID1048" rel="#L1048">1048</span> -<span id="LID1049" rel="#L1049">1049</span> -<span id="LID1050" rel="#L1050">1050</span> -<span id="LID1051" rel="#L1051">1051</span> -<span id="LID1052" rel="#L1052">1052</span> -<span id="LID1053" rel="#L1053">1053</span> -<span id="LID1054" rel="#L1054">1054</span> -<span id="LID1055" rel="#L1055">1055</span> -<span id="LID1056" rel="#L1056">1056</span> -<span id="LID1057" rel="#L1057">1057</span> -<span id="LID1058" rel="#L1058">1058</span> -<span id="LID1059" rel="#L1059">1059</span> -<span id="LID1060" rel="#L1060">1060</span> -<span id="LID1061" rel="#L1061">1061</span> -<span id="LID1062" rel="#L1062">1062</span> -<span id="LID1063" rel="#L1063">1063</span> -<span id="LID1064" rel="#L1064">1064</span> -<span id="LID1065" rel="#L1065">1065</span> -<span id="LID1066" rel="#L1066">1066</span> -<span id="LID1067" rel="#L1067">1067</span> -<span id="LID1068" rel="#L1068">1068</span> -<span id="LID1069" rel="#L1069">1069</span> -<span id="LID1070" rel="#L1070">1070</span> -<span id="LID1071" rel="#L1071">1071</span> -<span id="LID1072" rel="#L1072">1072</span> -<span id="LID1073" rel="#L1073">1073</span> -<span id="LID1074" rel="#L1074">1074</span> -<span id="LID1075" rel="#L1075">1075</span> -<span id="LID1076" rel="#L1076">1076</span> -<span id="LID1077" rel="#L1077">1077</span> -<span id="LID1078" rel="#L1078">1078</span> -<span id="LID1079" rel="#L1079">1079</span> -<span id="LID1080" rel="#L1080">1080</span> -<span id="LID1081" rel="#L1081">1081</span> -<span id="LID1082" rel="#L1082">1082</span> -<span id="LID1083" rel="#L1083">1083</span> -<span id="LID1084" rel="#L1084">1084</span> -<span id="LID1085" rel="#L1085">1085</span> -<span id="LID1086" rel="#L1086">1086</span> -<span id="LID1087" rel="#L1087">1087</span> -<span id="LID1088" rel="#L1088">1088</span> -<span id="LID1089" rel="#L1089">1089</span> -<span id="LID1090" rel="#L1090">1090</span> -<span id="LID1091" rel="#L1091">1091</span> -<span id="LID1092" rel="#L1092">1092</span> -<span id="LID1093" rel="#L1093">1093</span> -<span id="LID1094" rel="#L1094">1094</span> -<span id="LID1095" rel="#L1095">1095</span> -<span id="LID1096" rel="#L1096">1096</span> -<span id="LID1097" rel="#L1097">1097</span> -<span id="LID1098" rel="#L1098">1098</span> -<span id="LID1099" rel="#L1099">1099</span> -<span id="LID1100" rel="#L1100">1100</span> -<span id="LID1101" rel="#L1101">1101</span> -<span id="LID1102" rel="#L1102">1102</span> -<span id="LID1103" rel="#L1103">1103</span> -<span id="LID1104" rel="#L1104">1104</span> -<span id="LID1105" rel="#L1105">1105</span> -<span id="LID1106" rel="#L1106">1106</span> -<span id="LID1107" rel="#L1107">1107</span> -<span id="LID1108" rel="#L1108">1108</span> -<span id="LID1109" rel="#L1109">1109</span> -<span id="LID1110" rel="#L1110">1110</span> -<span id="LID1111" rel="#L1111">1111</span> -<span id="LID1112" rel="#L1112">1112</span> -<span id="LID1113" rel="#L1113">1113</span> -<span id="LID1114" rel="#L1114">1114</span> -<span id="LID1115" rel="#L1115">1115</span> -<span id="LID1116" rel="#L1116">1116</span> -<span id="LID1117" rel="#L1117">1117</span> -<span id="LID1118" rel="#L1118">1118</span> -<span id="LID1119" rel="#L1119">1119</span> -<span id="LID1120" rel="#L1120">1120</span> -<span id="LID1121" rel="#L1121">1121</span> -<span id="LID1122" rel="#L1122">1122</span> -<span id="LID1123" rel="#L1123">1123</span> -<span id="LID1124" rel="#L1124">1124</span> -<span id="LID1125" rel="#L1125">1125</span> -<span id="LID1126" rel="#L1126">1126</span> -<span id="LID1127" rel="#L1127">1127</span> -<span id="LID1128" rel="#L1128">1128</span> -<span id="LID1129" rel="#L1129">1129</span> -<span id="LID1130" rel="#L1130">1130</span> -<span id="LID1131" rel="#L1131">1131</span> -<span id="LID1132" rel="#L1132">1132</span> -<span id="LID1133" rel="#L1133">1133</span> -<span id="LID1134" rel="#L1134">1134</span> -<span id="LID1135" rel="#L1135">1135</span> -<span id="LID1136" rel="#L1136">1136</span> -<span id="LID1137" rel="#L1137">1137</span> -<span id="LID1138" rel="#L1138">1138</span> -<span id="LID1139" rel="#L1139">1139</span> -<span id="LID1140" rel="#L1140">1140</span> -<span id="LID1141" rel="#L1141">1141</span> -<span id="LID1142" rel="#L1142">1142</span> -<span id="LID1143" rel="#L1143">1143</span> -<span id="LID1144" rel="#L1144">1144</span> -<span id="LID1145" rel="#L1145">1145</span> -<span id="LID1146" rel="#L1146">1146</span> -<span id="LID1147" rel="#L1147">1147</span> -<span id="LID1148" rel="#L1148">1148</span> -<span id="LID1149" rel="#L1149">1149</span> -<span id="LID1150" rel="#L1150">1150</span> -<span id="LID1151" rel="#L1151">1151</span> -<span id="LID1152" rel="#L1152">1152</span> -<span id="LID1153" rel="#L1153">1153</span> -<span id="LID1154" rel="#L1154">1154</span> -<span id="LID1155" rel="#L1155">1155</span> -<span id="LID1156" rel="#L1156">1156</span> -<span id="LID1157" rel="#L1157">1157</span> -<span id="LID1158" rel="#L1158">1158</span> -<span id="LID1159" rel="#L1159">1159</span> -<span id="LID1160" rel="#L1160">1160</span> -<span id="LID1161" rel="#L1161">1161</span> -<span id="LID1162" rel="#L1162">1162</span> -<span id="LID1163" rel="#L1163">1163</span> -<span id="LID1164" rel="#L1164">1164</span> -<span id="LID1165" rel="#L1165">1165</span> -<span id="LID1166" rel="#L1166">1166</span> -<span id="LID1167" rel="#L1167">1167</span> -<span id="LID1168" rel="#L1168">1168</span> -<span id="LID1169" rel="#L1169">1169</span> -<span id="LID1170" rel="#L1170">1170</span> -<span id="LID1171" rel="#L1171">1171</span> -<span id="LID1172" rel="#L1172">1172</span> -<span id="LID1173" rel="#L1173">1173</span> -<span id="LID1174" rel="#L1174">1174</span> -<span id="LID1175" rel="#L1175">1175</span> -<span id="LID1176" rel="#L1176">1176</span> -<span id="LID1177" rel="#L1177">1177</span> -<span id="LID1178" rel="#L1178">1178</span> -<span id="LID1179" rel="#L1179">1179</span> -<span id="LID1180" rel="#L1180">1180</span> -<span id="LID1181" rel="#L1181">1181</span> -<span id="LID1182" rel="#L1182">1182</span> -<span id="LID1183" rel="#L1183">1183</span> -<span id="LID1184" rel="#L1184">1184</span> -<span id="LID1185" rel="#L1185">1185</span> -<span id="LID1186" rel="#L1186">1186</span> -<span id="LID1187" rel="#L1187">1187</span> -<span id="LID1188" rel="#L1188">1188</span> -<span id="LID1189" rel="#L1189">1189</span> -<span id="LID1190" rel="#L1190">1190</span> -<span id="LID1191" rel="#L1191">1191</span> -<span id="LID1192" rel="#L1192">1192</span> -<span id="LID1193" rel="#L1193">1193</span> -<span id="LID1194" rel="#L1194">1194</span> -<span id="LID1195" rel="#L1195">1195</span> -<span id="LID1196" rel="#L1196">1196</span> -<span id="LID1197" rel="#L1197">1197</span> -<span id="LID1198" rel="#L1198">1198</span> -<span id="LID1199" rel="#L1199">1199</span> -<span id="LID1200" rel="#L1200">1200</span> -<span id="LID1201" rel="#L1201">1201</span> -<span id="LID1202" rel="#L1202">1202</span> -<span id="LID1203" rel="#L1203">1203</span> -<span id="LID1204" rel="#L1204">1204</span> -<span id="LID1205" rel="#L1205">1205</span> -<span id="LID1206" rel="#L1206">1206</span> -<span id="LID1207" rel="#L1207">1207</span> -<span id="LID1208" rel="#L1208">1208</span> -<span id="LID1209" rel="#L1209">1209</span> -<span id="LID1210" rel="#L1210">1210</span> -<span id="LID1211" rel="#L1211">1211</span> -<span id="LID1212" rel="#L1212">1212</span> -<span id="LID1213" rel="#L1213">1213</span> -<span id="LID1214" rel="#L1214">1214</span> -<span id="LID1215" rel="#L1215">1215</span> -<span id="LID1216" rel="#L1216">1216</span> -<span id="LID1217" rel="#L1217">1217</span> -<span id="LID1218" rel="#L1218">1218</span> -<span id="LID1219" rel="#L1219">1219</span> -<span id="LID1220" rel="#L1220">1220</span> -<span id="LID1221" rel="#L1221">1221</span> -<span id="LID1222" rel="#L1222">1222</span> -<span id="LID1223" rel="#L1223">1223</span> -<span id="LID1224" rel="#L1224">1224</span> -<span id="LID1225" rel="#L1225">1225</span> -<span id="LID1226" rel="#L1226">1226</span> -<span id="LID1227" rel="#L1227">1227</span> -<span id="LID1228" rel="#L1228">1228</span> -<span id="LID1229" rel="#L1229">1229</span> -<span id="LID1230" rel="#L1230">1230</span> -<span id="LID1231" rel="#L1231">1231</span> -<span id="LID1232" rel="#L1232">1232</span> -<span id="LID1233" rel="#L1233">1233</span> -<span id="LID1234" rel="#L1234">1234</span> -<span id="LID1235" rel="#L1235">1235</span> -<span id="LID1236" rel="#L1236">1236</span> -<span id="LID1237" rel="#L1237">1237</span> -<span id="LID1238" rel="#L1238">1238</span> -<span id="LID1239" rel="#L1239">1239</span> -<span id="LID1240" rel="#L1240">1240</span> -<span id="LID1241" rel="#L1241">1241</span> -<span id="LID1242" rel="#L1242">1242</span> -<span id="LID1243" rel="#L1243">1243</span> -<span id="LID1244" rel="#L1244">1244</span> -<span id="LID1245" rel="#L1245">1245</span> -<span id="LID1246" rel="#L1246">1246</span> -<span id="LID1247" rel="#L1247">1247</span> -<span id="LID1248" rel="#L1248">1248</span> -<span id="LID1249" rel="#L1249">1249</span> -<span id="LID1250" rel="#L1250">1250</span> -<span id="LID1251" rel="#L1251">1251</span> -<span id="LID1252" rel="#L1252">1252</span> -<span id="LID1253" rel="#L1253">1253</span> -<span id="LID1254" rel="#L1254">1254</span> -<span id="LID1255" rel="#L1255">1255</span> -<span id="LID1256" rel="#L1256">1256</span> -<span id="LID1257" rel="#L1257">1257</span> -<span id="LID1258" rel="#L1258">1258</span> -<span id="LID1259" rel="#L1259">1259</span> -<span id="LID1260" rel="#L1260">1260</span> -<span id="LID1261" rel="#L1261">1261</span> -<span id="LID1262" rel="#L1262">1262</span> -<span id="LID1263" rel="#L1263">1263</span> -<span id="LID1264" rel="#L1264">1264</span> -<span id="LID1265" rel="#L1265">1265</span> -<span id="LID1266" rel="#L1266">1266</span> -<span id="LID1267" rel="#L1267">1267</span> -<span id="LID1268" rel="#L1268">1268</span> -<span id="LID1269" rel="#L1269">1269</span> -<span id="LID1270" rel="#L1270">1270</span> -<span id="LID1271" rel="#L1271">1271</span> -<span id="LID1272" rel="#L1272">1272</span> -<span id="LID1273" rel="#L1273">1273</span> -<span id="LID1274" rel="#L1274">1274</span> -<span id="LID1275" rel="#L1275">1275</span> -<span id="LID1276" rel="#L1276">1276</span> -<span id="LID1277" rel="#L1277">1277</span> -<span id="LID1278" rel="#L1278">1278</span> -<span id="LID1279" rel="#L1279">1279</span> -<span id="LID1280" rel="#L1280">1280</span> -<span id="LID1281" rel="#L1281">1281</span> -<span id="LID1282" rel="#L1282">1282</span> -<span id="LID1283" rel="#L1283">1283</span> -<span id="LID1284" rel="#L1284">1284</span> -<span id="LID1285" rel="#L1285">1285</span> -<span id="LID1286" rel="#L1286">1286</span> -<span id="LID1287" rel="#L1287">1287</span> -<span id="LID1288" rel="#L1288">1288</span> -<span id="LID1289" rel="#L1289">1289</span> -<span id="LID1290" rel="#L1290">1290</span> -<span id="LID1291" rel="#L1291">1291</span> -<span id="LID1292" rel="#L1292">1292</span> -<span id="LID1293" rel="#L1293">1293</span> -<span id="LID1294" rel="#L1294">1294</span> -<span id="LID1295" rel="#L1295">1295</span> -<span id="LID1296" rel="#L1296">1296</span> -<span id="LID1297" rel="#L1297">1297</span> -<span id="LID1298" rel="#L1298">1298</span> -<span id="LID1299" rel="#L1299">1299</span> -<span id="LID1300" rel="#L1300">1300</span> -<span id="LID1301" rel="#L1301">1301</span> -<span id="LID1302" rel="#L1302">1302</span> -<span id="LID1303" rel="#L1303">1303</span> -<span id="LID1304" rel="#L1304">1304</span> -<span id="LID1305" rel="#L1305">1305</span> -<span id="LID1306" rel="#L1306">1306</span> -<span id="LID1307" rel="#L1307">1307</span> -<span id="LID1308" rel="#L1308">1308</span> -<span id="LID1309" rel="#L1309">1309</span> -<span id="LID1310" rel="#L1310">1310</span> -<span id="LID1311" rel="#L1311">1311</span> -<span id="LID1312" rel="#L1312">1312</span> -<span id="LID1313" rel="#L1313">1313</span> -<span id="LID1314" rel="#L1314">1314</span> -<span id="LID1315" rel="#L1315">1315</span> -<span id="LID1316" rel="#L1316">1316</span> -<span id="LID1317" rel="#L1317">1317</span> -<span id="LID1318" rel="#L1318">1318</span> -<span id="LID1319" rel="#L1319">1319</span> -<span id="LID1320" rel="#L1320">1320</span> -<span id="LID1321" rel="#L1321">1321</span> -<span id="LID1322" rel="#L1322">1322</span> -<span id="LID1323" rel="#L1323">1323</span> -<span id="LID1324" rel="#L1324">1324</span> -<span id="LID1325" rel="#L1325">1325</span> -<span id="LID1326" rel="#L1326">1326</span> -<span id="LID1327" rel="#L1327">1327</span> -<span id="LID1328" rel="#L1328">1328</span> -<span id="LID1329" rel="#L1329">1329</span> -<span id="LID1330" rel="#L1330">1330</span> -<span id="LID1331" rel="#L1331">1331</span> -<span id="LID1332" rel="#L1332">1332</span> -<span id="LID1333" rel="#L1333">1333</span> -<span id="LID1334" rel="#L1334">1334</span> -<span id="LID1335" rel="#L1335">1335</span> -<span id="LID1336" rel="#L1336">1336</span> -<span id="LID1337" rel="#L1337">1337</span> -<span id="LID1338" rel="#L1338">1338</span> -<span id="LID1339" rel="#L1339">1339</span> -<span id="LID1340" rel="#L1340">1340</span> -<span id="LID1341" rel="#L1341">1341</span> -<span id="LID1342" rel="#L1342">1342</span> -<span id="LID1343" rel="#L1343">1343</span> -<span id="LID1344" rel="#L1344">1344</span> -<span id="LID1345" rel="#L1345">1345</span> -<span id="LID1346" rel="#L1346">1346</span> -<span id="LID1347" rel="#L1347">1347</span> -<span id="LID1348" rel="#L1348">1348</span> -<span id="LID1349" rel="#L1349">1349</span> -<span id="LID1350" rel="#L1350">1350</span> -<span id="LID1351" rel="#L1351">1351</span> -<span id="LID1352" rel="#L1352">1352</span> -<span id="LID1353" rel="#L1353">1353</span> -<span id="LID1354" rel="#L1354">1354</span> -<span id="LID1355" rel="#L1355">1355</span> -<span id="LID1356" rel="#L1356">1356</span> -<span id="LID1357" rel="#L1357">1357</span> -<span id="LID1358" rel="#L1358">1358</span> -<span id="LID1359" rel="#L1359">1359</span> -<span id="LID1360" rel="#L1360">1360</span> -<span id="LID1361" rel="#L1361">1361</span> -<span id="LID1362" rel="#L1362">1362</span> -<span id="LID1363" rel="#L1363">1363</span> -<span id="LID1364" rel="#L1364">1364</span> -<span id="LID1365" rel="#L1365">1365</span> -<span id="LID1366" rel="#L1366">1366</span> -<span id="LID1367" rel="#L1367">1367</span> -<span id="LID1368" rel="#L1368">1368</span> -<span id="LID1369" rel="#L1369">1369</span> -<span id="LID1370" rel="#L1370">1370</span> -<span id="LID1371" rel="#L1371">1371</span> -<span id="LID1372" rel="#L1372">1372</span> -<span id="LID1373" rel="#L1373">1373</span> -<span id="LID1374" rel="#L1374">1374</span> -<span id="LID1375" rel="#L1375">1375</span> -<span id="LID1376" rel="#L1376">1376</span> -<span id="LID1377" rel="#L1377">1377</span> -<span id="LID1378" rel="#L1378">1378</span> -<span id="LID1379" rel="#L1379">1379</span> -<span id="LID1380" rel="#L1380">1380</span> -<span id="LID1381" rel="#L1381">1381</span> -<span id="LID1382" rel="#L1382">1382</span> -<span id="LID1383" rel="#L1383">1383</span> -<span id="LID1384" rel="#L1384">1384</span> -<span id="LID1385" rel="#L1385">1385</span> -<span id="LID1386" rel="#L1386">1386</span> -<span id="LID1387" rel="#L1387">1387</span> -<span id="LID1388" rel="#L1388">1388</span> -<span id="LID1389" rel="#L1389">1389</span> -<span id="LID1390" rel="#L1390">1390</span> -<span id="LID1391" rel="#L1391">1391</span> -<span id="LID1392" rel="#L1392">1392</span> -<span id="LID1393" rel="#L1393">1393</span> -<span id="LID1394" rel="#L1394">1394</span> -<span id="LID1395" rel="#L1395">1395</span> -<span id="LID1396" rel="#L1396">1396</span> -<span id="LID1397" rel="#L1397">1397</span> -<span id="LID1398" rel="#L1398">1398</span> -<span id="LID1399" rel="#L1399">1399</span> -<span id="LID1400" rel="#L1400">1400</span> -<span id="LID1401" rel="#L1401">1401</span> -<span id="LID1402" rel="#L1402">1402</span> -<span id="LID1403" rel="#L1403">1403</span> -<span id="LID1404" rel="#L1404">1404</span> -<span id="LID1405" rel="#L1405">1405</span> -<span id="LID1406" rel="#L1406">1406</span> -<span id="LID1407" rel="#L1407">1407</span> -<span id="LID1408" rel="#L1408">1408</span> -<span id="LID1409" rel="#L1409">1409</span> -<span id="LID1410" rel="#L1410">1410</span> -<span id="LID1411" rel="#L1411">1411</span> -<span id="LID1412" rel="#L1412">1412</span> -<span id="LID1413" rel="#L1413">1413</span> -<span id="LID1414" rel="#L1414">1414</span> -<span id="LID1415" rel="#L1415">1415</span> -<span id="LID1416" rel="#L1416">1416</span> -<span id="LID1417" rel="#L1417">1417</span> -<span id="LID1418" rel="#L1418">1418</span> -<span id="LID1419" rel="#L1419">1419</span> -<span id="LID1420" rel="#L1420">1420</span> -<span id="LID1421" rel="#L1421">1421</span> -<span id="LID1422" rel="#L1422">1422</span> -<span id="LID1423" rel="#L1423">1423</span> -<span id="LID1424" rel="#L1424">1424</span> -<span id="LID1425" rel="#L1425">1425</span> -<span id="LID1426" rel="#L1426">1426</span> -<span id="LID1427" rel="#L1427">1427</span> -<span id="LID1428" rel="#L1428">1428</span> -<span id="LID1429" rel="#L1429">1429</span> -<span id="LID1430" rel="#L1430">1430</span> -<span id="LID1431" rel="#L1431">1431</span> -<span id="LID1432" rel="#L1432">1432</span> -<span id="LID1433" rel="#L1433">1433</span> -<span id="LID1434" rel="#L1434">1434</span> -<span id="LID1435" rel="#L1435">1435</span> -<span id="LID1436" rel="#L1436">1436</span> -<span id="LID1437" rel="#L1437">1437</span> -<span id="LID1438" rel="#L1438">1438</span> -<span id="LID1439" rel="#L1439">1439</span> -<span id="LID1440" rel="#L1440">1440</span> -<span id="LID1441" rel="#L1441">1441</span> -<span id="LID1442" rel="#L1442">1442</span> -<span id="LID1443" rel="#L1443">1443</span> -<span id="LID1444" rel="#L1444">1444</span> -<span id="LID1445" rel="#L1445">1445</span> -<span id="LID1446" rel="#L1446">1446</span> -<span id="LID1447" rel="#L1447">1447</span> -<span id="LID1448" rel="#L1448">1448</span> -<span id="LID1449" rel="#L1449">1449</span> -<span id="LID1450" rel="#L1450">1450</span> -<span id="LID1451" rel="#L1451">1451</span> -<span id="LID1452" rel="#L1452">1452</span> -<span id="LID1453" rel="#L1453">1453</span> -<span id="LID1454" rel="#L1454">1454</span> -<span id="LID1455" rel="#L1455">1455</span> -<span id="LID1456" rel="#L1456">1456</span> -<span id="LID1457" rel="#L1457">1457</span> -<span id="LID1458" rel="#L1458">1458</span> -<span id="LID1459" rel="#L1459">1459</span> -<span id="LID1460" rel="#L1460">1460</span> -<span id="LID1461" rel="#L1461">1461</span> -<span id="LID1462" rel="#L1462">1462</span> -<span id="LID1463" rel="#L1463">1463</span> -<span id="LID1464" rel="#L1464">1464</span> -<span id="LID1465" rel="#L1465">1465</span> -<span id="LID1466" rel="#L1466">1466</span> -<span id="LID1467" rel="#L1467">1467</span> -<span id="LID1468" rel="#L1468">1468</span> -<span id="LID1469" rel="#L1469">1469</span> -<span id="LID1470" rel="#L1470">1470</span> -<span id="LID1471" rel="#L1471">1471</span> -<span id="LID1472" rel="#L1472">1472</span> -<span id="LID1473" rel="#L1473">1473</span> -<span id="LID1474" rel="#L1474">1474</span> -<span id="LID1475" rel="#L1475">1475</span> -<span id="LID1476" rel="#L1476">1476</span> -<span id="LID1477" rel="#L1477">1477</span> -<span id="LID1478" rel="#L1478">1478</span> -<span id="LID1479" rel="#L1479">1479</span> -<span id="LID1480" rel="#L1480">1480</span> -<span id="LID1481" rel="#L1481">1481</span> -<span id="LID1482" rel="#L1482">1482</span> -<span id="LID1483" rel="#L1483">1483</span> -<span id="LID1484" rel="#L1484">1484</span> -<span id="LID1485" rel="#L1485">1485</span> -<span id="LID1486" rel="#L1486">1486</span> -<span id="LID1487" rel="#L1487">1487</span> -<span id="LID1488" rel="#L1488">1488</span> -<span id="LID1489" rel="#L1489">1489</span> -<span id="LID1490" rel="#L1490">1490</span> -<span id="LID1491" rel="#L1491">1491</span> -<span id="LID1492" rel="#L1492">1492</span> -<span id="LID1493" rel="#L1493">1493</span> -<span id="LID1494" rel="#L1494">1494</span> -<span id="LID1495" rel="#L1495">1495</span> -<span id="LID1496" rel="#L1496">1496</span> -<span id="LID1497" rel="#L1497">1497</span> -<span id="LID1498" rel="#L1498">1498</span> -<span id="LID1499" rel="#L1499">1499</span> -<span id="LID1500" rel="#L1500">1500</span> -<span id="LID1501" rel="#L1501">1501</span> -<span id="LID1502" rel="#L1502">1502</span> -<span id="LID1503" rel="#L1503">1503</span> -<span id="LID1504" rel="#L1504">1504</span> -<span id="LID1505" rel="#L1505">1505</span> -<span id="LID1506" rel="#L1506">1506</span> -<span id="LID1507" rel="#L1507">1507</span> -<span id="LID1508" rel="#L1508">1508</span> -<span id="LID1509" rel="#L1509">1509</span> -<span id="LID1510" rel="#L1510">1510</span> -<span id="LID1511" rel="#L1511">1511</span> -<span id="LID1512" rel="#L1512">1512</span> -<span id="LID1513" rel="#L1513">1513</span> -<span id="LID1514" rel="#L1514">1514</span> -<span id="LID1515" rel="#L1515">1515</span> -<span id="LID1516" rel="#L1516">1516</span> -<span id="LID1517" rel="#L1517">1517</span> -<span id="LID1518" rel="#L1518">1518</span> -<span id="LID1519" rel="#L1519">1519</span> -<span id="LID1520" rel="#L1520">1520</span> -<span id="LID1521" rel="#L1521">1521</span> -<span id="LID1522" rel="#L1522">1522</span> -<span id="LID1523" rel="#L1523">1523</span> -<span id="LID1524" rel="#L1524">1524</span> -<span id="LID1525" rel="#L1525">1525</span> -<span id="LID1526" rel="#L1526">1526</span> -<span id="LID1527" rel="#L1527">1527</span> -<span id="LID1528" rel="#L1528">1528</span> -<span id="LID1529" rel="#L1529">1529</span> -<span id="LID1530" rel="#L1530">1530</span> -<span id="LID1531" rel="#L1531">1531</span> -<span id="LID1532" rel="#L1532">1532</span> -<span id="LID1533" rel="#L1533">1533</span> -<span id="LID1534" rel="#L1534">1534</span> -<span id="LID1535" rel="#L1535">1535</span> -<span id="LID1536" rel="#L1536">1536</span> -<span id="LID1537" rel="#L1537">1537</span> -<span id="LID1538" rel="#L1538">1538</span> -<span id="LID1539" rel="#L1539">1539</span> -<span id="LID1540" rel="#L1540">1540</span> -<span id="LID1541" rel="#L1541">1541</span> -<span id="LID1542" rel="#L1542">1542</span> -<span id="LID1543" rel="#L1543">1543</span> -<span id="LID1544" rel="#L1544">1544</span> -<span id="LID1545" rel="#L1545">1545</span> -<span id="LID1546" rel="#L1546">1546</span> -<span id="LID1547" rel="#L1547">1547</span> -<span id="LID1548" rel="#L1548">1548</span> -<span id="LID1549" rel="#L1549">1549</span> -<span id="LID1550" rel="#L1550">1550</span> -<span id="LID1551" rel="#L1551">1551</span> -<span id="LID1552" rel="#L1552">1552</span> -<span id="LID1553" rel="#L1553">1553</span> -<span id="LID1554" rel="#L1554">1554</span> -<span id="LID1555" rel="#L1555">1555</span> -<span id="LID1556" rel="#L1556">1556</span> -<span id="LID1557" rel="#L1557">1557</span> -<span id="LID1558" rel="#L1558">1558</span> -<span id="LID1559" rel="#L1559">1559</span> -<span id="LID1560" rel="#L1560">1560</span> -<span id="LID1561" rel="#L1561">1561</span> -<span id="LID1562" rel="#L1562">1562</span> -<span id="LID1563" rel="#L1563">1563</span> -<span id="LID1564" rel="#L1564">1564</span> -<span id="LID1565" rel="#L1565">1565</span> -<span id="LID1566" rel="#L1566">1566</span> -<span id="LID1567" rel="#L1567">1567</span> -<span id="LID1568" rel="#L1568">1568</span> -<span id="LID1569" rel="#L1569">1569</span> -<span id="LID1570" rel="#L1570">1570</span> -<span id="LID1571" rel="#L1571">1571</span> -<span id="LID1572" rel="#L1572">1572</span> -<span id="LID1573" rel="#L1573">1573</span> -<span id="LID1574" rel="#L1574">1574</span> -<span id="LID1575" rel="#L1575">1575</span> -<span id="LID1576" rel="#L1576">1576</span> -<span id="LID1577" rel="#L1577">1577</span> -<span id="LID1578" rel="#L1578">1578</span> -<span id="LID1579" rel="#L1579">1579</span> -<span id="LID1580" rel="#L1580">1580</span> -<span id="LID1581" rel="#L1581">1581</span> -<span id="LID1582" rel="#L1582">1582</span> -<span id="LID1583" rel="#L1583">1583</span> -<span id="LID1584" rel="#L1584">1584</span> -<span id="LID1585" rel="#L1585">1585</span> -<span id="LID1586" rel="#L1586">1586</span> -<span id="LID1587" rel="#L1587">1587</span> -<span id="LID1588" rel="#L1588">1588</span> -<span id="LID1589" rel="#L1589">1589</span> -<span id="LID1590" rel="#L1590">1590</span> -<span id="LID1591" rel="#L1591">1591</span> -<span id="LID1592" rel="#L1592">1592</span> -<span id="LID1593" rel="#L1593">1593</span> -<span id="LID1594" rel="#L1594">1594</span> -<span id="LID1595" rel="#L1595">1595</span> -<span id="LID1596" rel="#L1596">1596</span> -<span id="LID1597" rel="#L1597">1597</span> -<span id="LID1598" rel="#L1598">1598</span> -<span id="LID1599" rel="#L1599">1599</span> -<span id="LID1600" rel="#L1600">1600</span> -<span id="LID1601" rel="#L1601">1601</span> -<span id="LID1602" rel="#L1602">1602</span> -<span id="LID1603" rel="#L1603">1603</span> -<span id="LID1604" rel="#L1604">1604</span> -<span id="LID1605" rel="#L1605">1605</span> -<span id="LID1606" rel="#L1606">1606</span> -<span id="LID1607" rel="#L1607">1607</span> -<span id="LID1608" rel="#L1608">1608</span> -<span id="LID1609" rel="#L1609">1609</span> -<span id="LID1610" rel="#L1610">1610</span> -<span id="LID1611" rel="#L1611">1611</span> -<span id="LID1612" rel="#L1612">1612</span> -<span id="LID1613" rel="#L1613">1613</span> -<span id="LID1614" rel="#L1614">1614</span> -<span id="LID1615" rel="#L1615">1615</span> -<span id="LID1616" rel="#L1616">1616</span> -<span id="LID1617" rel="#L1617">1617</span> -<span id="LID1618" rel="#L1618">1618</span> -<span id="LID1619" rel="#L1619">1619</span> -<span id="LID1620" rel="#L1620">1620</span> -<span id="LID1621" rel="#L1621">1621</span> -<span id="LID1622" rel="#L1622">1622</span> -<span id="LID1623" rel="#L1623">1623</span> -<span id="LID1624" rel="#L1624">1624</span> -<span id="LID1625" rel="#L1625">1625</span> -<span id="LID1626" rel="#L1626">1626</span> -<span id="LID1627" rel="#L1627">1627</span> -<span id="LID1628" rel="#L1628">1628</span> -<span id="LID1629" rel="#L1629">1629</span> -<span id="LID1630" rel="#L1630">1630</span> -<span id="LID1631" rel="#L1631">1631</span> -<span id="LID1632" rel="#L1632">1632</span> -<span id="LID1633" rel="#L1633">1633</span> -<span id="LID1634" rel="#L1634">1634</span> -<span id="LID1635" rel="#L1635">1635</span> -<span id="LID1636" rel="#L1636">1636</span> -<span id="LID1637" rel="#L1637">1637</span> -<span id="LID1638" rel="#L1638">1638</span> -<span id="LID1639" rel="#L1639">1639</span> -<span id="LID1640" rel="#L1640">1640</span> -<span id="LID1641" rel="#L1641">1641</span> -<span id="LID1642" rel="#L1642">1642</span> -<span id="LID1643" rel="#L1643">1643</span> -<span id="LID1644" rel="#L1644">1644</span> -<span id="LID1645" rel="#L1645">1645</span> -<span id="LID1646" rel="#L1646">1646</span> -<span id="LID1647" rel="#L1647">1647</span> -<span id="LID1648" rel="#L1648">1648</span> -<span id="LID1649" rel="#L1649">1649</span> -<span id="LID1650" rel="#L1650">1650</span> -<span id="LID1651" rel="#L1651">1651</span> -<span id="LID1652" rel="#L1652">1652</span> -<span id="LID1653" rel="#L1653">1653</span> -<span id="LID1654" rel="#L1654">1654</span> -<span id="LID1655" rel="#L1655">1655</span> -<span id="LID1656" rel="#L1656">1656</span> -<span id="LID1657" rel="#L1657">1657</span> -<span id="LID1658" rel="#L1658">1658</span> -<span id="LID1659" rel="#L1659">1659</span> -<span id="LID1660" rel="#L1660">1660</span> -<span id="LID1661" rel="#L1661">1661</span> -<span id="LID1662" rel="#L1662">1662</span> -<span id="LID1663" rel="#L1663">1663</span> -<span id="LID1664" rel="#L1664">1664</span> -<span id="LID1665" rel="#L1665">1665</span> -<span id="LID1666" rel="#L1666">1666</span> -<span id="LID1667" rel="#L1667">1667</span> -<span id="LID1668" rel="#L1668">1668</span> -<span id="LID1669" rel="#L1669">1669</span> -<span id="LID1670" rel="#L1670">1670</span> -<span id="LID1671" rel="#L1671">1671</span> -<span id="LID1672" rel="#L1672">1672</span> -<span id="LID1673" rel="#L1673">1673</span> -<span id="LID1674" rel="#L1674">1674</span> -<span id="LID1675" rel="#L1675">1675</span> -<span id="LID1676" rel="#L1676">1676</span> -<span id="LID1677" rel="#L1677">1677</span> -<span id="LID1678" rel="#L1678">1678</span> -<span id="LID1679" rel="#L1679">1679</span> -<span id="LID1680" rel="#L1680">1680</span> -<span id="LID1681" rel="#L1681">1681</span> -<span id="LID1682" rel="#L1682">1682</span> -<span id="LID1683" rel="#L1683">1683</span> -<span id="LID1684" rel="#L1684">1684</span> -<span id="LID1685" rel="#L1685">1685</span> -<span id="LID1686" rel="#L1686">1686</span> -<span id="LID1687" rel="#L1687">1687</span> -<span id="LID1688" rel="#L1688">1688</span> -<span id="LID1689" rel="#L1689">1689</span> -<span id="LID1690" rel="#L1690">1690</span> -<span id="LID1691" rel="#L1691">1691</span> -<span id="LID1692" rel="#L1692">1692</span> -<span id="LID1693" rel="#L1693">1693</span> -<span id="LID1694" rel="#L1694">1694</span> -<span id="LID1695" rel="#L1695">1695</span> -<span id="LID1696" rel="#L1696">1696</span> -<span id="LID1697" rel="#L1697">1697</span> -<span id="LID1698" rel="#L1698">1698</span> -<span id="LID1699" rel="#L1699">1699</span> -<span id="LID1700" rel="#L1700">1700</span> -<span id="LID1701" rel="#L1701">1701</span> -<span id="LID1702" rel="#L1702">1702</span> -<span id="LID1703" rel="#L1703">1703</span> -<span id="LID1704" rel="#L1704">1704</span> -<span id="LID1705" rel="#L1705">1705</span> -<span id="LID1706" rel="#L1706">1706</span> -<span id="LID1707" rel="#L1707">1707</span> -<span id="LID1708" rel="#L1708">1708</span> -<span id="LID1709" rel="#L1709">1709</span> -<span id="LID1710" rel="#L1710">1710</span> -<span id="LID1711" rel="#L1711">1711</span> -<span id="LID1712" rel="#L1712">1712</span> -<span id="LID1713" rel="#L1713">1713</span> -<span id="LID1714" rel="#L1714">1714</span> -<span id="LID1715" rel="#L1715">1715</span> -<span id="LID1716" rel="#L1716">1716</span> -<span id="LID1717" rel="#L1717">1717</span> -<span id="LID1718" rel="#L1718">1718</span> -<span id="LID1719" rel="#L1719">1719</span> -<span id="LID1720" rel="#L1720">1720</span> -<span id="LID1721" rel="#L1721">1721</span> -<span id="LID1722" rel="#L1722">1722</span> -<span id="LID1723" rel="#L1723">1723</span> -<span id="LID1724" rel="#L1724">1724</span> -<span id="LID1725" rel="#L1725">1725</span> -<span id="LID1726" rel="#L1726">1726</span> -<span id="LID1727" rel="#L1727">1727</span> -<span id="LID1728" rel="#L1728">1728</span> -<span id="LID1729" rel="#L1729">1729</span> -<span id="LID1730" rel="#L1730">1730</span> -<span id="LID1731" rel="#L1731">1731</span> -<span id="LID1732" rel="#L1732">1732</span> -<span id="LID1733" rel="#L1733">1733</span> -<span id="LID1734" rel="#L1734">1734</span> -<span id="LID1735" rel="#L1735">1735</span> -<span id="LID1736" rel="#L1736">1736</span> -<span id="LID1737" rel="#L1737">1737</span> -<span id="LID1738" rel="#L1738">1738</span> -<span id="LID1739" rel="#L1739">1739</span> -<span id="LID1740" rel="#L1740">1740</span> -<span id="LID1741" rel="#L1741">1741</span> -<span id="LID1742" rel="#L1742">1742</span> -<span id="LID1743" rel="#L1743">1743</span> -<span id="LID1744" rel="#L1744">1744</span> -<span id="LID1745" rel="#L1745">1745</span> -<span id="LID1746" rel="#L1746">1746</span> -<span id="LID1747" rel="#L1747">1747</span> -<span id="LID1748" rel="#L1748">1748</span> -<span id="LID1749" rel="#L1749">1749</span> -<span id="LID1750" rel="#L1750">1750</span> -<span id="LID1751" rel="#L1751">1751</span> -<span id="LID1752" rel="#L1752">1752</span> -<span id="LID1753" rel="#L1753">1753</span> -<span id="LID1754" rel="#L1754">1754</span> -<span id="LID1755" rel="#L1755">1755</span> -<span id="LID1756" rel="#L1756">1756</span> -<span id="LID1757" rel="#L1757">1757</span> -<span id="LID1758" rel="#L1758">1758</span> -<span id="LID1759" rel="#L1759">1759</span> -<span id="LID1760" rel="#L1760">1760</span> -<span id="LID1761" rel="#L1761">1761</span> -<span id="LID1762" rel="#L1762">1762</span> -<span id="LID1763" rel="#L1763">1763</span> -<span id="LID1764" rel="#L1764">1764</span> -<span id="LID1765" rel="#L1765">1765</span> -<span id="LID1766" rel="#L1766">1766</span> -<span id="LID1767" rel="#L1767">1767</span> -<span id="LID1768" rel="#L1768">1768</span> -<span id="LID1769" rel="#L1769">1769</span> -<span id="LID1770" rel="#L1770">1770</span> -<span id="LID1771" rel="#L1771">1771</span> -<span id="LID1772" rel="#L1772">1772</span> -<span id="LID1773" rel="#L1773">1773</span> -<span id="LID1774" rel="#L1774">1774</span> -<span id="LID1775" rel="#L1775">1775</span> -<span id="LID1776" rel="#L1776">1776</span> -<span id="LID1777" rel="#L1777">1777</span> -<span id="LID1778" rel="#L1778">1778</span> -<span id="LID1779" rel="#L1779">1779</span> -<span id="LID1780" rel="#L1780">1780</span> -<span id="LID1781" rel="#L1781">1781</span> -<span id="LID1782" rel="#L1782">1782</span> -<span id="LID1783" rel="#L1783">1783</span> -<span id="LID1784" rel="#L1784">1784</span> -<span id="LID1785" rel="#L1785">1785</span> -<span id="LID1786" rel="#L1786">1786</span> -<span id="LID1787" rel="#L1787">1787</span> -<span id="LID1788" rel="#L1788">1788</span> -<span id="LID1789" rel="#L1789">1789</span> -<span id="LID1790" rel="#L1790">1790</span> -<span id="LID1791" rel="#L1791">1791</span> -<span id="LID1792" rel="#L1792">1792</span> -<span id="LID1793" rel="#L1793">1793</span> -<span id="LID1794" rel="#L1794">1794</span> -<span id="LID1795" rel="#L1795">1795</span> -<span id="LID1796" rel="#L1796">1796</span> -<span id="LID1797" rel="#L1797">1797</span> -<span id="LID1798" rel="#L1798">1798</span> -<span id="LID1799" rel="#L1799">1799</span> -<span id="LID1800" rel="#L1800">1800</span> -<span id="LID1801" rel="#L1801">1801</span> -<span id="LID1802" rel="#L1802">1802</span> -<span id="LID1803" rel="#L1803">1803</span> -<span id="LID1804" rel="#L1804">1804</span> -<span id="LID1805" rel="#L1805">1805</span> -<span id="LID1806" rel="#L1806">1806</span> -<span id="LID1807" rel="#L1807">1807</span> -<span id="LID1808" rel="#L1808">1808</span> -<span id="LID1809" rel="#L1809">1809</span> -<span id="LID1810" rel="#L1810">1810</span> -<span id="LID1811" rel="#L1811">1811</span> -<span id="LID1812" rel="#L1812">1812</span> -<span id="LID1813" rel="#L1813">1813</span> -<span id="LID1814" rel="#L1814">1814</span> -<span id="LID1815" rel="#L1815">1815</span> -<span id="LID1816" rel="#L1816">1816</span> -<span id="LID1817" rel="#L1817">1817</span> -<span id="LID1818" rel="#L1818">1818</span> -<span id="LID1819" rel="#L1819">1819</span> -<span id="LID1820" rel="#L1820">1820</span> -<span id="LID1821" rel="#L1821">1821</span> -<span id="LID1822" rel="#L1822">1822</span> -<span id="LID1823" rel="#L1823">1823</span> -<span id="LID1824" rel="#L1824">1824</span> -<span id="LID1825" rel="#L1825">1825</span> -<span id="LID1826" rel="#L1826">1826</span> -<span id="LID1827" rel="#L1827">1827</span> -<span id="LID1828" rel="#L1828">1828</span> -<span id="LID1829" rel="#L1829">1829</span> -<span id="LID1830" rel="#L1830">1830</span> -<span id="LID1831" rel="#L1831">1831</span> -<span id="LID1832" rel="#L1832">1832</span> -<span id="LID1833" rel="#L1833">1833</span> -<span id="LID1834" rel="#L1834">1834</span> -<span id="LID1835" rel="#L1835">1835</span> -<span id="LID1836" rel="#L1836">1836</span> -<span id="LID1837" rel="#L1837">1837</span> -<span id="LID1838" rel="#L1838">1838</span> -<span id="LID1839" rel="#L1839">1839</span> -<span id="LID1840" rel="#L1840">1840</span> -<span id="LID1841" rel="#L1841">1841</span> -<span id="LID1842" rel="#L1842">1842</span> -<span id="LID1843" rel="#L1843">1843</span> -<span id="LID1844" rel="#L1844">1844</span> -<span id="LID1845" rel="#L1845">1845</span> -<span id="LID1846" rel="#L1846">1846</span> -<span id="LID1847" rel="#L1847">1847</span> -<span id="LID1848" rel="#L1848">1848</span> -<span id="LID1849" rel="#L1849">1849</span> -<span id="LID1850" rel="#L1850">1850</span> -<span id="LID1851" rel="#L1851">1851</span> -<span id="LID1852" rel="#L1852">1852</span> -<span id="LID1853" rel="#L1853">1853</span> -<span id="LID1854" rel="#L1854">1854</span> -<span id="LID1855" rel="#L1855">1855</span> -<span id="LID1856" rel="#L1856">1856</span> -<span id="LID1857" rel="#L1857">1857</span> -<span id="LID1858" rel="#L1858">1858</span> -<span id="LID1859" rel="#L1859">1859</span> -<span id="LID1860" rel="#L1860">1860</span> -<span id="LID1861" rel="#L1861">1861</span> -<span id="LID1862" rel="#L1862">1862</span> -<span id="LID1863" rel="#L1863">1863</span> -<span id="LID1864" rel="#L1864">1864</span> -<span id="LID1865" rel="#L1865">1865</span> -<span id="LID1866" rel="#L1866">1866</span> -<span id="LID1867" rel="#L1867">1867</span> -<span id="LID1868" rel="#L1868">1868</span> -<span id="LID1869" rel="#L1869">1869</span> -<span id="LID1870" rel="#L1870">1870</span> -<span id="LID1871" rel="#L1871">1871</span> -<span id="LID1872" rel="#L1872">1872</span> -<span id="LID1873" rel="#L1873">1873</span> -<span id="LID1874" rel="#L1874">1874</span> -<span id="LID1875" rel="#L1875">1875</span> -<span id="LID1876" rel="#L1876">1876</span> -<span id="LID1877" rel="#L1877">1877</span> -<span id="LID1878" rel="#L1878">1878</span> -<span id="LID1879" rel="#L1879">1879</span> -<span id="LID1880" rel="#L1880">1880</span> -<span id="LID1881" rel="#L1881">1881</span> -<span id="LID1882" rel="#L1882">1882</span> -<span id="LID1883" rel="#L1883">1883</span> -<span id="LID1884" rel="#L1884">1884</span> -<span id="LID1885" rel="#L1885">1885</span> -<span id="LID1886" rel="#L1886">1886</span> -<span id="LID1887" rel="#L1887">1887</span> -<span id="LID1888" rel="#L1888">1888</span> -<span id="LID1889" rel="#L1889">1889</span> -<span id="LID1890" rel="#L1890">1890</span> -<span id="LID1891" rel="#L1891">1891</span> -<span id="LID1892" rel="#L1892">1892</span> -<span id="LID1893" rel="#L1893">1893</span> -<span id="LID1894" rel="#L1894">1894</span> -<span id="LID1895" rel="#L1895">1895</span> -<span id="LID1896" rel="#L1896">1896</span> -<span id="LID1897" rel="#L1897">1897</span> -<span id="LID1898" rel="#L1898">1898</span> -<span id="LID1899" rel="#L1899">1899</span> -<span id="LID1900" rel="#L1900">1900</span> -<span id="LID1901" rel="#L1901">1901</span> -<span id="LID1902" rel="#L1902">1902</span> -<span id="LID1903" rel="#L1903">1903</span> -<span id="LID1904" rel="#L1904">1904</span> -<span id="LID1905" rel="#L1905">1905</span> -<span id="LID1906" rel="#L1906">1906</span> -<span id="LID1907" rel="#L1907">1907</span> -<span id="LID1908" rel="#L1908">1908</span> -<span id="LID1909" rel="#L1909">1909</span> -<span id="LID1910" rel="#L1910">1910</span> -<span id="LID1911" rel="#L1911">1911</span> -<span id="LID1912" rel="#L1912">1912</span> -<span id="LID1913" rel="#L1913">1913</span> -<span id="LID1914" rel="#L1914">1914</span> -<span id="LID1915" rel="#L1915">1915</span> -<span id="LID1916" rel="#L1916">1916</span> -<span id="LID1917" rel="#L1917">1917</span> -<span id="LID1918" rel="#L1918">1918</span> -<span id="LID1919" rel="#L1919">1919</span> -<span id="LID1920" rel="#L1920">1920</span> -<span id="LID1921" rel="#L1921">1921</span> -<span id="LID1922" rel="#L1922">1922</span> -<span id="LID1923" rel="#L1923">1923</span> -<span id="LID1924" rel="#L1924">1924</span> -<span id="LID1925" rel="#L1925">1925</span> -<span id="LID1926" rel="#L1926">1926</span> -<span id="LID1927" rel="#L1927">1927</span> -<span id="LID1928" rel="#L1928">1928</span> -<span id="LID1929" rel="#L1929">1929</span> -<span id="LID1930" rel="#L1930">1930</span> -<span id="LID1931" rel="#L1931">1931</span> -<span id="LID1932" rel="#L1932">1932</span> -<span id="LID1933" rel="#L1933">1933</span> -<span id="LID1934" rel="#L1934">1934</span> -<span id="LID1935" rel="#L1935">1935</span> -<span id="LID1936" rel="#L1936">1936</span> -<span id="LID1937" rel="#L1937">1937</span> -<span id="LID1938" rel="#L1938">1938</span> -<span id="LID1939" rel="#L1939">1939</span> -<span id="LID1940" rel="#L1940">1940</span> -<span id="LID1941" rel="#L1941">1941</span> -<span id="LID1942" rel="#L1942">1942</span> -<span id="LID1943" rel="#L1943">1943</span> -<span id="LID1944" rel="#L1944">1944</span> -<span id="LID1945" rel="#L1945">1945</span> -<span id="LID1946" rel="#L1946">1946</span> -<span id="LID1947" rel="#L1947">1947</span> -<span id="LID1948" rel="#L1948">1948</span> -<span id="LID1949" rel="#L1949">1949</span> -<span id="LID1950" rel="#L1950">1950</span> -<span id="LID1951" rel="#L1951">1951</span> -<span id="LID1952" rel="#L1952">1952</span> -<span id="LID1953" rel="#L1953">1953</span> -<span id="LID1954" rel="#L1954">1954</span> -<span id="LID1955" rel="#L1955">1955</span> -<span id="LID1956" rel="#L1956">1956</span> -<span id="LID1957" rel="#L1957">1957</span> -<span id="LID1958" rel="#L1958">1958</span> -<span id="LID1959" rel="#L1959">1959</span> -<span id="LID1960" rel="#L1960">1960</span> -<span id="LID1961" rel="#L1961">1961</span> -<span id="LID1962" rel="#L1962">1962</span> -<span id="LID1963" rel="#L1963">1963</span> -<span id="LID1964" rel="#L1964">1964</span> -<span id="LID1965" rel="#L1965">1965</span> -<span id="LID1966" rel="#L1966">1966</span> -<span id="LID1967" rel="#L1967">1967</span> -<span id="LID1968" rel="#L1968">1968</span> -<span id="LID1969" rel="#L1969">1969</span> -<span id="LID1970" rel="#L1970">1970</span> -<span id="LID1971" rel="#L1971">1971</span> -<span id="LID1972" rel="#L1972">1972</span> -<span id="LID1973" rel="#L1973">1973</span> -<span id="LID1974" rel="#L1974">1974</span> -<span id="LID1975" rel="#L1975">1975</span> -<span id="LID1976" rel="#L1976">1976</span> -<span id="LID1977" rel="#L1977">1977</span> -<span id="LID1978" rel="#L1978">1978</span> -<span id="LID1979" rel="#L1979">1979</span> -<span id="LID1980" rel="#L1980">1980</span> -<span id="LID1981" rel="#L1981">1981</span> -<span id="LID1982" rel="#L1982">1982</span> -<span id="LID1983" rel="#L1983">1983</span> -<span id="LID1984" rel="#L1984">1984</span> -<span id="LID1985" rel="#L1985">1985</span> -<span id="LID1986" rel="#L1986">1986</span> -<span id="LID1987" rel="#L1987">1987</span> -<span id="LID1988" rel="#L1988">1988</span> -<span id="LID1989" rel="#L1989">1989</span> -<span id="LID1990" rel="#L1990">1990</span> -<span id="LID1991" rel="#L1991">1991</span> -<span id="LID1992" rel="#L1992">1992</span> -<span id="LID1993" rel="#L1993">1993</span> -<span id="LID1994" rel="#L1994">1994</span> -<span id="LID1995" rel="#L1995">1995</span> -<span id="LID1996" rel="#L1996">1996</span> -<span id="LID1997" rel="#L1997">1997</span> -<span id="LID1998" rel="#L1998">1998</span> -<span id="LID1999" rel="#L1999">1999</span> -<span id="LID2000" rel="#L2000">2000</span> -<span id="LID2001" rel="#L2001">2001</span> -<span id="LID2002" rel="#L2002">2002</span> -<span id="LID2003" rel="#L2003">2003</span> -<span id="LID2004" rel="#L2004">2004</span> -<span id="LID2005" rel="#L2005">2005</span> -<span id="LID2006" rel="#L2006">2006</span> -<span id="LID2007" rel="#L2007">2007</span> -<span id="LID2008" rel="#L2008">2008</span> -<span id="LID2009" rel="#L2009">2009</span> -<span id="LID2010" rel="#L2010">2010</span> -<span id="LID2011" rel="#L2011">2011</span> -<span id="LID2012" rel="#L2012">2012</span> -<span id="LID2013" rel="#L2013">2013</span> -<span id="LID2014" rel="#L2014">2014</span> -<span id="LID2015" rel="#L2015">2015</span> -<span id="LID2016" rel="#L2016">2016</span> -<span id="LID2017" rel="#L2017">2017</span> -<span id="LID2018" rel="#L2018">2018</span> -<span id="LID2019" rel="#L2019">2019</span> -<span id="LID2020" rel="#L2020">2020</span> -<span id="LID2021" rel="#L2021">2021</span> -<span id="LID2022" rel="#L2022">2022</span> -<span id="LID2023" rel="#L2023">2023</span> -<span id="LID2024" rel="#L2024">2024</span> -<span id="LID2025" rel="#L2025">2025</span> -<span id="LID2026" rel="#L2026">2026</span> -<span id="LID2027" rel="#L2027">2027</span> -<span id="LID2028" rel="#L2028">2028</span> -<span id="LID2029" rel="#L2029">2029</span> -<span id="LID2030" rel="#L2030">2030</span> -<span id="LID2031" rel="#L2031">2031</span> -<span id="LID2032" rel="#L2032">2032</span> -<span id="LID2033" rel="#L2033">2033</span> -<span id="LID2034" rel="#L2034">2034</span> -<span id="LID2035" rel="#L2035">2035</span> -<span id="LID2036" rel="#L2036">2036</span> -<span id="LID2037" rel="#L2037">2037</span> -<span id="LID2038" rel="#L2038">2038</span> -<span id="LID2039" rel="#L2039">2039</span> -<span id="LID2040" rel="#L2040">2040</span> -<span id="LID2041" rel="#L2041">2041</span> -<span id="LID2042" rel="#L2042">2042</span> -<span id="LID2043" rel="#L2043">2043</span> -<span id="LID2044" rel="#L2044">2044</span> -<span id="LID2045" rel="#L2045">2045</span> -<span id="LID2046" rel="#L2046">2046</span> -<span id="LID2047" rel="#L2047">2047</span> -<span id="LID2048" rel="#L2048">2048</span> -<span id="LID2049" rel="#L2049">2049</span> -<span id="LID2050" rel="#L2050">2050</span> -<span id="LID2051" rel="#L2051">2051</span> -<span id="LID2052" rel="#L2052">2052</span> -<span id="LID2053" rel="#L2053">2053</span> -<span id="LID2054" rel="#L2054">2054</span> -<span id="LID2055" rel="#L2055">2055</span> -<span id="LID2056" rel="#L2056">2056</span> -<span id="LID2057" rel="#L2057">2057</span> -<span id="LID2058" rel="#L2058">2058</span> -<span id="LID2059" rel="#L2059">2059</span> -<span id="LID2060" rel="#L2060">2060</span> -<span id="LID2061" rel="#L2061">2061</span> -<span id="LID2062" rel="#L2062">2062</span> -<span id="LID2063" rel="#L2063">2063</span> -<span id="LID2064" rel="#L2064">2064</span> -<span id="LID2065" rel="#L2065">2065</span> -<span id="LID2066" rel="#L2066">2066</span> -<span id="LID2067" rel="#L2067">2067</span> -<span id="LID2068" rel="#L2068">2068</span> -<span id="LID2069" rel="#L2069">2069</span> -<span id="LID2070" rel="#L2070">2070</span> -<span id="LID2071" rel="#L2071">2071</span> -<span id="LID2072" rel="#L2072">2072</span> -<span id="LID2073" rel="#L2073">2073</span> -<span id="LID2074" rel="#L2074">2074</span> -<span id="LID2075" rel="#L2075">2075</span> -<span id="LID2076" rel="#L2076">2076</span> -<span id="LID2077" rel="#L2077">2077</span> -<span id="LID2078" rel="#L2078">2078</span> -<span id="LID2079" rel="#L2079">2079</span> -<span id="LID2080" rel="#L2080">2080</span> -<span id="LID2081" rel="#L2081">2081</span> -<span id="LID2082" rel="#L2082">2082</span> -<span id="LID2083" rel="#L2083">2083</span> -<span id="LID2084" rel="#L2084">2084</span> -<span id="LID2085" rel="#L2085">2085</span> -<span id="LID2086" rel="#L2086">2086</span> -<span id="LID2087" rel="#L2087">2087</span> -<span id="LID2088" rel="#L2088">2088</span> -<span id="LID2089" rel="#L2089">2089</span> -<span id="LID2090" rel="#L2090">2090</span> -<span id="LID2091" rel="#L2091">2091</span> -<span id="LID2092" rel="#L2092">2092</span> -<span id="LID2093" rel="#L2093">2093</span> -<span id="LID2094" rel="#L2094">2094</span> -<span id="LID2095" rel="#L2095">2095</span> -<span id="LID2096" rel="#L2096">2096</span> -<span id="LID2097" rel="#L2097">2097</span> -<span id="LID2098" rel="#L2098">2098</span> -<span id="LID2099" rel="#L2099">2099</span> -<span id="LID2100" rel="#L2100">2100</span> -<span id="LID2101" rel="#L2101">2101</span> -<span id="LID2102" rel="#L2102">2102</span> -<span id="LID2103" rel="#L2103">2103</span> -<span id="LID2104" rel="#L2104">2104</span> -<span id="LID2105" rel="#L2105">2105</span> -<span id="LID2106" rel="#L2106">2106</span> -<span id="LID2107" rel="#L2107">2107</span> -<span id="LID2108" rel="#L2108">2108</span> -<span id="LID2109" rel="#L2109">2109</span> -<span id="LID2110" rel="#L2110">2110</span> -<span id="LID2111" rel="#L2111">2111</span> -<span id="LID2112" rel="#L2112">2112</span> -<span id="LID2113" rel="#L2113">2113</span> -<span id="LID2114" rel="#L2114">2114</span> -<span id="LID2115" rel="#L2115">2115</span> -<span id="LID2116" rel="#L2116">2116</span> -<span id="LID2117" rel="#L2117">2117</span> -<span id="LID2118" rel="#L2118">2118</span> -<span id="LID2119" rel="#L2119">2119</span> -<span id="LID2120" rel="#L2120">2120</span> -<span id="LID2121" rel="#L2121">2121</span> -<span id="LID2122" rel="#L2122">2122</span> -<span id="LID2123" rel="#L2123">2123</span> -<span id="LID2124" rel="#L2124">2124</span> -<span id="LID2125" rel="#L2125">2125</span> -<span id="LID2126" rel="#L2126">2126</span> -<span id="LID2127" rel="#L2127">2127</span> -<span id="LID2128" rel="#L2128">2128</span> -<span id="LID2129" rel="#L2129">2129</span> -<span id="LID2130" rel="#L2130">2130</span> -<span id="LID2131" rel="#L2131">2131</span> -<span id="LID2132" rel="#L2132">2132</span> -<span id="LID2133" rel="#L2133">2133</span> -<span id="LID2134" rel="#L2134">2134</span> -<span id="LID2135" rel="#L2135">2135</span> -<span id="LID2136" rel="#L2136">2136</span> -<span id="LID2137" rel="#L2137">2137</span> -<span id="LID2138" rel="#L2138">2138</span> -<span id="LID2139" rel="#L2139">2139</span> -<span id="LID2140" rel="#L2140">2140</span> -<span id="LID2141" rel="#L2141">2141</span> -<span id="LID2142" rel="#L2142">2142</span> -<span id="LID2143" rel="#L2143">2143</span> -<span id="LID2144" rel="#L2144">2144</span> -<span id="LID2145" rel="#L2145">2145</span> -<span id="LID2146" rel="#L2146">2146</span> -<span id="LID2147" rel="#L2147">2147</span> -<span id="LID2148" rel="#L2148">2148</span> -<span id="LID2149" rel="#L2149">2149</span> -<span id="LID2150" rel="#L2150">2150</span> -<span id="LID2151" rel="#L2151">2151</span> -<span id="LID2152" rel="#L2152">2152</span> -<span id="LID2153" rel="#L2153">2153</span> -<span id="LID2154" rel="#L2154">2154</span> -<span id="LID2155" rel="#L2155">2155</span> -<span id="LID2156" rel="#L2156">2156</span> -<span id="LID2157" rel="#L2157">2157</span> -<span id="LID2158" rel="#L2158">2158</span> -<span id="LID2159" rel="#L2159">2159</span> -<span id="LID2160" rel="#L2160">2160</span> -<span id="LID2161" rel="#L2161">2161</span> -<span id="LID2162" rel="#L2162">2162</span> -<span id="LID2163" rel="#L2163">2163</span> -<span id="LID2164" rel="#L2164">2164</span> -<span id="LID2165" rel="#L2165">2165</span> -<span id="LID2166" rel="#L2166">2166</span> -<span id="LID2167" rel="#L2167">2167</span> -<span id="LID2168" rel="#L2168">2168</span> -<span id="LID2169" rel="#L2169">2169</span> -<span id="LID2170" rel="#L2170">2170</span> -<span id="LID2171" rel="#L2171">2171</span> -<span id="LID2172" rel="#L2172">2172</span> -<span id="LID2173" rel="#L2173">2173</span> -<span id="LID2174" rel="#L2174">2174</span> -<span id="LID2175" rel="#L2175">2175</span> -<span id="LID2176" rel="#L2176">2176</span> -<span id="LID2177" rel="#L2177">2177</span> -<span id="LID2178" rel="#L2178">2178</span> -<span id="LID2179" rel="#L2179">2179</span> -<span id="LID2180" rel="#L2180">2180</span> -<span id="LID2181" rel="#L2181">2181</span> -<span id="LID2182" rel="#L2182">2182</span> -<span id="LID2183" rel="#L2183">2183</span> -<span id="LID2184" rel="#L2184">2184</span> -<span id="LID2185" rel="#L2185">2185</span> -<span id="LID2186" rel="#L2186">2186</span> -<span id="LID2187" rel="#L2187">2187</span> -<span id="LID2188" rel="#L2188">2188</span> -<span id="LID2189" rel="#L2189">2189</span> -<span id="LID2190" rel="#L2190">2190</span> -<span id="LID2191" rel="#L2191">2191</span> -<span id="LID2192" rel="#L2192">2192</span> -<span id="LID2193" rel="#L2193">2193</span> -<span id="LID2194" rel="#L2194">2194</span> -<span id="LID2195" rel="#L2195">2195</span> -<span id="LID2196" rel="#L2196">2196</span> -<span id="LID2197" rel="#L2197">2197</span> -<span id="LID2198" rel="#L2198">2198</span> -<span id="LID2199" rel="#L2199">2199</span> -<span id="LID2200" rel="#L2200">2200</span> -<span id="LID2201" rel="#L2201">2201</span> -<span id="LID2202" rel="#L2202">2202</span> -<span id="LID2203" rel="#L2203">2203</span> -<span id="LID2204" rel="#L2204">2204</span> -<span id="LID2205" rel="#L2205">2205</span> -<span id="LID2206" rel="#L2206">2206</span> -<span id="LID2207" rel="#L2207">2207</span> -<span id="LID2208" rel="#L2208">2208</span> -<span id="LID2209" rel="#L2209">2209</span> -<span id="LID2210" rel="#L2210">2210</span> -<span id="LID2211" rel="#L2211">2211</span> -<span id="LID2212" rel="#L2212">2212</span> -<span id="LID2213" rel="#L2213">2213</span> -<span id="LID2214" rel="#L2214">2214</span> -<span id="LID2215" rel="#L2215">2215</span> -<span id="LID2216" rel="#L2216">2216</span> -<span id="LID2217" rel="#L2217">2217</span> -<span id="LID2218" rel="#L2218">2218</span> -<span id="LID2219" rel="#L2219">2219</span> -<span id="LID2220" rel="#L2220">2220</span> -<span id="LID2221" rel="#L2221">2221</span> -<span id="LID2222" rel="#L2222">2222</span> -<span id="LID2223" rel="#L2223">2223</span> -<span id="LID2224" rel="#L2224">2224</span> -<span id="LID2225" rel="#L2225">2225</span> -<span id="LID2226" rel="#L2226">2226</span> -<span id="LID2227" rel="#L2227">2227</span> -<span id="LID2228" rel="#L2228">2228</span> -<span id="LID2229" rel="#L2229">2229</span> -<span id="LID2230" rel="#L2230">2230</span> -<span id="LID2231" rel="#L2231">2231</span> -<span id="LID2232" rel="#L2232">2232</span> -<span id="LID2233" rel="#L2233">2233</span> -<span id="LID2234" rel="#L2234">2234</span> -<span id="LID2235" rel="#L2235">2235</span> -<span id="LID2236" rel="#L2236">2236</span> -<span id="LID2237" rel="#L2237">2237</span> -<span id="LID2238" rel="#L2238">2238</span> -<span id="LID2239" rel="#L2239">2239</span> -<span id="LID2240" rel="#L2240">2240</span> -<span id="LID2241" rel="#L2241">2241</span> -<span id="LID2242" rel="#L2242">2242</span> -<span id="LID2243" rel="#L2243">2243</span> -<span id="LID2244" rel="#L2244">2244</span> -<span id="LID2245" rel="#L2245">2245</span> -<span id="LID2246" rel="#L2246">2246</span> -<span id="LID2247" rel="#L2247">2247</span> -<span id="LID2248" rel="#L2248">2248</span> -<span id="LID2249" rel="#L2249">2249</span> -<span id="LID2250" rel="#L2250">2250</span> -<span id="LID2251" rel="#L2251">2251</span> -<span id="LID2252" rel="#L2252">2252</span> -<span id="LID2253" rel="#L2253">2253</span> -<span id="LID2254" rel="#L2254">2254</span> -<span id="LID2255" rel="#L2255">2255</span> -<span id="LID2256" rel="#L2256">2256</span> -<span id="LID2257" rel="#L2257">2257</span> -<span id="LID2258" rel="#L2258">2258</span> -<span id="LID2259" rel="#L2259">2259</span> -<span id="LID2260" rel="#L2260">2260</span> -<span id="LID2261" rel="#L2261">2261</span> -<span id="LID2262" rel="#L2262">2262</span> -<span id="LID2263" rel="#L2263">2263</span> -<span id="LID2264" rel="#L2264">2264</span> -<span id="LID2265" rel="#L2265">2265</span> -<span id="LID2266" rel="#L2266">2266</span> -<span id="LID2267" rel="#L2267">2267</span> -<span id="LID2268" rel="#L2268">2268</span> -<span id="LID2269" rel="#L2269">2269</span> -<span id="LID2270" rel="#L2270">2270</span> -<span id="LID2271" rel="#L2271">2271</span> -<span id="LID2272" rel="#L2272">2272</span> -<span id="LID2273" rel="#L2273">2273</span> -<span id="LID2274" rel="#L2274">2274</span> -<span id="LID2275" rel="#L2275">2275</span> -<span id="LID2276" rel="#L2276">2276</span> -<span id="LID2277" rel="#L2277">2277</span> -<span id="LID2278" rel="#L2278">2278</span> -<span id="LID2279" rel="#L2279">2279</span> -<span id="LID2280" rel="#L2280">2280</span> -<span id="LID2281" rel="#L2281">2281</span> -<span id="LID2282" rel="#L2282">2282</span> -<span id="LID2283" rel="#L2283">2283</span> -<span id="LID2284" rel="#L2284">2284</span> -<span id="LID2285" rel="#L2285">2285</span> -<span id="LID2286" rel="#L2286">2286</span> -<span id="LID2287" rel="#L2287">2287</span> -<span id="LID2288" rel="#L2288">2288</span> -<span id="LID2289" rel="#L2289">2289</span> -<span id="LID2290" rel="#L2290">2290</span> -<span id="LID2291" rel="#L2291">2291</span> -<span id="LID2292" rel="#L2292">2292</span> -<span id="LID2293" rel="#L2293">2293</span> -<span id="LID2294" rel="#L2294">2294</span> -<span id="LID2295" rel="#L2295">2295</span> -<span id="LID2296" rel="#L2296">2296</span> -<span id="LID2297" rel="#L2297">2297</span> -<span id="LID2298" rel="#L2298">2298</span> -<span id="LID2299" rel="#L2299">2299</span> -<span id="LID2300" rel="#L2300">2300</span> -<span id="LID2301" rel="#L2301">2301</span> -<span id="LID2302" rel="#L2302">2302</span> -<span id="LID2303" rel="#L2303">2303</span> -<span id="LID2304" rel="#L2304">2304</span> -<span id="LID2305" rel="#L2305">2305</span> -<span id="LID2306" rel="#L2306">2306</span> -<span id="LID2307" rel="#L2307">2307</span> -<span id="LID2308" rel="#L2308">2308</span> -<span id="LID2309" rel="#L2309">2309</span> -<span id="LID2310" rel="#L2310">2310</span> -<span id="LID2311" rel="#L2311">2311</span> -<span id="LID2312" rel="#L2312">2312</span> -<span id="LID2313" rel="#L2313">2313</span> -<span id="LID2314" rel="#L2314">2314</span> -<span id="LID2315" rel="#L2315">2315</span> -<span id="LID2316" rel="#L2316">2316</span> -<span id="LID2317" rel="#L2317">2317</span> -<span id="LID2318" rel="#L2318">2318</span> -<span id="LID2319" rel="#L2319">2319</span> -<span id="LID2320" rel="#L2320">2320</span> -<span id="LID2321" rel="#L2321">2321</span> -<span id="LID2322" rel="#L2322">2322</span> -<span id="LID2323" rel="#L2323">2323</span> -<span id="LID2324" rel="#L2324">2324</span> -<span id="LID2325" rel="#L2325">2325</span> -<span id="LID2326" rel="#L2326">2326</span> -<span id="LID2327" rel="#L2327">2327</span> -<span id="LID2328" rel="#L2328">2328</span> -<span id="LID2329" rel="#L2329">2329</span> -<span id="LID2330" rel="#L2330">2330</span> -<span id="LID2331" rel="#L2331">2331</span> -<span id="LID2332" rel="#L2332">2332</span> -<span id="LID2333" rel="#L2333">2333</span> -<span id="LID2334" rel="#L2334">2334</span> -<span id="LID2335" rel="#L2335">2335</span> -<span id="LID2336" rel="#L2336">2336</span> -<span id="LID2337" rel="#L2337">2337</span> -<span id="LID2338" rel="#L2338">2338</span> -<span id="LID2339" rel="#L2339">2339</span> -<span id="LID2340" rel="#L2340">2340</span> -<span id="LID2341" rel="#L2341">2341</span> -<span id="LID2342" rel="#L2342">2342</span> -<span id="LID2343" rel="#L2343">2343</span> -<span id="LID2344" rel="#L2344">2344</span> -<span id="LID2345" rel="#L2345">2345</span> -<span id="LID2346" rel="#L2346">2346</span> -<span id="LID2347" rel="#L2347">2347</span> -<span id="LID2348" rel="#L2348">2348</span> -<span id="LID2349" rel="#L2349">2349</span> -<span id="LID2350" rel="#L2350">2350</span> -<span id="LID2351" rel="#L2351">2351</span> -<span id="LID2352" rel="#L2352">2352</span> -<span id="LID2353" rel="#L2353">2353</span> -<span id="LID2354" rel="#L2354">2354</span> -<span id="LID2355" rel="#L2355">2355</span> -<span id="LID2356" rel="#L2356">2356</span> -<span id="LID2357" rel="#L2357">2357</span> -<span id="LID2358" rel="#L2358">2358</span> -<span id="LID2359" rel="#L2359">2359</span> -<span id="LID2360" rel="#L2360">2360</span> -<span id="LID2361" rel="#L2361">2361</span> -<span id="LID2362" rel="#L2362">2362</span> -<span id="LID2363" rel="#L2363">2363</span> -<span id="LID2364" rel="#L2364">2364</span> -<span id="LID2365" rel="#L2365">2365</span> -<span id="LID2366" rel="#L2366">2366</span> -<span id="LID2367" rel="#L2367">2367</span> -<span id="LID2368" rel="#L2368">2368</span> -<span id="LID2369" rel="#L2369">2369</span> -<span id="LID2370" rel="#L2370">2370</span> -<span id="LID2371" rel="#L2371">2371</span> -<span id="LID2372" rel="#L2372">2372</span> -<span id="LID2373" rel="#L2373">2373</span> -<span id="LID2374" rel="#L2374">2374</span> -<span id="LID2375" rel="#L2375">2375</span> -<span id="LID2376" rel="#L2376">2376</span> -<span id="LID2377" rel="#L2377">2377</span> -<span id="LID2378" rel="#L2378">2378</span> -<span id="LID2379" rel="#L2379">2379</span> -<span id="LID2380" rel="#L2380">2380</span> -<span id="LID2381" rel="#L2381">2381</span> -<span id="LID2382" rel="#L2382">2382</span> -<span id="LID2383" rel="#L2383">2383</span> -<span id="LID2384" rel="#L2384">2384</span> -<span id="LID2385" rel="#L2385">2385</span> -<span id="LID2386" rel="#L2386">2386</span> -<span id="LID2387" rel="#L2387">2387</span> -<span id="LID2388" rel="#L2388">2388</span> -<span id="LID2389" rel="#L2389">2389</span> -<span id="LID2390" rel="#L2390">2390</span> -<span id="LID2391" rel="#L2391">2391</span> -<span id="LID2392" rel="#L2392">2392</span> -<span id="LID2393" rel="#L2393">2393</span> -<span id="LID2394" rel="#L2394">2394</span> -<span id="LID2395" rel="#L2395">2395</span> -<span id="LID2396" rel="#L2396">2396</span> -<span id="LID2397" rel="#L2397">2397</span> -<span id="LID2398" rel="#L2398">2398</span> -<span id="LID2399" rel="#L2399">2399</span> -<span id="LID2400" rel="#L2400">2400</span> -<span id="LID2401" rel="#L2401">2401</span> -<span id="LID2402" rel="#L2402">2402</span> -<span id="LID2403" rel="#L2403">2403</span> -<span id="LID2404" rel="#L2404">2404</span> -<span id="LID2405" rel="#L2405">2405</span> -<span id="LID2406" rel="#L2406">2406</span> -<span id="LID2407" rel="#L2407">2407</span> -<span id="LID2408" rel="#L2408">2408</span> -<span id="LID2409" rel="#L2409">2409</span> -<span id="LID2410" rel="#L2410">2410</span> -<span id="LID2411" rel="#L2411">2411</span> -<span id="LID2412" rel="#L2412">2412</span> -<span id="LID2413" rel="#L2413">2413</span> -<span id="LID2414" rel="#L2414">2414</span> -<span id="LID2415" rel="#L2415">2415</span> -<span id="LID2416" rel="#L2416">2416</span> -<span id="LID2417" rel="#L2417">2417</span> -<span id="LID2418" rel="#L2418">2418</span> -<span id="LID2419" rel="#L2419">2419</span> -<span id="LID2420" rel="#L2420">2420</span> -<span id="LID2421" rel="#L2421">2421</span> -<span id="LID2422" rel="#L2422">2422</span> -<span id="LID2423" rel="#L2423">2423</span> -<span id="LID2424" rel="#L2424">2424</span> -<span id="LID2425" rel="#L2425">2425</span> -<span id="LID2426" rel="#L2426">2426</span> -<span id="LID2427" rel="#L2427">2427</span> -<span id="LID2428" rel="#L2428">2428</span> -<span id="LID2429" rel="#L2429">2429</span> -<span id="LID2430" rel="#L2430">2430</span> -<span id="LID2431" rel="#L2431">2431</span> -<span id="LID2432" rel="#L2432">2432</span> -<span id="LID2433" rel="#L2433">2433</span> -<span id="LID2434" rel="#L2434">2434</span> -<span id="LID2435" rel="#L2435">2435</span> -<span id="LID2436" rel="#L2436">2436</span> -<span id="LID2437" rel="#L2437">2437</span> -<span id="LID2438" rel="#L2438">2438</span> -<span id="LID2439" rel="#L2439">2439</span> -<span id="LID2440" rel="#L2440">2440</span> -<span id="LID2441" rel="#L2441">2441</span> -<span id="LID2442" rel="#L2442">2442</span> -<span id="LID2443" rel="#L2443">2443</span> -<span id="LID2444" rel="#L2444">2444</span> -<span id="LID2445" rel="#L2445">2445</span> -<span id="LID2446" rel="#L2446">2446</span> -<span id="LID2447" rel="#L2447">2447</span> -<span id="LID2448" rel="#L2448">2448</span> -<span id="LID2449" rel="#L2449">2449</span> -<span id="LID2450" rel="#L2450">2450</span> -<span id="LID2451" rel="#L2451">2451</span> -<span id="LID2452" rel="#L2452">2452</span> -<span id="LID2453" rel="#L2453">2453</span> -<span id="LID2454" rel="#L2454">2454</span> -<span id="LID2455" rel="#L2455">2455</span> -<span id="LID2456" rel="#L2456">2456</span> -<span id="LID2457" rel="#L2457">2457</span> -<span id="LID2458" rel="#L2458">2458</span> -<span id="LID2459" rel="#L2459">2459</span> -<span id="LID2460" rel="#L2460">2460</span> -<span id="LID2461" rel="#L2461">2461</span> -<span id="LID2462" rel="#L2462">2462</span> -<span id="LID2463" rel="#L2463">2463</span> -<span id="LID2464" rel="#L2464">2464</span> -<span id="LID2465" rel="#L2465">2465</span> -<span id="LID2466" rel="#L2466">2466</span> -<span id="LID2467" rel="#L2467">2467</span> -<span id="LID2468" rel="#L2468">2468</span> -<span id="LID2469" rel="#L2469">2469</span> -<span id="LID2470" rel="#L2470">2470</span> -<span id="LID2471" rel="#L2471">2471</span> -<span id="LID2472" rel="#L2472">2472</span> -<span id="LID2473" rel="#L2473">2473</span> -<span id="LID2474" rel="#L2474">2474</span> -<span id="LID2475" rel="#L2475">2475</span> -<span id="LID2476" rel="#L2476">2476</span> -<span id="LID2477" rel="#L2477">2477</span> -<span id="LID2478" rel="#L2478">2478</span> -<span id="LID2479" rel="#L2479">2479</span> -<span id="LID2480" rel="#L2480">2480</span> -<span id="LID2481" rel="#L2481">2481</span> -<span id="LID2482" rel="#L2482">2482</span> -<span id="LID2483" rel="#L2483">2483</span> -<span id="LID2484" rel="#L2484">2484</span> -<span id="LID2485" rel="#L2485">2485</span> -<span id="LID2486" rel="#L2486">2486</span> -<span id="LID2487" rel="#L2487">2487</span> -<span id="LID2488" rel="#L2488">2488</span> -<span id="LID2489" rel="#L2489">2489</span> -<span id="LID2490" rel="#L2490">2490</span> -<span id="LID2491" rel="#L2491">2491</span> -<span id="LID2492" rel="#L2492">2492</span> -<span id="LID2493" rel="#L2493">2493</span> -<span id="LID2494" rel="#L2494">2494</span> -<span id="LID2495" rel="#L2495">2495</span> -<span id="LID2496" rel="#L2496">2496</span> -<span id="LID2497" rel="#L2497">2497</span> -<span id="LID2498" rel="#L2498">2498</span> -<span id="LID2499" rel="#L2499">2499</span> -<span id="LID2500" rel="#L2500">2500</span> -<span id="LID2501" rel="#L2501">2501</span> -<span id="LID2502" rel="#L2502">2502</span> -<span id="LID2503" rel="#L2503">2503</span> -<span id="LID2504" rel="#L2504">2504</span> -<span id="LID2505" rel="#L2505">2505</span> -<span id="LID2506" rel="#L2506">2506</span> -<span id="LID2507" rel="#L2507">2507</span> -<span id="LID2508" rel="#L2508">2508</span> -<span id="LID2509" rel="#L2509">2509</span> -<span id="LID2510" rel="#L2510">2510</span> -<span id="LID2511" rel="#L2511">2511</span> -<span id="LID2512" rel="#L2512">2512</span> -<span id="LID2513" rel="#L2513">2513</span> -<span id="LID2514" rel="#L2514">2514</span> -<span id="LID2515" rel="#L2515">2515</span> -<span id="LID2516" rel="#L2516">2516</span> -<span id="LID2517" rel="#L2517">2517</span> -<span id="LID2518" rel="#L2518">2518</span> -<span id="LID2519" rel="#L2519">2519</span> -<span id="LID2520" rel="#L2520">2520</span> -<span id="LID2521" rel="#L2521">2521</span> -<span id="LID2522" rel="#L2522">2522</span> -<span id="LID2523" rel="#L2523">2523</span> -<span id="LID2524" rel="#L2524">2524</span> -<span id="LID2525" rel="#L2525">2525</span> -<span id="LID2526" rel="#L2526">2526</span> -<span id="LID2527" rel="#L2527">2527</span> -<span id="LID2528" rel="#L2528">2528</span> -<span id="LID2529" rel="#L2529">2529</span> -<span id="LID2530" rel="#L2530">2530</span> -<span id="LID2531" rel="#L2531">2531</span> -<span id="LID2532" rel="#L2532">2532</span> -<span id="LID2533" rel="#L2533">2533</span> -<span id="LID2534" rel="#L2534">2534</span> -<span id="LID2535" rel="#L2535">2535</span> -<span id="LID2536" rel="#L2536">2536</span> -<span id="LID2537" rel="#L2537">2537</span> -<span id="LID2538" rel="#L2538">2538</span> -<span id="LID2539" rel="#L2539">2539</span> -<span id="LID2540" rel="#L2540">2540</span> -<span id="LID2541" rel="#L2541">2541</span> -<span id="LID2542" rel="#L2542">2542</span> -<span id="LID2543" rel="#L2543">2543</span> -<span id="LID2544" rel="#L2544">2544</span> -<span id="LID2545" rel="#L2545">2545</span> -<span id="LID2546" rel="#L2546">2546</span> -<span id="LID2547" rel="#L2547">2547</span> -<span id="LID2548" rel="#L2548">2548</span> -<span id="LID2549" rel="#L2549">2549</span> -<span id="LID2550" rel="#L2550">2550</span> -<span id="LID2551" rel="#L2551">2551</span> -<span id="LID2552" rel="#L2552">2552</span> -<span id="LID2553" rel="#L2553">2553</span> -<span id="LID2554" rel="#L2554">2554</span> -<span id="LID2555" rel="#L2555">2555</span> -<span id="LID2556" rel="#L2556">2556</span> -<span id="LID2557" rel="#L2557">2557</span> -<span id="LID2558" rel="#L2558">2558</span> -<span id="LID2559" rel="#L2559">2559</span> -<span id="LID2560" rel="#L2560">2560</span> -<span id="LID2561" rel="#L2561">2561</span> -<span id="LID2562" rel="#L2562">2562</span> -<span id="LID2563" rel="#L2563">2563</span> -<span id="LID2564" rel="#L2564">2564</span> -<span id="LID2565" rel="#L2565">2565</span> -<span id="LID2566" rel="#L2566">2566</span> -<span id="LID2567" rel="#L2567">2567</span> -<span id="LID2568" rel="#L2568">2568</span> -<span id="LID2569" rel="#L2569">2569</span> -<span id="LID2570" rel="#L2570">2570</span> -<span id="LID2571" rel="#L2571">2571</span> -<span id="LID2572" rel="#L2572">2572</span> -<span id="LID2573" rel="#L2573">2573</span> -<span id="LID2574" rel="#L2574">2574</span> -<span id="LID2575" rel="#L2575">2575</span> -<span id="LID2576" rel="#L2576">2576</span> -<span id="LID2577" rel="#L2577">2577</span> -<span id="LID2578" rel="#L2578">2578</span> -<span id="LID2579" rel="#L2579">2579</span> -<span id="LID2580" rel="#L2580">2580</span> -<span id="LID2581" rel="#L2581">2581</span> -<span id="LID2582" rel="#L2582">2582</span> -<span id="LID2583" rel="#L2583">2583</span> -<span id="LID2584" rel="#L2584">2584</span> -<span id="LID2585" rel="#L2585">2585</span> -<span id="LID2586" rel="#L2586">2586</span> -<span id="LID2587" rel="#L2587">2587</span> -<span id="LID2588" rel="#L2588">2588</span> -<span id="LID2589" rel="#L2589">2589</span> -<span id="LID2590" rel="#L2590">2590</span> -<span id="LID2591" rel="#L2591">2591</span> -<span id="LID2592" rel="#L2592">2592</span> -<span id="LID2593" rel="#L2593">2593</span> -<span id="LID2594" rel="#L2594">2594</span> -<span id="LID2595" rel="#L2595">2595</span> -<span id="LID2596" rel="#L2596">2596</span> -<span id="LID2597" rel="#L2597">2597</span> -<span id="LID2598" rel="#L2598">2598</span> -<span id="LID2599" rel="#L2599">2599</span> -<span id="LID2600" rel="#L2600">2600</span> -<span id="LID2601" rel="#L2601">2601</span> -<span id="LID2602" rel="#L2602">2602</span> -<span id="LID2603" rel="#L2603">2603</span> -<span id="LID2604" rel="#L2604">2604</span> -<span id="LID2605" rel="#L2605">2605</span> -<span id="LID2606" rel="#L2606">2606</span> -<span id="LID2607" rel="#L2607">2607</span> -<span id="LID2608" rel="#L2608">2608</span> -<span id="LID2609" rel="#L2609">2609</span> -<span id="LID2610" rel="#L2610">2610</span> -<span id="LID2611" rel="#L2611">2611</span> -<span id="LID2612" rel="#L2612">2612</span> -<span id="LID2613" rel="#L2613">2613</span> -<span id="LID2614" rel="#L2614">2614</span> -<span id="LID2615" rel="#L2615">2615</span> -<span id="LID2616" rel="#L2616">2616</span> -<span id="LID2617" rel="#L2617">2617</span> -<span id="LID2618" rel="#L2618">2618</span> -<span id="LID2619" rel="#L2619">2619</span> -<span id="LID2620" rel="#L2620">2620</span> -<span id="LID2621" rel="#L2621">2621</span> -<span id="LID2622" rel="#L2622">2622</span> -<span id="LID2623" rel="#L2623">2623</span> -<span id="LID2624" rel="#L2624">2624</span> -<span id="LID2625" rel="#L2625">2625</span> -<span id="LID2626" rel="#L2626">2626</span> -<span id="LID2627" rel="#L2627">2627</span> -<span id="LID2628" rel="#L2628">2628</span> -<span id="LID2629" rel="#L2629">2629</span> -<span id="LID2630" rel="#L2630">2630</span> -<span id="LID2631" rel="#L2631">2631</span> -<span id="LID2632" rel="#L2632">2632</span> -<span id="LID2633" rel="#L2633">2633</span> -<span id="LID2634" rel="#L2634">2634</span> -<span id="LID2635" rel="#L2635">2635</span> -<span id="LID2636" rel="#L2636">2636</span> -<span id="LID2637" rel="#L2637">2637</span> -<span id="LID2638" rel="#L2638">2638</span> -<span id="LID2639" rel="#L2639">2639</span> -<span id="LID2640" rel="#L2640">2640</span> -<span id="LID2641" rel="#L2641">2641</span> -<span id="LID2642" rel="#L2642">2642</span> -<span id="LID2643" rel="#L2643">2643</span> -<span id="LID2644" rel="#L2644">2644</span> -<span id="LID2645" rel="#L2645">2645</span> -<span id="LID2646" rel="#L2646">2646</span> -<span id="LID2647" rel="#L2647">2647</span> -<span id="LID2648" rel="#L2648">2648</span> -<span id="LID2649" rel="#L2649">2649</span> -<span id="LID2650" rel="#L2650">2650</span> -<span id="LID2651" rel="#L2651">2651</span> -<span id="LID2652" rel="#L2652">2652</span> -<span id="LID2653" rel="#L2653">2653</span> -<span id="LID2654" rel="#L2654">2654</span> -<span id="LID2655" rel="#L2655">2655</span> -<span id="LID2656" rel="#L2656">2656</span> -<span id="LID2657" rel="#L2657">2657</span> -<span id="LID2658" rel="#L2658">2658</span> -<span id="LID2659" rel="#L2659">2659</span> -<span id="LID2660" rel="#L2660">2660</span> -<span id="LID2661" rel="#L2661">2661</span> -<span id="LID2662" rel="#L2662">2662</span> -<span id="LID2663" rel="#L2663">2663</span> -<span id="LID2664" rel="#L2664">2664</span> -<span id="LID2665" rel="#L2665">2665</span> -<span id="LID2666" rel="#L2666">2666</span> -<span id="LID2667" rel="#L2667">2667</span> -<span id="LID2668" rel="#L2668">2668</span> -<span id="LID2669" rel="#L2669">2669</span> -<span id="LID2670" rel="#L2670">2670</span> -<span id="LID2671" rel="#L2671">2671</span> -<span id="LID2672" rel="#L2672">2672</span> -<span id="LID2673" rel="#L2673">2673</span> -<span id="LID2674" rel="#L2674">2674</span> -<span id="LID2675" rel="#L2675">2675</span> -<span id="LID2676" rel="#L2676">2676</span> -<span id="LID2677" rel="#L2677">2677</span> -<span id="LID2678" rel="#L2678">2678</span> -<span id="LID2679" rel="#L2679">2679</span> -<span id="LID2680" rel="#L2680">2680</span> -<span id="LID2681" rel="#L2681">2681</span> -<span id="LID2682" rel="#L2682">2682</span> -<span id="LID2683" rel="#L2683">2683</span> -<span id="LID2684" rel="#L2684">2684</span> -<span id="LID2685" rel="#L2685">2685</span> -<span id="LID2686" rel="#L2686">2686</span> -<span id="LID2687" rel="#L2687">2687</span> -<span id="LID2688" rel="#L2688">2688</span> -<span id="LID2689" rel="#L2689">2689</span> -<span id="LID2690" rel="#L2690">2690</span> -<span id="LID2691" rel="#L2691">2691</span> -<span id="LID2692" rel="#L2692">2692</span> -<span id="LID2693" rel="#L2693">2693</span> -<span id="LID2694" rel="#L2694">2694</span> -<span id="LID2695" rel="#L2695">2695</span> -<span id="LID2696" rel="#L2696">2696</span> -<span id="LID2697" rel="#L2697">2697</span> -<span id="LID2698" rel="#L2698">2698</span> -<span id="LID2699" rel="#L2699">2699</span> -<span id="LID2700" rel="#L2700">2700</span> -<span id="LID2701" rel="#L2701">2701</span> -<span id="LID2702" rel="#L2702">2702</span> -<span id="LID2703" rel="#L2703">2703</span> -<span id="LID2704" rel="#L2704">2704</span> -<span id="LID2705" rel="#L2705">2705</span> -<span id="LID2706" rel="#L2706">2706</span> -<span id="LID2707" rel="#L2707">2707</span> -<span id="LID2708" rel="#L2708">2708</span> -<span id="LID2709" rel="#L2709">2709</span> -<span id="LID2710" rel="#L2710">2710</span> -<span id="LID2711" rel="#L2711">2711</span> -<span id="LID2712" rel="#L2712">2712</span> -<span id="LID2713" rel="#L2713">2713</span> -<span id="LID2714" rel="#L2714">2714</span> -<span id="LID2715" rel="#L2715">2715</span> -<span id="LID2716" rel="#L2716">2716</span> -<span id="LID2717" rel="#L2717">2717</span> -<span id="LID2718" rel="#L2718">2718</span> -<span id="LID2719" rel="#L2719">2719</span> -<span id="LID2720" rel="#L2720">2720</span> -<span id="LID2721" rel="#L2721">2721</span> -<span id="LID2722" rel="#L2722">2722</span> -<span id="LID2723" rel="#L2723">2723</span> -<span id="LID2724" rel="#L2724">2724</span> -<span id="LID2725" rel="#L2725">2725</span> -<span id="LID2726" rel="#L2726">2726</span> -<span id="LID2727" rel="#L2727">2727</span> -<span id="LID2728" rel="#L2728">2728</span> -<span id="LID2729" rel="#L2729">2729</span> -<span id="LID2730" rel="#L2730">2730</span> -<span id="LID2731" rel="#L2731">2731</span> -<span id="LID2732" rel="#L2732">2732</span> -<span id="LID2733" rel="#L2733">2733</span> -<span id="LID2734" rel="#L2734">2734</span> -<span id="LID2735" rel="#L2735">2735</span> -<span id="LID2736" rel="#L2736">2736</span> -<span id="LID2737" rel="#L2737">2737</span> -<span id="LID2738" rel="#L2738">2738</span> -<span id="LID2739" rel="#L2739">2739</span> -<span id="LID2740" rel="#L2740">2740</span> -<span id="LID2741" rel="#L2741">2741</span> -<span id="LID2742" rel="#L2742">2742</span> -<span id="LID2743" rel="#L2743">2743</span> -<span id="LID2744" rel="#L2744">2744</span> -<span id="LID2745" rel="#L2745">2745</span> -<span id="LID2746" rel="#L2746">2746</span> -<span id="LID2747" rel="#L2747">2747</span> -<span id="LID2748" rel="#L2748">2748</span> -<span id="LID2749" rel="#L2749">2749</span> -<span id="LID2750" rel="#L2750">2750</span> -<span id="LID2751" rel="#L2751">2751</span> -<span id="LID2752" rel="#L2752">2752</span> -<span id="LID2753" rel="#L2753">2753</span> -<span id="LID2754" rel="#L2754">2754</span> -<span id="LID2755" rel="#L2755">2755</span> -<span id="LID2756" rel="#L2756">2756</span> -<span id="LID2757" rel="#L2757">2757</span> -<span id="LID2758" rel="#L2758">2758</span> -<span id="LID2759" rel="#L2759">2759</span> -<span id="LID2760" rel="#L2760">2760</span> -<span id="LID2761" rel="#L2761">2761</span> -<span id="LID2762" rel="#L2762">2762</span> -<span id="LID2763" rel="#L2763">2763</span> -<span id="LID2764" rel="#L2764">2764</span> -<span id="LID2765" rel="#L2765">2765</span> -<span id="LID2766" rel="#L2766">2766</span> -<span id="LID2767" rel="#L2767">2767</span> -<span id="LID2768" rel="#L2768">2768</span> -<span id="LID2769" rel="#L2769">2769</span> -<span id="LID2770" rel="#L2770">2770</span> -<span id="LID2771" rel="#L2771">2771</span> -<span id="LID2772" rel="#L2772">2772</span> -<span id="LID2773" rel="#L2773">2773</span> -<span id="LID2774" rel="#L2774">2774</span> -<span id="LID2775" rel="#L2775">2775</span> -<span id="LID2776" rel="#L2776">2776</span> -<span id="LID2777" rel="#L2777">2777</span> -<span id="LID2778" rel="#L2778">2778</span> -<span id="LID2779" rel="#L2779">2779</span> -<span id="LID2780" rel="#L2780">2780</span> -<span id="LID2781" rel="#L2781">2781</span> -<span id="LID2782" rel="#L2782">2782</span> -<span id="LID2783" rel="#L2783">2783</span> -<span id="LID2784" rel="#L2784">2784</span> -<span id="LID2785" rel="#L2785">2785</span> -<span id="LID2786" rel="#L2786">2786</span> -<span id="LID2787" rel="#L2787">2787</span> -<span id="LID2788" rel="#L2788">2788</span> -<span id="LID2789" rel="#L2789">2789</span> -<span id="LID2790" rel="#L2790">2790</span> -<span id="LID2791" rel="#L2791">2791</span> -<span id="LID2792" rel="#L2792">2792</span> -<span id="LID2793" rel="#L2793">2793</span> -<span id="LID2794" rel="#L2794">2794</span> -<span id="LID2795" rel="#L2795">2795</span> -<span id="LID2796" rel="#L2796">2796</span> -<span id="LID2797" rel="#L2797">2797</span> -<span id="LID2798" rel="#L2798">2798</span> -<span id="LID2799" rel="#L2799">2799</span> -<span id="LID2800" rel="#L2800">2800</span> -<span id="LID2801" rel="#L2801">2801</span> -<span id="LID2802" rel="#L2802">2802</span> -<span id="LID2803" rel="#L2803">2803</span> -<span id="LID2804" rel="#L2804">2804</span> -<span id="LID2805" rel="#L2805">2805</span> -<span id="LID2806" rel="#L2806">2806</span> -<span id="LID2807" rel="#L2807">2807</span> -<span id="LID2808" rel="#L2808">2808</span> -<span id="LID2809" rel="#L2809">2809</span> -<span id="LID2810" rel="#L2810">2810</span> -<span id="LID2811" rel="#L2811">2811</span> -<span id="LID2812" rel="#L2812">2812</span> -<span id="LID2813" rel="#L2813">2813</span> -<span id="LID2814" rel="#L2814">2814</span> -<span id="LID2815" rel="#L2815">2815</span> -<span id="LID2816" rel="#L2816">2816</span> -<span id="LID2817" rel="#L2817">2817</span> -<span id="LID2818" rel="#L2818">2818</span> -<span id="LID2819" rel="#L2819">2819</span> -<span id="LID2820" rel="#L2820">2820</span> -<span id="LID2821" rel="#L2821">2821</span> -<span id="LID2822" rel="#L2822">2822</span> -<span id="LID2823" rel="#L2823">2823</span> -<span id="LID2824" rel="#L2824">2824</span> -<span id="LID2825" rel="#L2825">2825</span> -<span id="LID2826" rel="#L2826">2826</span> -<span id="LID2827" rel="#L2827">2827</span> -<span id="LID2828" rel="#L2828">2828</span> -<span id="LID2829" rel="#L2829">2829</span> -<span id="LID2830" rel="#L2830">2830</span> -<span id="LID2831" rel="#L2831">2831</span> -<span id="LID2832" rel="#L2832">2832</span> -<span id="LID2833" rel="#L2833">2833</span> -<span id="LID2834" rel="#L2834">2834</span> -<span id="LID2835" rel="#L2835">2835</span> -<span id="LID2836" rel="#L2836">2836</span> -<span id="LID2837" rel="#L2837">2837</span> -<span id="LID2838" rel="#L2838">2838</span> -<span id="LID2839" rel="#L2839">2839</span> -<span id="LID2840" rel="#L2840">2840</span> -<span id="LID2841" rel="#L2841">2841</span> -<span id="LID2842" rel="#L2842">2842</span> -<span id="LID2843" rel="#L2843">2843</span> -<span id="LID2844" rel="#L2844">2844</span> -<span id="LID2845" rel="#L2845">2845</span> -<span id="LID2846" rel="#L2846">2846</span> -<span id="LID2847" rel="#L2847">2847</span> -<span id="LID2848" rel="#L2848">2848</span> -<span id="LID2849" rel="#L2849">2849</span> -<span id="LID2850" rel="#L2850">2850</span> -<span id="LID2851" rel="#L2851">2851</span> -<span id="LID2852" rel="#L2852">2852</span> -<span id="LID2853" rel="#L2853">2853</span> -<span id="LID2854" rel="#L2854">2854</span> -<span id="LID2855" rel="#L2855">2855</span> -<span id="LID2856" rel="#L2856">2856</span> -<span id="LID2857" rel="#L2857">2857</span> -<span id="LID2858" rel="#L2858">2858</span> -<span id="LID2859" rel="#L2859">2859</span> -<span id="LID2860" rel="#L2860">2860</span> -<span id="LID2861" rel="#L2861">2861</span> -<span id="LID2862" rel="#L2862">2862</span> -<span id="LID2863" rel="#L2863">2863</span> -<span id="LID2864" rel="#L2864">2864</span> -<span id="LID2865" rel="#L2865">2865</span> -<span id="LID2866" rel="#L2866">2866</span> -<span id="LID2867" rel="#L2867">2867</span> -<span id="LID2868" rel="#L2868">2868</span> -<span id="LID2869" rel="#L2869">2869</span> -<span id="LID2870" rel="#L2870">2870</span> -<span id="LID2871" rel="#L2871">2871</span> -<span id="LID2872" rel="#L2872">2872</span> -<span id="LID2873" rel="#L2873">2873</span> -<span id="LID2874" rel="#L2874">2874</span> -<span id="LID2875" rel="#L2875">2875</span> -<span id="LID2876" rel="#L2876">2876</span> -<span id="LID2877" rel="#L2877">2877</span> -<span id="LID2878" rel="#L2878">2878</span> -<span id="LID2879" rel="#L2879">2879</span> -<span id="LID2880" rel="#L2880">2880</span> -<span id="LID2881" rel="#L2881">2881</span> -<span id="LID2882" rel="#L2882">2882</span> -<span id="LID2883" rel="#L2883">2883</span> -<span id="LID2884" rel="#L2884">2884</span> -<span id="LID2885" rel="#L2885">2885</span> -<span id="LID2886" rel="#L2886">2886</span> -<span id="LID2887" rel="#L2887">2887</span> -<span id="LID2888" rel="#L2888">2888</span> -<span id="LID2889" rel="#L2889">2889</span> -<span id="LID2890" rel="#L2890">2890</span> -<span id="LID2891" rel="#L2891">2891</span> -<span id="LID2892" rel="#L2892">2892</span> -<span id="LID2893" rel="#L2893">2893</span> -<span id="LID2894" rel="#L2894">2894</span> -<span id="LID2895" rel="#L2895">2895</span> -<span id="LID2896" rel="#L2896">2896</span> -<span id="LID2897" rel="#L2897">2897</span> -<span id="LID2898" rel="#L2898">2898</span> -<span id="LID2899" rel="#L2899">2899</span> -<span id="LID2900" rel="#L2900">2900</span> -<span id="LID2901" rel="#L2901">2901</span> -<span id="LID2902" rel="#L2902">2902</span> -<span id="LID2903" rel="#L2903">2903</span> -<span id="LID2904" rel="#L2904">2904</span> -<span id="LID2905" rel="#L2905">2905</span> -<span id="LID2906" rel="#L2906">2906</span> -<span id="LID2907" rel="#L2907">2907</span> -<span id="LID2908" rel="#L2908">2908</span> -<span id="LID2909" rel="#L2909">2909</span> -<span id="LID2910" rel="#L2910">2910</span> -<span id="LID2911" rel="#L2911">2911</span> -<span id="LID2912" rel="#L2912">2912</span> -<span id="LID2913" rel="#L2913">2913</span> -<span id="LID2914" rel="#L2914">2914</span> -<span id="LID2915" rel="#L2915">2915</span> -<span id="LID2916" rel="#L2916">2916</span> -<span id="LID2917" rel="#L2917">2917</span> -<span id="LID2918" rel="#L2918">2918</span> -<span id="LID2919" rel="#L2919">2919</span> -<span id="LID2920" rel="#L2920">2920</span> -<span id="LID2921" rel="#L2921">2921</span> -<span id="LID2922" rel="#L2922">2922</span> -<span id="LID2923" rel="#L2923">2923</span> -<span id="LID2924" rel="#L2924">2924</span> -<span id="LID2925" rel="#L2925">2925</span> -<span id="LID2926" rel="#L2926">2926</span> -<span id="LID2927" rel="#L2927">2927</span> -<span id="LID2928" rel="#L2928">2928</span> -<span id="LID2929" rel="#L2929">2929</span> -<span id="LID2930" rel="#L2930">2930</span> -<span id="LID2931" rel="#L2931">2931</span> -<span id="LID2932" rel="#L2932">2932</span> -<span id="LID2933" rel="#L2933">2933</span> -<span id="LID2934" rel="#L2934">2934</span> -<span id="LID2935" rel="#L2935">2935</span> -<span id="LID2936" rel="#L2936">2936</span> -<span id="LID2937" rel="#L2937">2937</span> -<span id="LID2938" rel="#L2938">2938</span> -<span id="LID2939" rel="#L2939">2939</span> -<span id="LID2940" rel="#L2940">2940</span> -<span id="LID2941" rel="#L2941">2941</span> -<span id="LID2942" rel="#L2942">2942</span> -<span id="LID2943" rel="#L2943">2943</span> -<span id="LID2944" rel="#L2944">2944</span> -<span id="LID2945" rel="#L2945">2945</span> -<span id="LID2946" rel="#L2946">2946</span> -<span id="LID2947" rel="#L2947">2947</span> -<span id="LID2948" rel="#L2948">2948</span> -<span id="LID2949" rel="#L2949">2949</span> -<span id="LID2950" rel="#L2950">2950</span> -<span id="LID2951" rel="#L2951">2951</span> -<span id="LID2952" rel="#L2952">2952</span> -<span id="LID2953" rel="#L2953">2953</span> -<span id="LID2954" rel="#L2954">2954</span> -<span id="LID2955" rel="#L2955">2955</span> -<span id="LID2956" rel="#L2956">2956</span> -<span id="LID2957" rel="#L2957">2957</span> -<span id="LID2958" rel="#L2958">2958</span> -<span id="LID2959" rel="#L2959">2959</span> -<span id="LID2960" rel="#L2960">2960</span> -<span id="LID2961" rel="#L2961">2961</span> -<span id="LID2962" rel="#L2962">2962</span> -<span id="LID2963" rel="#L2963">2963</span> -<span id="LID2964" rel="#L2964">2964</span> -<span id="LID2965" rel="#L2965">2965</span> -<span id="LID2966" rel="#L2966">2966</span> -<span id="LID2967" rel="#L2967">2967</span> -<span id="LID2968" rel="#L2968">2968</span> -<span id="LID2969" rel="#L2969">2969</span> -<span id="LID2970" rel="#L2970">2970</span> -<span id="LID2971" rel="#L2971">2971</span> -<span id="LID2972" rel="#L2972">2972</span> -<span id="LID2973" rel="#L2973">2973</span> -<span id="LID2974" rel="#L2974">2974</span> -<span id="LID2975" rel="#L2975">2975</span> -<span id="LID2976" rel="#L2976">2976</span> -<span id="LID2977" rel="#L2977">2977</span> -<span id="LID2978" rel="#L2978">2978</span> -<span id="LID2979" rel="#L2979">2979</span> -<span id="LID2980" rel="#L2980">2980</span> -<span id="LID2981" rel="#L2981">2981</span> -<span id="LID2982" rel="#L2982">2982</span> -<span id="LID2983" rel="#L2983">2983</span> -<span id="LID2984" rel="#L2984">2984</span> -<span id="LID2985" rel="#L2985">2985</span> -<span id="LID2986" rel="#L2986">2986</span> -<span id="LID2987" rel="#L2987">2987</span> -<span id="LID2988" rel="#L2988">2988</span> -<span id="LID2989" rel="#L2989">2989</span> -<span id="LID2990" rel="#L2990">2990</span> -<span id="LID2991" rel="#L2991">2991</span> -<span id="LID2992" rel="#L2992">2992</span> -<span id="LID2993" rel="#L2993">2993</span> -<span id="LID2994" rel="#L2994">2994</span> -<span id="LID2995" rel="#L2995">2995</span> -<span id="LID2996" rel="#L2996">2996</span> -<span id="LID2997" rel="#L2997">2997</span> -<span id="LID2998" rel="#L2998">2998</span> -<span id="LID2999" rel="#L2999">2999</span> -<span id="LID3000" rel="#L3000">3000</span> -<span id="LID3001" rel="#L3001">3001</span> -<span id="LID3002" rel="#L3002">3002</span> -<span id="LID3003" rel="#L3003">3003</span> -<span id="LID3004" rel="#L3004">3004</span> -<span id="LID3005" rel="#L3005">3005</span> -<span id="LID3006" rel="#L3006">3006</span> -<span id="LID3007" rel="#L3007">3007</span> -<span id="LID3008" rel="#L3008">3008</span> -<span id="LID3009" rel="#L3009">3009</span> -<span id="LID3010" rel="#L3010">3010</span> -<span id="LID3011" rel="#L3011">3011</span> -<span id="LID3012" rel="#L3012">3012</span> -<span id="LID3013" rel="#L3013">3013</span> -<span id="LID3014" rel="#L3014">3014</span> -<span id="LID3015" rel="#L3015">3015</span> -<span id="LID3016" rel="#L3016">3016</span> -<span id="LID3017" rel="#L3017">3017</span> -<span id="LID3018" rel="#L3018">3018</span> -<span id="LID3019" rel="#L3019">3019</span> -<span id="LID3020" rel="#L3020">3020</span> -<span id="LID3021" rel="#L3021">3021</span> -<span id="LID3022" rel="#L3022">3022</span> -<span id="LID3023" rel="#L3023">3023</span> -<span id="LID3024" rel="#L3024">3024</span> -<span id="LID3025" rel="#L3025">3025</span> -<span id="LID3026" rel="#L3026">3026</span> -<span id="LID3027" rel="#L3027">3027</span> -<span id="LID3028" rel="#L3028">3028</span> -<span id="LID3029" rel="#L3029">3029</span> -<span id="LID3030" rel="#L3030">3030</span> -<span id="LID3031" rel="#L3031">3031</span> -<span id="LID3032" rel="#L3032">3032</span> -<span id="LID3033" rel="#L3033">3033</span> -<span id="LID3034" rel="#L3034">3034</span> -<span id="LID3035" rel="#L3035">3035</span> -<span id="LID3036" rel="#L3036">3036</span> -<span id="LID3037" rel="#L3037">3037</span> -<span id="LID3038" rel="#L3038">3038</span> -<span id="LID3039" rel="#L3039">3039</span> -<span id="LID3040" rel="#L3040">3040</span> -<span id="LID3041" rel="#L3041">3041</span> -<span id="LID3042" rel="#L3042">3042</span> -<span id="LID3043" rel="#L3043">3043</span> -<span id="LID3044" rel="#L3044">3044</span> -<span id="LID3045" rel="#L3045">3045</span> -<span id="LID3046" rel="#L3046">3046</span> -<span id="LID3047" rel="#L3047">3047</span> -<span id="LID3048" rel="#L3048">3048</span> -<span id="LID3049" rel="#L3049">3049</span> -<span id="LID3050" rel="#L3050">3050</span> -<span id="LID3051" rel="#L3051">3051</span> -<span id="LID3052" rel="#L3052">3052</span> -<span id="LID3053" rel="#L3053">3053</span> -<span id="LID3054" rel="#L3054">3054</span> -<span id="LID3055" rel="#L3055">3055</span> -<span id="LID3056" rel="#L3056">3056</span> -<span id="LID3057" rel="#L3057">3057</span> -<span id="LID3058" rel="#L3058">3058</span> -<span id="LID3059" rel="#L3059">3059</span> -<span id="LID3060" rel="#L3060">3060</span> -<span id="LID3061" rel="#L3061">3061</span> -<span id="LID3062" rel="#L3062">3062</span> -<span id="LID3063" rel="#L3063">3063</span> -<span id="LID3064" rel="#L3064">3064</span> -<span id="LID3065" rel="#L3065">3065</span> -<span id="LID3066" rel="#L3066">3066</span> -<span id="LID3067" rel="#L3067">3067</span> -<span id="LID3068" rel="#L3068">3068</span> -<span id="LID3069" rel="#L3069">3069</span> -<span id="LID3070" rel="#L3070">3070</span> -<span id="LID3071" rel="#L3071">3071</span> -<span id="LID3072" rel="#L3072">3072</span> -<span id="LID3073" rel="#L3073">3073</span> -<span id="LID3074" rel="#L3074">3074</span> -<span id="LID3075" rel="#L3075">3075</span> -<span id="LID3076" rel="#L3076">3076</span> -<span id="LID3077" rel="#L3077">3077</span> -<span id="LID3078" rel="#L3078">3078</span> -<span id="LID3079" rel="#L3079">3079</span> -<span id="LID3080" rel="#L3080">3080</span> -<span id="LID3081" rel="#L3081">3081</span> -<span id="LID3082" rel="#L3082">3082</span> -<span id="LID3083" rel="#L3083">3083</span> -<span id="LID3084" rel="#L3084">3084</span> -<span id="LID3085" rel="#L3085">3085</span> -<span id="LID3086" rel="#L3086">3086</span> -<span id="LID3087" rel="#L3087">3087</span> -<span id="LID3088" rel="#L3088">3088</span> -<span id="LID3089" rel="#L3089">3089</span> -<span id="LID3090" rel="#L3090">3090</span> -<span id="LID3091" rel="#L3091">3091</span> -<span id="LID3092" rel="#L3092">3092</span> -<span id="LID3093" rel="#L3093">3093</span> -<span id="LID3094" rel="#L3094">3094</span> -<span id="LID3095" rel="#L3095">3095</span> -<span id="LID3096" rel="#L3096">3096</span> -<span id="LID3097" rel="#L3097">3097</span> -<span id="LID3098" rel="#L3098">3098</span> -<span id="LID3099" rel="#L3099">3099</span> -<span id="LID3100" rel="#L3100">3100</span> -<span id="LID3101" rel="#L3101">3101</span> -<span id="LID3102" rel="#L3102">3102</span> -<span id="LID3103" rel="#L3103">3103</span> -<span id="LID3104" rel="#L3104">3104</span> -<span id="LID3105" rel="#L3105">3105</span> -<span id="LID3106" rel="#L3106">3106</span> -<span id="LID3107" rel="#L3107">3107</span> -<span id="LID3108" rel="#L3108">3108</span> -<span id="LID3109" rel="#L3109">3109</span> -<span id="LID3110" rel="#L3110">3110</span> -<span id="LID3111" rel="#L3111">3111</span> -<span id="LID3112" rel="#L3112">3112</span> -<span id="LID3113" rel="#L3113">3113</span> -<span id="LID3114" rel="#L3114">3114</span> -<span id="LID3115" rel="#L3115">3115</span> -<span id="LID3116" rel="#L3116">3116</span> -<span id="LID3117" rel="#L3117">3117</span> -<span id="LID3118" rel="#L3118">3118</span> -<span id="LID3119" rel="#L3119">3119</span> -<span id="LID3120" rel="#L3120">3120</span> -<span id="LID3121" rel="#L3121">3121</span> -<span id="LID3122" rel="#L3122">3122</span> -<span id="LID3123" rel="#L3123">3123</span> -<span id="LID3124" rel="#L3124">3124</span> -<span id="LID3125" rel="#L3125">3125</span> -<span id="LID3126" rel="#L3126">3126</span> -<span id="LID3127" rel="#L3127">3127</span> -<span id="LID3128" rel="#L3128">3128</span> -<span id="LID3129" rel="#L3129">3129</span> -<span id="LID3130" rel="#L3130">3130</span> -<span id="LID3131" rel="#L3131">3131</span> -<span id="LID3132" rel="#L3132">3132</span> -<span id="LID3133" rel="#L3133">3133</span> -<span id="LID3134" rel="#L3134">3134</span> -<span id="LID3135" rel="#L3135">3135</span> -<span id="LID3136" rel="#L3136">3136</span> -<span id="LID3137" rel="#L3137">3137</span> -<span id="LID3138" rel="#L3138">3138</span> -<span id="LID3139" rel="#L3139">3139</span> -<span id="LID3140" rel="#L3140">3140</span> -<span id="LID3141" rel="#L3141">3141</span> -<span id="LID3142" rel="#L3142">3142</span> -<span id="LID3143" rel="#L3143">3143</span> -<span id="LID3144" rel="#L3144">3144</span> -<span id="LID3145" rel="#L3145">3145</span> -<span id="LID3146" rel="#L3146">3146</span> -<span id="LID3147" rel="#L3147">3147</span> -<span id="LID3148" rel="#L3148">3148</span> -<span id="LID3149" rel="#L3149">3149</span> -<span id="LID3150" rel="#L3150">3150</span> -<span id="LID3151" rel="#L3151">3151</span> -<span id="LID3152" rel="#L3152">3152</span> -<span id="LID3153" rel="#L3153">3153</span> -<span id="LID3154" rel="#L3154">3154</span> -<span id="LID3155" rel="#L3155">3155</span> -<span id="LID3156" rel="#L3156">3156</span> -<span id="LID3157" rel="#L3157">3157</span> -<span id="LID3158" rel="#L3158">3158</span> -<span id="LID3159" rel="#L3159">3159</span> -<span id="LID3160" rel="#L3160">3160</span> -<span id="LID3161" rel="#L3161">3161</span> -<span id="LID3162" rel="#L3162">3162</span> -<span id="LID3163" rel="#L3163">3163</span> -<span id="LID3164" rel="#L3164">3164</span> -<span id="LID3165" rel="#L3165">3165</span> -<span id="LID3166" rel="#L3166">3166</span> -<span id="LID3167" rel="#L3167">3167</span> -<span id="LID3168" rel="#L3168">3168</span> -<span id="LID3169" rel="#L3169">3169</span> -<span id="LID3170" rel="#L3170">3170</span> -<span id="LID3171" rel="#L3171">3171</span> -<span id="LID3172" rel="#L3172">3172</span> -<span id="LID3173" rel="#L3173">3173</span> -<span id="LID3174" rel="#L3174">3174</span> -<span id="LID3175" rel="#L3175">3175</span> -<span id="LID3176" rel="#L3176">3176</span> -<span id="LID3177" rel="#L3177">3177</span> -<span id="LID3178" rel="#L3178">3178</span> -<span id="LID3179" rel="#L3179">3179</span> -<span id="LID3180" rel="#L3180">3180</span> -<span id="LID3181" rel="#L3181">3181</span> -<span id="LID3182" rel="#L3182">3182</span> -<span id="LID3183" rel="#L3183">3183</span> -<span id="LID3184" rel="#L3184">3184</span> -<span id="LID3185" rel="#L3185">3185</span> -<span id="LID3186" rel="#L3186">3186</span> -<span id="LID3187" rel="#L3187">3187</span> -<span id="LID3188" rel="#L3188">3188</span> -<span id="LID3189" rel="#L3189">3189</span> -<span id="LID3190" rel="#L3190">3190</span> -<span id="LID3191" rel="#L3191">3191</span> -<span id="LID3192" rel="#L3192">3192</span> -<span id="LID3193" rel="#L3193">3193</span> -<span id="LID3194" rel="#L3194">3194</span> -<span id="LID3195" rel="#L3195">3195</span> -<span id="LID3196" rel="#L3196">3196</span> -<span id="LID3197" rel="#L3197">3197</span> -<span id="LID3198" rel="#L3198">3198</span> -<span id="LID3199" rel="#L3199">3199</span> -<span id="LID3200" rel="#L3200">3200</span> -<span id="LID3201" rel="#L3201">3201</span> -<span id="LID3202" rel="#L3202">3202</span> -<span id="LID3203" rel="#L3203">3203</span> -<span id="LID3204" rel="#L3204">3204</span> -<span id="LID3205" rel="#L3205">3205</span> -<span id="LID3206" rel="#L3206">3206</span> -<span id="LID3207" rel="#L3207">3207</span> -<span id="LID3208" rel="#L3208">3208</span> -<span id="LID3209" rel="#L3209">3209</span> -<span id="LID3210" rel="#L3210">3210</span> -<span id="LID3211" rel="#L3211">3211</span> -<span id="LID3212" rel="#L3212">3212</span> -<span id="LID3213" rel="#L3213">3213</span> -<span id="LID3214" rel="#L3214">3214</span> -<span id="LID3215" rel="#L3215">3215</span> -<span id="LID3216" rel="#L3216">3216</span> -<span id="LID3217" rel="#L3217">3217</span> -<span id="LID3218" rel="#L3218">3218</span> -<span id="LID3219" rel="#L3219">3219</span> -<span id="LID3220" rel="#L3220">3220</span> -<span id="LID3221" rel="#L3221">3221</span> -<span id="LID3222" rel="#L3222">3222</span> -<span id="LID3223" rel="#L3223">3223</span> -<span id="LID3224" rel="#L3224">3224</span> -<span id="LID3225" rel="#L3225">3225</span> -<span id="LID3226" rel="#L3226">3226</span> -<span id="LID3227" rel="#L3227">3227</span> -<span id="LID3228" rel="#L3228">3228</span> -<span id="LID3229" rel="#L3229">3229</span> -<span id="LID3230" rel="#L3230">3230</span> -<span id="LID3231" rel="#L3231">3231</span> -<span id="LID3232" rel="#L3232">3232</span> -<span id="LID3233" rel="#L3233">3233</span> -<span id="LID3234" rel="#L3234">3234</span> -<span id="LID3235" rel="#L3235">3235</span> -<span id="LID3236" rel="#L3236">3236</span> -<span id="LID3237" rel="#L3237">3237</span> -<span id="LID3238" rel="#L3238">3238</span> -<span id="LID3239" rel="#L3239">3239</span> -<span id="LID3240" rel="#L3240">3240</span> -<span id="LID3241" rel="#L3241">3241</span> -<span id="LID3242" rel="#L3242">3242</span> -<span id="LID3243" rel="#L3243">3243</span> -<span id="LID3244" rel="#L3244">3244</span> -<span id="LID3245" rel="#L3245">3245</span> -<span id="LID3246" rel="#L3246">3246</span> -<span id="LID3247" rel="#L3247">3247</span> -<span id="LID3248" rel="#L3248">3248</span> -<span id="LID3249" rel="#L3249">3249</span> -<span id="LID3250" rel="#L3250">3250</span> -<span id="LID3251" rel="#L3251">3251</span> -<span id="LID3252" rel="#L3252">3252</span> -<span id="LID3253" rel="#L3253">3253</span> -<span id="LID3254" rel="#L3254">3254</span> -<span id="LID3255" rel="#L3255">3255</span> -<span id="LID3256" rel="#L3256">3256</span> -<span id="LID3257" rel="#L3257">3257</span> -<span id="LID3258" rel="#L3258">3258</span> -<span id="LID3259" rel="#L3259">3259</span> -<span id="LID3260" rel="#L3260">3260</span> -<span id="LID3261" rel="#L3261">3261</span> -<span id="LID3262" rel="#L3262">3262</span> -<span id="LID3263" rel="#L3263">3263</span> -<span id="LID3264" rel="#L3264">3264</span> -<span id="LID3265" rel="#L3265">3265</span> -<span id="LID3266" rel="#L3266">3266</span> -<span id="LID3267" rel="#L3267">3267</span> -<span id="LID3268" rel="#L3268">3268</span> -<span id="LID3269" rel="#L3269">3269</span> -<span id="LID3270" rel="#L3270">3270</span> -<span id="LID3271" rel="#L3271">3271</span> -<span id="LID3272" rel="#L3272">3272</span> -<span id="LID3273" rel="#L3273">3273</span> -<span id="LID3274" rel="#L3274">3274</span> -<span id="LID3275" rel="#L3275">3275</span> -<span id="LID3276" rel="#L3276">3276</span> -<span id="LID3277" rel="#L3277">3277</span> -<span id="LID3278" rel="#L3278">3278</span> -<span id="LID3279" rel="#L3279">3279</span> -<span id="LID3280" rel="#L3280">3280</span> -<span id="LID3281" rel="#L3281">3281</span> -<span id="LID3282" rel="#L3282">3282</span> -<span id="LID3283" rel="#L3283">3283</span> -<span id="LID3284" rel="#L3284">3284</span> -<span id="LID3285" rel="#L3285">3285</span> -<span id="LID3286" rel="#L3286">3286</span> -<span id="LID3287" rel="#L3287">3287</span> -<span id="LID3288" rel="#L3288">3288</span> -<span id="LID3289" rel="#L3289">3289</span> -<span id="LID3290" rel="#L3290">3290</span> -<span id="LID3291" rel="#L3291">3291</span> -<span id="LID3292" rel="#L3292">3292</span> -<span id="LID3293" rel="#L3293">3293</span> -<span id="LID3294" rel="#L3294">3294</span> -<span id="LID3295" rel="#L3295">3295</span> -<span id="LID3296" rel="#L3296">3296</span> -<span id="LID3297" rel="#L3297">3297</span> -<span id="LID3298" rel="#L3298">3298</span> -<span id="LID3299" rel="#L3299">3299</span> -<span id="LID3300" rel="#L3300">3300</span> -<span id="LID3301" rel="#L3301">3301</span> -<span id="LID3302" rel="#L3302">3302</span> -<span id="LID3303" rel="#L3303">3303</span> -<span id="LID3304" rel="#L3304">3304</span> -<span id="LID3305" rel="#L3305">3305</span> -<span id="LID3306" rel="#L3306">3306</span> -<span id="LID3307" rel="#L3307">3307</span> -<span id="LID3308" rel="#L3308">3308</span> -<span id="LID3309" rel="#L3309">3309</span> -<span id="LID3310" rel="#L3310">3310</span> -<span id="LID3311" rel="#L3311">3311</span> -<span id="LID3312" rel="#L3312">3312</span> -<span id="LID3313" rel="#L3313">3313</span> -<span id="LID3314" rel="#L3314">3314</span> -<span id="LID3315" rel="#L3315">3315</span> -<span id="LID3316" rel="#L3316">3316</span> -<span id="LID3317" rel="#L3317">3317</span> -<span id="LID3318" rel="#L3318">3318</span> -<span id="LID3319" rel="#L3319">3319</span> -<span id="LID3320" rel="#L3320">3320</span> -<span id="LID3321" rel="#L3321">3321</span> -<span id="LID3322" rel="#L3322">3322</span> -<span id="LID3323" rel="#L3323">3323</span> -<span id="LID3324" rel="#L3324">3324</span> -<span id="LID3325" rel="#L3325">3325</span> -<span id="LID3326" rel="#L3326">3326</span> -<span id="LID3327" rel="#L3327">3327</span> -<span id="LID3328" rel="#L3328">3328</span> -<span id="LID3329" rel="#L3329">3329</span> -<span id="LID3330" rel="#L3330">3330</span> -<span id="LID3331" rel="#L3331">3331</span> -<span id="LID3332" rel="#L3332">3332</span> -<span id="LID3333" rel="#L3333">3333</span> -<span id="LID3334" rel="#L3334">3334</span> -<span id="LID3335" rel="#L3335">3335</span> -<span id="LID3336" rel="#L3336">3336</span> -<span id="LID3337" rel="#L3337">3337</span> -<span id="LID3338" rel="#L3338">3338</span> -<span id="LID3339" rel="#L3339">3339</span> -<span id="LID3340" rel="#L3340">3340</span> -<span id="LID3341" rel="#L3341">3341</span> -<span id="LID3342" rel="#L3342">3342</span> -<span id="LID3343" rel="#L3343">3343</span> -<span id="LID3344" rel="#L3344">3344</span> -<span id="LID3345" rel="#L3345">3345</span> -<span id="LID3346" rel="#L3346">3346</span> -<span id="LID3347" rel="#L3347">3347</span> -<span id="LID3348" rel="#L3348">3348</span> -<span id="LID3349" rel="#L3349">3349</span> -<span id="LID3350" rel="#L3350">3350</span> -<span id="LID3351" rel="#L3351">3351</span> -<span id="LID3352" rel="#L3352">3352</span> -<span id="LID3353" rel="#L3353">3353</span> -<span id="LID3354" rel="#L3354">3354</span> -<span id="LID3355" rel="#L3355">3355</span> -<span id="LID3356" rel="#L3356">3356</span> -<span id="LID3357" rel="#L3357">3357</span> -<span id="LID3358" rel="#L3358">3358</span> -<span id="LID3359" rel="#L3359">3359</span> -<span id="LID3360" rel="#L3360">3360</span> -<span id="LID3361" rel="#L3361">3361</span> -<span id="LID3362" rel="#L3362">3362</span> -<span id="LID3363" rel="#L3363">3363</span> -<span id="LID3364" rel="#L3364">3364</span> -<span id="LID3365" rel="#L3365">3365</span> -<span id="LID3366" rel="#L3366">3366</span> -<span id="LID3367" rel="#L3367">3367</span> -<span id="LID3368" rel="#L3368">3368</span> -<span id="LID3369" rel="#L3369">3369</span> -<span id="LID3370" rel="#L3370">3370</span> -<span id="LID3371" rel="#L3371">3371</span> -<span id="LID3372" rel="#L3372">3372</span> -<span id="LID3373" rel="#L3373">3373</span> -<span id="LID3374" rel="#L3374">3374</span> -<span id="LID3375" rel="#L3375">3375</span> -<span id="LID3376" rel="#L3376">3376</span> -<span id="LID3377" rel="#L3377">3377</span> -<span id="LID3378" rel="#L3378">3378</span> -<span id="LID3379" rel="#L3379">3379</span> -<span id="LID3380" rel="#L3380">3380</span> -<span id="LID3381" rel="#L3381">3381</span> -<span id="LID3382" rel="#L3382">3382</span> -<span id="LID3383" rel="#L3383">3383</span> -<span id="LID3384" rel="#L3384">3384</span> -<span id="LID3385" rel="#L3385">3385</span> -<span id="LID3386" rel="#L3386">3386</span> -<span id="LID3387" rel="#L3387">3387</span> -<span id="LID3388" rel="#L3388">3388</span> -<span id="LID3389" rel="#L3389">3389</span> -<span id="LID3390" rel="#L3390">3390</span> -<span id="LID3391" rel="#L3391">3391</span> -<span id="LID3392" rel="#L3392">3392</span> -<span id="LID3393" rel="#L3393">3393</span> -<span id="LID3394" rel="#L3394">3394</span> -<span id="LID3395" rel="#L3395">3395</span> -<span id="LID3396" rel="#L3396">3396</span> -<span id="LID3397" rel="#L3397">3397</span> -<span id="LID3398" rel="#L3398">3398</span> -<span id="LID3399" rel="#L3399">3399</span> -<span id="LID3400" rel="#L3400">3400</span> -<span id="LID3401" rel="#L3401">3401</span> -<span id="LID3402" rel="#L3402">3402</span> -<span id="LID3403" rel="#L3403">3403</span> -<span id="LID3404" rel="#L3404">3404</span> -<span id="LID3405" rel="#L3405">3405</span> -<span id="LID3406" rel="#L3406">3406</span> -<span id="LID3407" rel="#L3407">3407</span> -<span id="LID3408" rel="#L3408">3408</span> -<span id="LID3409" rel="#L3409">3409</span> -<span id="LID3410" rel="#L3410">3410</span> -<span id="LID3411" rel="#L3411">3411</span> -<span id="LID3412" rel="#L3412">3412</span> -<span id="LID3413" rel="#L3413">3413</span> -<span id="LID3414" rel="#L3414">3414</span> -<span id="LID3415" rel="#L3415">3415</span> -<span id="LID3416" rel="#L3416">3416</span> -<span id="LID3417" rel="#L3417">3417</span> -<span id="LID3418" rel="#L3418">3418</span> -<span id="LID3419" rel="#L3419">3419</span> -<span id="LID3420" rel="#L3420">3420</span> -<span id="LID3421" rel="#L3421">3421</span> -<span id="LID3422" rel="#L3422">3422</span> -<span id="LID3423" rel="#L3423">3423</span> -<span id="LID3424" rel="#L3424">3424</span> -<span id="LID3425" rel="#L3425">3425</span> -<span id="LID3426" rel="#L3426">3426</span> -<span id="LID3427" rel="#L3427">3427</span> -<span id="LID3428" rel="#L3428">3428</span> -<span id="LID3429" rel="#L3429">3429</span> -<span id="LID3430" rel="#L3430">3430</span> -<span id="LID3431" rel="#L3431">3431</span> -<span id="LID3432" rel="#L3432">3432</span> -<span id="LID3433" rel="#L3433">3433</span> -<span id="LID3434" rel="#L3434">3434</span> -<span id="LID3435" rel="#L3435">3435</span> -<span id="LID3436" rel="#L3436">3436</span> -<span id="LID3437" rel="#L3437">3437</span> -<span id="LID3438" rel="#L3438">3438</span> -<span id="LID3439" rel="#L3439">3439</span> -<span id="LID3440" rel="#L3440">3440</span> -<span id="LID3441" rel="#L3441">3441</span> -<span id="LID3442" rel="#L3442">3442</span> -<span id="LID3443" rel="#L3443">3443</span> -<span id="LID3444" rel="#L3444">3444</span> -<span id="LID3445" rel="#L3445">3445</span> -<span id="LID3446" rel="#L3446">3446</span> -<span id="LID3447" rel="#L3447">3447</span> -<span id="LID3448" rel="#L3448">3448</span> -<span id="LID3449" rel="#L3449">3449</span> -<span id="LID3450" rel="#L3450">3450</span> -<span id="LID3451" rel="#L3451">3451</span> -<span id="LID3452" rel="#L3452">3452</span> -<span id="LID3453" rel="#L3453">3453</span> -<span id="LID3454" rel="#L3454">3454</span> -<span id="LID3455" rel="#L3455">3455</span> -<span id="LID3456" rel="#L3456">3456</span> -<span id="LID3457" rel="#L3457">3457</span> -<span id="LID3458" rel="#L3458">3458</span> -<span id="LID3459" rel="#L3459">3459</span> -<span id="LID3460" rel="#L3460">3460</span> -<span id="LID3461" rel="#L3461">3461</span> -<span id="LID3462" rel="#L3462">3462</span> -<span id="LID3463" rel="#L3463">3463</span> -<span id="LID3464" rel="#L3464">3464</span> -<span id="LID3465" rel="#L3465">3465</span> -<span id="LID3466" rel="#L3466">3466</span> -<span id="LID3467" rel="#L3467">3467</span> -<span id="LID3468" rel="#L3468">3468</span> -<span id="LID3469" rel="#L3469">3469</span> -<span id="LID3470" rel="#L3470">3470</span> -<span id="LID3471" rel="#L3471">3471</span> -<span id="LID3472" rel="#L3472">3472</span> -<span id="LID3473" rel="#L3473">3473</span> -<span id="LID3474" rel="#L3474">3474</span> -<span id="LID3475" rel="#L3475">3475</span> -<span id="LID3476" rel="#L3476">3476</span> -<span id="LID3477" rel="#L3477">3477</span> -<span id="LID3478" rel="#L3478">3478</span> -<span id="LID3479" rel="#L3479">3479</span> -<span id="LID3480" rel="#L3480">3480</span> -<span id="LID3481" rel="#L3481">3481</span> -<span id="LID3482" rel="#L3482">3482</span> -<span id="LID3483" rel="#L3483">3483</span> -<span id="LID3484" rel="#L3484">3484</span> -<span id="LID3485" rel="#L3485">3485</span> -<span id="LID3486" rel="#L3486">3486</span> -<span id="LID3487" rel="#L3487">3487</span> -<span id="LID3488" rel="#L3488">3488</span> -<span id="LID3489" rel="#L3489">3489</span> -<span id="LID3490" rel="#L3490">3490</span> -<span id="LID3491" rel="#L3491">3491</span> -<span id="LID3492" rel="#L3492">3492</span> -<span id="LID3493" rel="#L3493">3493</span> -<span id="LID3494" rel="#L3494">3494</span> -<span id="LID3495" rel="#L3495">3495</span> -<span id="LID3496" rel="#L3496">3496</span> -<span id="LID3497" rel="#L3497">3497</span> -<span id="LID3498" rel="#L3498">3498</span> -<span id="LID3499" rel="#L3499">3499</span> -<span id="LID3500" rel="#L3500">3500</span> -<span id="LID3501" rel="#L3501">3501</span> -<span id="LID3502" rel="#L3502">3502</span> -<span id="LID3503" rel="#L3503">3503</span> -<span id="LID3504" rel="#L3504">3504</span> -<span id="LID3505" rel="#L3505">3505</span> -<span id="LID3506" rel="#L3506">3506</span> -<span id="LID3507" rel="#L3507">3507</span> -<span id="LID3508" rel="#L3508">3508</span> -<span id="LID3509" rel="#L3509">3509</span> -<span id="LID3510" rel="#L3510">3510</span> -<span id="LID3511" rel="#L3511">3511</span> -<span id="LID3512" rel="#L3512">3512</span> -<span id="LID3513" rel="#L3513">3513</span> -<span id="LID3514" rel="#L3514">3514</span> -<span id="LID3515" rel="#L3515">3515</span> -<span id="LID3516" rel="#L3516">3516</span> -<span id="LID3517" rel="#L3517">3517</span> -<span id="LID3518" rel="#L3518">3518</span> -<span id="LID3519" rel="#L3519">3519</span> -<span id="LID3520" rel="#L3520">3520</span> -<span id="LID3521" rel="#L3521">3521</span> -<span id="LID3522" rel="#L3522">3522</span> -<span id="LID3523" rel="#L3523">3523</span> -<span id="LID3524" rel="#L3524">3524</span> -<span id="LID3525" rel="#L3525">3525</span> -<span id="LID3526" rel="#L3526">3526</span> -<span id="LID3527" rel="#L3527">3527</span> -<span id="LID3528" rel="#L3528">3528</span> -<span id="LID3529" rel="#L3529">3529</span> -<span id="LID3530" rel="#L3530">3530</span> -<span id="LID3531" rel="#L3531">3531</span> -<span id="LID3532" rel="#L3532">3532</span> -</pre> - </td> - <td width="100%"> - - - <div class="highlight"><pre><div class="line" id="LC1">Network Working Group C. Kalt</div><div class="line" id="LC2">Request for Comments: 2812 April 2000</div><div class="line" id="LC3">Updates: 1459</div><div class="line" id="LC4">Category: Informational</div><div class="line" id="LC5"> </div><div class="line" id="LC6"> </div><div class="line" id="LC7"> Internet Relay Chat: Client Protocol</div><div class="line" id="LC8"> </div><div class="line" id="LC9">Status of this Memo</div><div class="line" id="LC10"> </div><div class="line" id="LC11"> This memo provides information for the Internet community. It does</div><div class="line" id="LC12"> not specify an Internet standard of any kind. Distribution of this</div><div class="line" id="LC13"> memo is unlimited.</div><div class="line" id="LC14"> </div><div class="line" id="LC15">Copyright Notice</div><div class="line" id="LC16"> </div><div class="line" id="LC17"> Copyright (C) The Internet Society (2000). All Rights Reserved.</div><div class="line" id="LC18"> </div><div class="line" id="LC19">IESG NOTE:</div><div class="line" id="LC20"> </div><div class="line" id="LC21"> The IRC protocol itself enables several possibilities of transferring</div><div class="line" id="LC22"> data between clients, and just like with other transfer mechanisms</div><div class="line" id="LC23"> like email, the receiver of the data has to be careful about how the</div><div class="line" id="LC24"> data is handled. For more information on security issues with the IRC</div><div class="line" id="LC25"> protocol, see for example http://www.irchelp.org/irchelp/security/.</div><div class="line" id="LC26"> </div><div class="line" id="LC27">Abstract</div><div class="line" id="LC28"> </div><div class="line" id="LC29"> The IRC (Internet Relay Chat) protocol is for use with text based</div><div class="line" id="LC30"> conferencing; the simplest client being any socket program capable of</div><div class="line" id="LC31"> connecting to the server.</div><div class="line" id="LC32"> </div><div class="line" id="LC33"> This document defines the Client Protocol, and assumes that the</div><div class="line" id="LC34"> reader is familiar with the IRC Architecture [IRC-ARCH].</div><div class="line" id="LC35"> </div><div class="line" id="LC36">Table of Contents</div><div class="line" id="LC37"> </div><div class="line" id="LC38"> 1. Labels ..................................................... 3</div><div class="line" id="LC39"> 1.1 Servers ................................................ 3</div><div class="line" id="LC40"> 1.2 Clients ................................................ 3</div><div class="line" id="LC41"> 1.2.1 Users ............................................. 4</div><div class="line" id="LC42"> 1.2.1.1 Operators .................................... 4</div><div class="line" id="LC43"> 1.2.2 Services .......................................... 4</div><div class="line" id="LC44"> 1.3 Channels ............................................... 4</div><div class="line" id="LC45"> 2. The IRC Client Specification ............................... 5</div><div class="line" id="LC46"> 2.1 Overview ............................................... 5</div><div class="line" id="LC47"> 2.2 Character codes ........................................ 5</div><div class="line" id="LC48"> 2.3 Messages ............................................... 5</div><div class="line" id="LC49"> </div><div class="line" id="LC50"> </div><div class="line" id="LC51"> </div><div class="line" id="LC52">Kalt Informational [Page 1]</div><div class="line" id="LC53"> </div><div class="line" id="LC54">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC55"> </div><div class="line" id="LC56"> </div><div class="line" id="LC57"> 2.3.1 Message format in Augmented BNF ................... 6</div><div class="line" id="LC58"> 2.4 Numeric replies ........................................ 8</div><div class="line" id="LC59"> 2.5 Wildcard expressions ................................... 9</div><div class="line" id="LC60"> 3. Message Details ............................................ 9</div><div class="line" id="LC61"> 3.1 Connection Registration ................................ 10</div><div class="line" id="LC62"> 3.1.1 Password message .................................. 10</div><div class="line" id="LC63"> 3.1.2 Nick message ...................................... 10</div><div class="line" id="LC64"> 3.1.3 User message ...................................... 11</div><div class="line" id="LC65"> 3.1.4 Oper message ...................................... 12</div><div class="line" id="LC66"> 3.1.5 User mode message ................................. 12</div><div class="line" id="LC67"> 3.1.6 Service message ................................... 13</div><div class="line" id="LC68"> 3.1.7 Quit .............................................. 14</div><div class="line" id="LC69"> 3.1.8 Squit ............................................. 15</div><div class="line" id="LC70"> 3.2 Channel operations ..................................... 15</div><div class="line" id="LC71"> 3.2.1 Join message ...................................... 16</div><div class="line" id="LC72"> 3.2.2 Part message ...................................... 17</div><div class="line" id="LC73"> 3.2.3 Channel mode message .............................. 18</div><div class="line" id="LC74"> 3.2.4 Topic message ..................................... 19</div><div class="line" id="LC75"> 3.2.5 Names message ..................................... 20</div><div class="line" id="LC76"> 3.2.6 List message ...................................... 21</div><div class="line" id="LC77"> 3.2.7 Invite message .................................... 21</div><div class="line" id="LC78"> 3.2.8 Kick command ...................................... 22</div><div class="line" id="LC79"> 3.3 Sending messages ....................................... 23</div><div class="line" id="LC80"> 3.3.1 Private messages .................................. 23</div><div class="line" id="LC81"> 3.3.2 Notice ............................................ 24</div><div class="line" id="LC82"> 3.4 Server queries and commands ............................ 25</div><div class="line" id="LC83"> 3.4.1 Motd message ...................................... 25</div><div class="line" id="LC84"> 3.4.2 Lusers message .................................... 25</div><div class="line" id="LC85"> 3.4.3 Version message ................................... 26</div><div class="line" id="LC86"> 3.4.4 Stats message ..................................... 26</div><div class="line" id="LC87"> 3.4.5 Links message ..................................... 27</div><div class="line" id="LC88"> 3.4.6 Time message ...................................... 28</div><div class="line" id="LC89"> 3.4.7 Connect message ................................... 28</div><div class="line" id="LC90"> 3.4.8 Trace message ..................................... 29</div><div class="line" id="LC91"> 3.4.9 Admin command ..................................... 30</div><div class="line" id="LC92"> 3.4.10 Info command ...................................... 31</div><div class="line" id="LC93"> 3.5 Service Query and Commands ............................. 31</div><div class="line" id="LC94"> 3.5.1 Servlist message .................................. 31</div><div class="line" id="LC95"> 3.5.2 Squery ............................................ 32</div><div class="line" id="LC96"> 3.6 User based queries ..................................... 32</div><div class="line" id="LC97"> 3.6.1 Who query ......................................... 32</div><div class="line" id="LC98"> 3.6.2 Whois query ....................................... 33</div><div class="line" id="LC99"> 3.6.3 Whowas ............................................ 34</div><div class="line" id="LC100"> 3.7 Miscellaneous messages ................................. 34</div><div class="line" id="LC101"> 3.7.1 Kill message ...................................... 35</div><div class="line" id="LC102"> 3.7.2 Ping message ...................................... 36</div><div class="line" id="LC103"> 3.7.3 Pong message ...................................... 37</div><div class="line" id="LC104"> 3.7.4 Error ............................................. 37</div><div class="line" id="LC105"> </div><div class="line" id="LC106"> </div><div class="line" id="LC107"> </div><div class="line" id="LC108">Kalt Informational [Page 2]</div><div class="line" id="LC109"> </div><div class="line" id="LC110">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC111"> </div><div class="line" id="LC112"> </div><div class="line" id="LC113"> 4. Optional features .......................................... 38</div><div class="line" id="LC114"> 4.1 Away ................................................... 38</div><div class="line" id="LC115"> 4.2 Rehash message ......................................... 39</div><div class="line" id="LC116"> 4.3 Die message ............................................ 39</div><div class="line" id="LC117"> 4.4 Restart message ........................................ 40</div><div class="line" id="LC118"> 4.5 Summon message ......................................... 40</div><div class="line" id="LC119"> 4.6 Users .................................................. 41</div><div class="line" id="LC120"> 4.7 Operwall message ....................................... 41</div><div class="line" id="LC121"> 4.8 Userhost message ....................................... 42</div><div class="line" id="LC122"> 4.9 Ison message ........................................... 42</div><div class="line" id="LC123"> 5. Replies .................................................... 43</div><div class="line" id="LC124"> 5.1 Command responses ...................................... 43</div><div class="line" id="LC125"> 5.2 Error Replies .......................................... 53</div><div class="line" id="LC126"> 5.3 Reserved numerics ...................................... 59</div><div class="line" id="LC127"> 6. Current implementations .................................... 60</div><div class="line" id="LC128"> 7. Current problems ........................................... 60</div><div class="line" id="LC129"> 7.1 Nicknames .............................................. 60</div><div class="line" id="LC130"> 7.2 Limitation of wildcards ................................ 61</div><div class="line" id="LC131"> 7.3 Security considerations ................................ 61</div><div class="line" id="LC132"> 8. Current support and availability ........................... 61</div><div class="line" id="LC133"> 9. Acknowledgements ........................................... 61</div><div class="line" id="LC134"> 10. References ................................................ 62</div><div class="line" id="LC135"> 11. Author's Address .......................................... 62</div><div class="line" id="LC136"> 12. Full Copyright Statement .................................. 63</div><div class="line" id="LC137"> </div><div class="line" id="LC138">1. Labels</div><div class="line" id="LC139"> </div><div class="line" id="LC140"> This section defines the identifiers used for the various components</div><div class="line" id="LC141"> of the IRC protocol.</div><div class="line" id="LC142"> </div><div class="line" id="LC143">1.1 Servers</div><div class="line" id="LC144"> </div><div class="line" id="LC145"> Servers are uniquely identified by their name, which has a maximum</div><div class="line" id="LC146"> length of sixty three (63) characters. See the protocol grammar</div><div class="line" id="LC147"> rules (section 2.3.1) for what may and may not be used in a server</div><div class="line" id="LC148"> name.</div><div class="line" id="LC149"> </div><div class="line" id="LC150">1.2 Clients</div><div class="line" id="LC151"> </div><div class="line" id="LC152"> For each client all servers MUST have the following information: a</div><div class="line" id="LC153"> netwide unique identifier (whose format depends on the type of</div><div class="line" id="LC154"> client) and the server which introduced the client.</div><div class="line" id="LC155"> </div><div class="line" id="LC156"> </div><div class="line" id="LC157"> </div><div class="line" id="LC158"> </div><div class="line" id="LC159"> </div><div class="line" id="LC160"> </div><div class="line" id="LC161"> </div><div class="line" id="LC162"> </div><div class="line" id="LC163"> </div><div class="line" id="LC164">Kalt Informational [Page 3]</div><div class="line" id="LC165"> </div><div class="line" id="LC166">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC167"> </div><div class="line" id="LC168"> </div><div class="line" id="LC169">1.2.1 Users</div><div class="line" id="LC170"> </div><div class="line" id="LC171"> Each user is distinguished from other users by a unique nickname</div><div class="line" id="LC172"> having a maximum length of nine (9) characters. See the protocol</div><div class="line" id="LC173"> grammar rules (section 2.3.1) for what may and may not be used in a</div><div class="line" id="LC174"> nickname.</div><div class="line" id="LC175"> </div><div class="line" id="LC176"> While the maximum length is limited to nine characters, clients</div><div class="line" id="LC177"> SHOULD accept longer strings as they may become used in future</div><div class="line" id="LC178"> evolutions of the protocol.</div><div class="line" id="LC179"> </div><div class="line" id="LC180">1.2.1.1 Operators</div><div class="line" id="LC181"> </div><div class="line" id="LC182"> To allow a reasonable amount of order to be kept within the IRC</div><div class="line" id="LC183"> network, a special class of users (operators) is allowed to perform</div><div class="line" id="LC184"> general maintenance functions on the network. Although the powers</div><div class="line" id="LC185"> granted to an operator can be considered as 'dangerous', they are</div><div class="line" id="LC186"> nonetheless often necessary. Operators SHOULD be able to perform</div><div class="line" id="LC187"> basic network tasks such as disconnecting and reconnecting servers as</div><div class="line" id="LC188"> needed. In recognition of this need, the protocol discussed herein</div><div class="line" id="LC189"> provides for operators only to be able to perform such functions.</div><div class="line" id="LC190"> See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).</div><div class="line" id="LC191"> </div><div class="line" id="LC192"> A more controversial power of operators is the ability to remove a</div><div class="line" id="LC193"> user from the connected network by 'force', i.e., operators are able</div><div class="line" id="LC194"> to close the connection between any client and server. The</div><div class="line" id="LC195"> justification for this is very delicate since its abuse is both</div><div class="line" id="LC196"> destructive and annoying, and its benefits close to inexistent. For</div><div class="line" id="LC197"> further details on this type of action, see section 3.7.1 (KILL).</div><div class="line" id="LC198"> </div><div class="line" id="LC199">1.2.2 Services</div><div class="line" id="LC200"> </div><div class="line" id="LC201"> Each service is distinguished from other services by a service name</div><div class="line" id="LC202"> composed of a nickname and a server name. As for users, the nickname</div><div class="line" id="LC203"> has a maximum length of nine (9) characters. See the protocol</div><div class="line" id="LC204"> grammar rules (section 2.3.1) for what may and may not be used in a</div><div class="line" id="LC205"> nickname.</div><div class="line" id="LC206"> </div><div class="line" id="LC207">1.3 Channels</div><div class="line" id="LC208"> </div><div class="line" id="LC209"> Channels names are strings (beginning with a '&', '#', '+' or '!'</div><div class="line" id="LC210"> character) of length up to fifty (50) characters. Apart from the</div><div class="line" id="LC211"> requirement that the first character is either '&', '#', '+' or '!',</div><div class="line" id="LC212"> the only restriction on a channel name is that it SHALL NOT contain</div><div class="line" id="LC213"> any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space</div><div class="line" id="LC214"> is used as parameter separator and command is used as a list item</div><div class="line" id="LC215"> separator by the protocol). A colon (':') can also be used as a</div><div class="line" id="LC216"> delimiter for the channel mask. Channel names are case insensitive.</div><div class="line" id="LC217"> </div><div class="line" id="LC218"> </div><div class="line" id="LC219"> </div><div class="line" id="LC220">Kalt Informational [Page 4]</div><div class="line" id="LC221"> </div><div class="line" id="LC222">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC223"> </div><div class="line" id="LC224"> </div><div class="line" id="LC225"> See the protocol grammar rules (section 2.3.1) for the exact syntax</div><div class="line" id="LC226"> of a channel name.</div><div class="line" id="LC227"> </div><div class="line" id="LC228"> Each prefix characterizes a different channel type. The definition</div><div class="line" id="LC229"> of the channel types is not relevant to the client-server protocol</div><div class="line" id="LC230"> and thus it is beyond the scope of this document. More details can</div><div class="line" id="LC231"> be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].</div><div class="line" id="LC232"> </div><div class="line" id="LC233">2. The IRC Client Specification</div><div class="line" id="LC234"> </div><div class="line" id="LC235">2.1 Overview</div><div class="line" id="LC236"> </div><div class="line" id="LC237"> The protocol as described herein is for use only with client to</div><div class="line" id="LC238"> server connections when the client registers as a user.</div><div class="line" id="LC239"> </div><div class="line" id="LC240">2.2 Character codes</div><div class="line" id="LC241"> </div><div class="line" id="LC242"> No specific character set is specified. The protocol is based on a</div><div class="line" id="LC243"> set of codes which are composed of eight (8) bits, making up an</div><div class="line" id="LC244"> octet. Each message may be composed of any number of these octets;</div><div class="line" id="LC245"> however, some octet values are used for control codes, which act as</div><div class="line" id="LC246"> message delimiters.</div><div class="line" id="LC247"> </div><div class="line" id="LC248"> Regardless of being an 8-bit protocol, the delimiters and keywords</div><div class="line" id="LC249"> are such that protocol is mostly usable from US-ASCII terminal and a</div><div class="line" id="LC250"> telnet connection.</div><div class="line" id="LC251"> </div><div class="line" id="LC252"> Because of IRC's Scandinavian origin, the characters {}|^ are</div><div class="line" id="LC253"> considered to be the lower case equivalents of the characters []\~,</div><div class="line" id="LC254"> respectively. This is a critical issue when determining the</div><div class="line" id="LC255"> equivalence of two nicknames or channel names.</div><div class="line" id="LC256"> </div><div class="line" id="LC257">2.3 Messages</div><div class="line" id="LC258"> </div><div class="line" id="LC259"> Servers and clients send each other messages, which may or may not</div><div class="line" id="LC260"> generate a reply. If the message contains a valid command, as</div><div class="line" id="LC261"> described in later sections, the client should expect a reply as</div><div class="line" id="LC262"> specified but it is not advised to wait forever for the reply; client</div><div class="line" id="LC263"> to server and server to server communication is essentially</div><div class="line" id="LC264"> asynchronous by nature.</div><div class="line" id="LC265"> </div><div class="line" id="LC266"> Each IRC message may consist of up to three main parts: the prefix</div><div class="line" id="LC267"> (OPTIONAL), the command, and the command parameters (maximum of</div><div class="line" id="LC268"> fifteen (15)). The prefix, command, and all parameters are separated</div><div class="line" id="LC269"> by one ASCII space character (0x20) each.</div><div class="line" id="LC270"> </div><div class="line" id="LC271"> </div><div class="line" id="LC272"> </div><div class="line" id="LC273"> </div><div class="line" id="LC274"> </div><div class="line" id="LC275"> </div><div class="line" id="LC276">Kalt Informational [Page 5]</div><div class="line" id="LC277"> </div><div class="line" id="LC278">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC279"> </div><div class="line" id="LC280"> </div><div class="line" id="LC281"> The presence of a prefix is indicated with a single leading ASCII</div><div class="line" id="LC282"> colon character (':', 0x3b), which MUST be the first character of the</div><div class="line" id="LC283"> message itself. There MUST be NO gap (whitespace) between the colon</div><div class="line" id="LC284"> and the prefix. The prefix is used by servers to indicate the true</div><div class="line" id="LC285"> origin of the message. If the prefix is missing from the message, it</div><div class="line" id="LC286"> is assumed to have originated from the connection from which it was</div><div class="line" id="LC287"> received from. Clients SHOULD NOT use a prefix when sending a</div><div class="line" id="LC288"> message; if they use one, the only valid prefix is the registered</div><div class="line" id="LC289"> nickname associated with the client.</div><div class="line" id="LC290"> </div><div class="line" id="LC291"> The command MUST either be a valid IRC command or a three (3) digit</div><div class="line" id="LC292"> number represented in ASCII text.</div><div class="line" id="LC293"> </div><div class="line" id="LC294"> IRC messages are always lines of characters terminated with a CR-LF</div><div class="line" id="LC295"> (Carriage Return - Line Feed) pair, and these messages SHALL NOT</div><div class="line" id="LC296"> exceed 512 characters in length, counting all characters including</div><div class="line" id="LC297"> the trailing CR-LF. Thus, there are 510 characters maximum allowed</div><div class="line" id="LC298"> for the command and its parameters. There is no provision for</div><div class="line" id="LC299"> continuation of message lines. See section 6 for more details about</div><div class="line" id="LC300"> current implementations.</div><div class="line" id="LC301"> </div><div class="line" id="LC302">2.3.1 Message format in Augmented BNF</div><div class="line" id="LC303"> </div><div class="line" id="LC304"> The protocol messages must be extracted from the contiguous stream of</div><div class="line" id="LC305"> octets. The current solution is to designate two characters, CR and</div><div class="line" id="LC306"> LF, as message separators. Empty messages are silently ignored,</div><div class="line" id="LC307"> which permits use of the sequence CR-LF between messages without</div><div class="line" id="LC308"> extra problems.</div><div class="line" id="LC309"> </div><div class="line" id="LC310"> The extracted message is parsed into the components <prefix>,</div><div class="line" id="LC311"> <command> and list of parameters (<params>).</div><div class="line" id="LC312"> </div><div class="line" id="LC313"> The Augmented BNF representation for this is:</div><div class="line" id="LC314"> </div><div class="line" id="LC315"> message = [ ":" prefix SPACE ] command [ params ] crlf</div><div class="line" id="LC316"> prefix = servername / ( nickname [ [ "!" user ] "@" host ] )</div><div class="line" id="LC317"> command = 1*letter / 3digit</div><div class="line" id="LC318"> params = *14( SPACE middle ) [ SPACE ":" trailing ]</div><div class="line" id="LC319"> =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]</div><div class="line" id="LC320"> </div><div class="line" id="LC321"> nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF</div><div class="line" id="LC322"> ; any octet except NUL, CR, LF, " " and ":"</div><div class="line" id="LC323"> middle = nospcrlfcl *( ":" / nospcrlfcl )</div><div class="line" id="LC324"> trailing = *( ":" / " " / nospcrlfcl )</div><div class="line" id="LC325"> </div><div class="line" id="LC326"> SPACE = %x20 ; space character</div><div class="line" id="LC327"> crlf = %x0D %x0A ; "carriage return" "linefeed"</div><div class="line" id="LC328"> </div><div class="line" id="LC329"> </div><div class="line" id="LC330"> </div><div class="line" id="LC331"> </div><div class="line" id="LC332">Kalt Informational [Page 6]</div><div class="line" id="LC333"> </div><div class="line" id="LC334">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC335"> </div><div class="line" id="LC336"> </div><div class="line" id="LC337"> NOTES:</div><div class="line" id="LC338"> 1) After extracting the parameter list, all parameters are equal</div><div class="line" id="LC339"> whether matched by <middle> or <trailing>. <trailing> is just a</div><div class="line" id="LC340"> syntactic trick to allow SPACE within the parameter.</div><div class="line" id="LC341"> </div><div class="line" id="LC342"> 2) The NUL (%x00) character is not special in message framing, and</div><div class="line" id="LC343"> basically could end up inside a parameter, but it would cause</div><div class="line" id="LC344"> extra complexities in normal C string handling. Therefore, NUL</div><div class="line" id="LC345"> is not allowed within messages.</div><div class="line" id="LC346"> </div><div class="line" id="LC347"> Most protocol messages specify additional semantics and syntax for</div><div class="line" id="LC348"> the extracted parameter strings dictated by their position in the</div><div class="line" id="LC349"> list. For example, many server commands will assume that the first</div><div class="line" id="LC350"> parameter after the command is the list of targets, which can be</div><div class="line" id="LC351"> described with:</div><div class="line" id="LC352"> </div><div class="line" id="LC353"> target = nickname / server</div><div class="line" id="LC354"> msgtarget = msgto *( "," msgto )</div><div class="line" id="LC355"> msgto = channel / ( user [ "%" host ] "@" servername )</div><div class="line" id="LC356"> msgto =/ ( user "%" host ) / targetmask</div><div class="line" id="LC357"> msgto =/ nickname / ( nickname "!" user "@" host )</div><div class="line" id="LC358"> channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring</div><div class="line" id="LC359"> [ ":" chanstring ]</div><div class="line" id="LC360"> servername = hostname</div><div class="line" id="LC361"> host = hostname / hostaddr</div><div class="line" id="LC362"> hostname = shortname *( "." shortname )</div><div class="line" id="LC363"> shortname = ( letter / digit ) *( letter / digit / "-" )</div><div class="line" id="LC364"> *( letter / digit )</div><div class="line" id="LC365"> ; as specified in RFC 1123 [HNAME]</div><div class="line" id="LC366"> hostaddr = ip4addr / ip6addr</div><div class="line" id="LC367"> ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit</div><div class="line" id="LC368"> ip6addr = 1*hexdigit 7( ":" 1*hexdigit )</div><div class="line" id="LC369"> ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr</div><div class="line" id="LC370"> nickname = ( letter / special ) *8( letter / digit / special / "-" )</div><div class="line" id="LC371"> targetmask = ( "$" / "#" ) mask</div><div class="line" id="LC372"> ; see details on allowed masks in section 3.3.1</div><div class="line" id="LC373"> chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B</div><div class="line" id="LC374"> chanstring =/ %x2D-39 / %x3B-FF</div><div class="line" id="LC375"> ; any octet except NUL, BELL, CR, LF, " ", "," and ":"</div><div class="line" id="LC376"> channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )</div><div class="line" id="LC377"> </div><div class="line" id="LC378"> </div><div class="line" id="LC379"> </div><div class="line" id="LC380"> </div><div class="line" id="LC381"> </div><div class="line" id="LC382"> </div><div class="line" id="LC383"> </div><div class="line" id="LC384"> </div><div class="line" id="LC385"> </div><div class="line" id="LC386"> </div><div class="line" id="LC387"> </div><div class="line" id="LC388">Kalt Informational [Page 7]</div><div class="line" id="LC389"> </div><div class="line" id="LC390">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC391"> </div><div class="line" id="LC392"> </div><div class="line" id="LC393"> Other parameter syntaxes are:</div><div class="line" id="LC394"> </div><div class="line" id="LC395"> user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )</div><div class="line" id="LC396"> ; any octet except NUL, CR, LF, " " and "@"</div><div class="line" id="LC397"> key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F )</div><div class="line" id="LC398"> ; any 7-bit US_ASCII character,</div><div class="line" id="LC399"> ; except NUL, CR, LF, FF, h/v TABs, and " "</div><div class="line" id="LC400"> letter = %x41-5A / %x61-7A ; A-Z / a-z</div><div class="line" id="LC401"> digit = %x30-39 ; 0-9</div><div class="line" id="LC402"> hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F"</div><div class="line" id="LC403"> special = %x5B-60 / %x7B-7D</div><div class="line" id="LC404"> ; "[", "]", "\", "`", "_", "^", "{", "|", "}"</div><div class="line" id="LC405"> </div><div class="line" id="LC406"> NOTES:</div><div class="line" id="LC407"> 1) The <hostaddr> syntax is given here for the sole purpose of</div><div class="line" id="LC408"> indicating the format to follow for IP addresses. This</div><div class="line" id="LC409"> reflects the fact that the only available implementations of</div><div class="line" id="LC410"> this protocol uses TCP/IP as underlying network protocol but is</div><div class="line" id="LC411"> not meant to prevent other protocols to be used.</div><div class="line" id="LC412"> </div><div class="line" id="LC413"> 2) <hostname> has a maximum length of 63 characters. This is a</div><div class="line" id="LC414"> limitation of the protocol as internet hostnames (in</div><div class="line" id="LC415"> particular) can be longer. Such restriction is necessary</div><div class="line" id="LC416"> because IRC messages are limited to 512 characters in length.</div><div class="line" id="LC417"> Clients connecting from a host which name is longer than 63</div><div class="line" id="LC418"> characters are registered using the host (numeric) address</div><div class="line" id="LC419"> instead of the host name.</div><div class="line" id="LC420"> </div><div class="line" id="LC421"> 3) Some parameters used in the following sections of this</div><div class="line" id="LC422"> documents are not defined here as there is nothing specific</div><div class="line" id="LC423"> about them besides the name that is used for convenience.</div><div class="line" id="LC424"> These parameters follow the general syntax defined for</div><div class="line" id="LC425"> <params>.</div><div class="line" id="LC426"> </div><div class="line" id="LC427">2.4 Numeric replies</div><div class="line" id="LC428"> </div><div class="line" id="LC429"> Most of the messages sent to the server generate a reply of some</div><div class="line" id="LC430"> sort. The most common reply is the numeric reply, used for both</div><div class="line" id="LC431"> errors and normal replies. The numeric reply MUST be sent as one</div><div class="line" id="LC432"> message consisting of the sender prefix, the three-digit numeric, and</div><div class="line" id="LC433"> the target of the reply. A numeric reply is not allowed to originate</div><div class="line" id="LC434"> from a client. In all other respects, a numeric reply is just like a</div><div class="line" id="LC435"> normal message, except that the keyword is made up of 3 numeric</div><div class="line" id="LC436"> digits rather than a string of letters. A list of different replies</div><div class="line" id="LC437"> is supplied in section 5 (Replies).</div><div class="line" id="LC438"> </div><div class="line" id="LC439"> </div><div class="line" id="LC440"> </div><div class="line" id="LC441"> </div><div class="line" id="LC442"> </div><div class="line" id="LC443"> </div><div class="line" id="LC444">Kalt Informational [Page 8]</div><div class="line" id="LC445"> </div><div class="line" id="LC446">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC447"> </div><div class="line" id="LC448"> </div><div class="line" id="LC449">2.5 Wildcard expressions</div><div class="line" id="LC450"> </div><div class="line" id="LC451"> When wildcards are allowed in a string, it is referred as a "mask".</div><div class="line" id="LC452"> </div><div class="line" id="LC453"> For string matching purposes, the protocol allows the use of two</div><div class="line" id="LC454"> special characters: '?' (%x3F) to match one and only one character,</div><div class="line" id="LC455"> and '*' (%x2A) to match any number of any characters. These two</div><div class="line" id="LC456"> characters can be escaped using the character '\' (%x5C).</div><div class="line" id="LC457"> </div><div class="line" id="LC458"> The Augmented BNF syntax for this is:</div><div class="line" id="LC459"> </div><div class="line" id="LC460"> mask = *( nowild / noesc wildone / noesc wildmany )</div><div class="line" id="LC461"> wildone = %x3F</div><div class="line" id="LC462"> wildmany = %x2A</div><div class="line" id="LC463"> nowild = %x01-29 / %x2B-3E / %x40-FF</div><div class="line" id="LC464"> ; any octet except NUL, "*", "?"</div><div class="line" id="LC465"> noesc = %x01-5B / %x5D-FF</div><div class="line" id="LC466"> ; any octet except NUL and "\"</div><div class="line" id="LC467"> matchone = %x01-FF</div><div class="line" id="LC468"> ; matches wildone</div><div class="line" id="LC469"> matchmany = *matchone</div><div class="line" id="LC470"> ; matches wildmany</div><div class="line" id="LC471"> </div><div class="line" id="LC472"> Examples:</div><div class="line" id="LC473"> </div><div class="line" id="LC474"> a?c ; Matches any string of 3 characters in length starting</div><div class="line" id="LC475"> with "a" and ending with "c"</div><div class="line" id="LC476"> </div><div class="line" id="LC477"> a*c ; Matches any string of at least 2 characters in length</div><div class="line" id="LC478"> starting with "a" and ending with "c"</div><div class="line" id="LC479"> </div><div class="line" id="LC480">3. Message Details</div><div class="line" id="LC481"> </div><div class="line" id="LC482"> On the following pages there are descriptions of each message</div><div class="line" id="LC483"> recognized by the IRC server and client. All commands described in</div><div class="line" id="LC484"> this section MUST be implemented by any server for this protocol.</div><div class="line" id="LC485"> </div><div class="line" id="LC486"> Where the reply ERR_NOSUCHSERVER is returned, it means that the</div><div class="line" id="LC487"> target of the message could not be found. The server MUST NOT send</div><div class="line" id="LC488"> any other replies after this error for that command.</div><div class="line" id="LC489"> </div><div class="line" id="LC490"> The server to which a client is connected is required to parse the</div><div class="line" id="LC491"> complete message, and return any appropriate errors.</div><div class="line" id="LC492"> </div><div class="line" id="LC493"> If multiple parameters is presented, then each MUST be checked for</div><div class="line" id="LC494"> validity and appropriate responses MUST be sent back to the client.</div><div class="line" id="LC495"> In the case of incorrect messages which use parameter lists with</div><div class="line" id="LC496"> comma as an item separator, a reply MUST be sent for each item.</div><div class="line" id="LC497"> </div><div class="line" id="LC498"> </div><div class="line" id="LC499"> </div><div class="line" id="LC500">Kalt Informational [Page 9]</div><div class="line" id="LC501"> </div><div class="line" id="LC502">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC503"> </div><div class="line" id="LC504"> </div><div class="line" id="LC505">3.1 Connection Registration</div><div class="line" id="LC506"> </div><div class="line" id="LC507"> The commands described here are used to register a connection with an</div><div class="line" id="LC508"> IRC server as a user as well as to correctly disconnect.</div><div class="line" id="LC509"> </div><div class="line" id="LC510"> A "PASS" command is not required for a client connection to be</div><div class="line" id="LC511"> registered, but it MUST precede the latter of the NICK/USER</div><div class="line" id="LC512"> combination (for a user connection) or the SERVICE command (for a</div><div class="line" id="LC513"> service connection). The RECOMMENDED order for a client to register</div><div class="line" id="LC514"> is as follows:</div><div class="line" id="LC515"> </div><div class="line" id="LC516"> 1. Pass message</div><div class="line" id="LC517"> 2. Nick message 2. Service message</div><div class="line" id="LC518"> 3. User message</div><div class="line" id="LC519"> </div><div class="line" id="LC520"> Upon success, the client will receive an RPL_WELCOME (for users) or</div><div class="line" id="LC521"> RPL_YOURESERVICE (for services) message indicating that the</div><div class="line" id="LC522"> connection is now registered and known the to the entire IRC network.</div><div class="line" id="LC523"> The reply message MUST contain the full client identifier upon which</div><div class="line" id="LC524"> it was registered.</div><div class="line" id="LC525"> </div><div class="line" id="LC526">3.1.1 Password message</div><div class="line" id="LC527"> </div><div class="line" id="LC528"> Command: PASS</div><div class="line" id="LC529"> Parameters: <password></div><div class="line" id="LC530"> </div><div class="line" id="LC531"> The PASS command is used to set a 'connection password'. The</div><div class="line" id="LC532"> optional password can and MUST be set before any attempt to register</div><div class="line" id="LC533"> the connection is made. Currently this requires that user send a</div><div class="line" id="LC534"> PASS command before sending the NICK/USER combination.</div><div class="line" id="LC535"> </div><div class="line" id="LC536"> Numeric Replies:</div><div class="line" id="LC537"> </div><div class="line" id="LC538"> ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED</div><div class="line" id="LC539"> </div><div class="line" id="LC540"> Example:</div><div class="line" id="LC541"> </div><div class="line" id="LC542"> PASS secretpasswordhere</div><div class="line" id="LC543"> </div><div class="line" id="LC544">3.1.2 Nick message</div><div class="line" id="LC545"> </div><div class="line" id="LC546"> </div><div class="line" id="LC547"> Command: NICK</div><div class="line" id="LC548"> Parameters: <nickname></div><div class="line" id="LC549"> </div><div class="line" id="LC550"> NICK command is used to give user a nickname or change the existing</div><div class="line" id="LC551"> one.</div><div class="line" id="LC552"> </div><div class="line" id="LC553"> </div><div class="line" id="LC554"> </div><div class="line" id="LC555"> </div><div class="line" id="LC556">Kalt Informational [Page 10]</div><div class="line" id="LC557"> </div><div class="line" id="LC558">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC559"> </div><div class="line" id="LC560"> </div><div class="line" id="LC561"> Numeric Replies:</div><div class="line" id="LC562"> </div><div class="line" id="LC563"> ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME</div><div class="line" id="LC564"> ERR_NICKNAMEINUSE ERR_NICKCOLLISION</div><div class="line" id="LC565"> ERR_UNAVAILRESOURCE ERR_RESTRICTED</div><div class="line" id="LC566"> </div><div class="line" id="LC567"> Examples:</div><div class="line" id="LC568"> </div><div class="line" id="LC569"> NICK Wiz ; Introducing new nick "Wiz" if session is</div><div class="line" id="LC570"> still unregistered, or user changing his</div><div class="line" id="LC571"> nickname to "Wiz"</div><div class="line" id="LC572"> </div><div class="line" id="LC573"> :WiZ!jto@tolsun.oulu.fi NICK Kilroy</div><div class="line" id="LC574"> ; Server telling that WiZ changed his</div><div class="line" id="LC575"> nickname to Kilroy.</div><div class="line" id="LC576"> </div><div class="line" id="LC577">3.1.3 User message</div><div class="line" id="LC578"> </div><div class="line" id="LC579"> Command: USER</div><div class="line" id="LC580"> Parameters: <user> <mode> <unused> <realname></div><div class="line" id="LC581"> </div><div class="line" id="LC582"> The USER command is used at the beginning of connection to specify</div><div class="line" id="LC583"> the username, hostname and realname of a new user.</div><div class="line" id="LC584"> </div><div class="line" id="LC585"> The <mode> parameter should be a numeric, and can be used to</div><div class="line" id="LC586"> automatically set user modes when registering with the server. This</div><div class="line" id="LC587"> parameter is a bitmask, with only 2 bits having any signification: if</div><div class="line" id="LC588"> the bit 2 is set, the user mode 'w' will be set and if the bit 3 is</div><div class="line" id="LC589"> set, the user mode 'i' will be set. (See Section 3.1.5 "User</div><div class="line" id="LC590"> Modes").</div><div class="line" id="LC591"> </div><div class="line" id="LC592"> The <realname> may contain space characters.</div><div class="line" id="LC593"> </div><div class="line" id="LC594"> Numeric Replies:</div><div class="line" id="LC595"> </div><div class="line" id="LC596"> ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED</div><div class="line" id="LC597"> </div><div class="line" id="LC598"> Example:</div><div class="line" id="LC599"> </div><div class="line" id="LC600"> USER guest 0 * :Ronnie Reagan ; User registering themselves with a</div><div class="line" id="LC601"> username of "guest" and real name</div><div class="line" id="LC602"> "Ronnie Reagan".</div><div class="line" id="LC603"> </div><div class="line" id="LC604"> USER guest 8 * :Ronnie Reagan ; User registering themselves with a</div><div class="line" id="LC605"> username of "guest" and real name</div><div class="line" id="LC606"> "Ronnie Reagan", and asking to be set</div><div class="line" id="LC607"> invisible.</div><div class="line" id="LC608"> </div><div class="line" id="LC609"> </div><div class="line" id="LC610"> </div><div class="line" id="LC611"> </div><div class="line" id="LC612">Kalt Informational [Page 11]</div><div class="line" id="LC613"> </div><div class="line" id="LC614">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC615"> </div><div class="line" id="LC616"> </div><div class="line" id="LC617">3.1.4 Oper message</div><div class="line" id="LC618"> </div><div class="line" id="LC619"> Command: OPER</div><div class="line" id="LC620"> Parameters: <name> <password></div><div class="line" id="LC621"> </div><div class="line" id="LC622"> A normal user uses the OPER command to obtain operator privileges.</div><div class="line" id="LC623"> The combination of <name> and <password> are REQUIRED to gain</div><div class="line" id="LC624"> Operator privileges. Upon success, the user will receive a MODE</div><div class="line" id="LC625"> message (see section 3.1.5) indicating the new user modes.</div><div class="line" id="LC626"> </div><div class="line" id="LC627"> Numeric Replies:</div><div class="line" id="LC628"> </div><div class="line" id="LC629"> ERR_NEEDMOREPARAMS RPL_YOUREOPER</div><div class="line" id="LC630"> ERR_NOOPERHOST ERR_PASSWDMISMATCH</div><div class="line" id="LC631"> </div><div class="line" id="LC632"> Example:</div><div class="line" id="LC633"> </div><div class="line" id="LC634"> OPER foo bar ; Attempt to register as an operator</div><div class="line" id="LC635"> using a username of "foo" and "bar"</div><div class="line" id="LC636"> as the password.</div><div class="line" id="LC637"> </div><div class="line" id="LC638">3.1.5 User mode message</div><div class="line" id="LC639"> </div><div class="line" id="LC640"> Command: MODE</div><div class="line" id="LC641"> Parameters: <nickname></div><div class="line" id="LC642"> *( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )</div><div class="line" id="LC643"> </div><div class="line" id="LC644"> The user MODE's are typically changes which affect either how the</div><div class="line" id="LC645"> client is seen by others or what 'extra' messages the client is sent.</div><div class="line" id="LC646"> </div><div class="line" id="LC647"> A user MODE command MUST only be accepted if both the sender of the</div><div class="line" id="LC648"> message and the nickname given as a parameter are both the same. If</div><div class="line" id="LC649"> no other parameter is given, then the server will return the current</div><div class="line" id="LC650"> settings for the nick.</div><div class="line" id="LC651"> </div><div class="line" id="LC652"> The available modes are as follows:</div><div class="line" id="LC653"> </div><div class="line" id="LC654"> a - user is flagged as away;</div><div class="line" id="LC655"> i - marks a users as invisible;</div><div class="line" id="LC656"> w - user receives wallops;</div><div class="line" id="LC657"> r - restricted user connection;</div><div class="line" id="LC658"> o - operator flag;</div><div class="line" id="LC659"> O - local operator flag;</div><div class="line" id="LC660"> s - marks a user for receipt of server notices.</div><div class="line" id="LC661"> </div><div class="line" id="LC662"> Additional modes may be available later on.</div><div class="line" id="LC663"> </div><div class="line" id="LC664"> </div><div class="line" id="LC665"> </div><div class="line" id="LC666"> </div><div class="line" id="LC667"> </div><div class="line" id="LC668">Kalt Informational [Page 12]</div><div class="line" id="LC669"> </div><div class="line" id="LC670">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC671"> </div><div class="line" id="LC672"> </div><div class="line" id="LC673"> The flag 'a' SHALL NOT be toggled by the user using the MODE command,</div><div class="line" id="LC674"> instead use of the AWAY command is REQUIRED.</div><div class="line" id="LC675"> </div><div class="line" id="LC676"> If a user attempts to make themselves an operator using the "+o" or</div><div class="line" id="LC677"> "+O" flag, the attempt SHOULD be ignored as users could bypass the</div><div class="line" id="LC678"> authentication mechanisms of the OPER command. There is no</div><div class="line" id="LC679"> restriction, however, on anyone `deopping' themselves (using "-o" or</div><div class="line" id="LC680"> "-O").</div><div class="line" id="LC681"> </div><div class="line" id="LC682"> On the other hand, if a user attempts to make themselves unrestricted</div><div class="line" id="LC683"> using the "-r" flag, the attempt SHOULD be ignored. There is no</div><div class="line" id="LC684"> restriction, however, on anyone `deopping' themselves (using "+r").</div><div class="line" id="LC685"> This flag is typically set by the server upon connection for</div><div class="line" id="LC686"> administrative reasons. While the restrictions imposed are left up</div><div class="line" id="LC687"> to the implementation, it is typical that a restricted user not be</div><div class="line" id="LC688"> allowed to change nicknames, nor make use of the channel operator</div><div class="line" id="LC689"> status on channels.</div><div class="line" id="LC690"> </div><div class="line" id="LC691"> The flag 's' is obsolete but MAY still be used.</div><div class="line" id="LC692"> </div><div class="line" id="LC693"> Numeric Replies:</div><div class="line" id="LC694"> </div><div class="line" id="LC695"> ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH</div><div class="line" id="LC696"> ERR_UMODEUNKNOWNFLAG RPL_UMODEIS</div><div class="line" id="LC697"> </div><div class="line" id="LC698"> Examples:</div><div class="line" id="LC699"> </div><div class="line" id="LC700"> MODE WiZ -w ; Command by WiZ to turn off</div><div class="line" id="LC701"> reception of WALLOPS messages.</div><div class="line" id="LC702"> </div><div class="line" id="LC703"> MODE Angel +i ; Command from Angel to make herself</div><div class="line" id="LC704"> invisible.</div><div class="line" id="LC705"> </div><div class="line" id="LC706"> MODE WiZ -o ; WiZ 'deopping' (removing operator</div><div class="line" id="LC707"> status).</div><div class="line" id="LC708"> </div><div class="line" id="LC709">3.1.6 Service message</div><div class="line" id="LC710"> </div><div class="line" id="LC711"> Command: SERVICE</div><div class="line" id="LC712"> Parameters: <nickname> <reserved> <distribution> <type></div><div class="line" id="LC713"> <reserved> <info></div><div class="line" id="LC714"> </div><div class="line" id="LC715"> The SERVICE command to register a new service. Command parameters</div><div class="line" id="LC716"> specify the service nickname, distribution, type and info of a new</div><div class="line" id="LC717"> service.</div><div class="line" id="LC718"> </div><div class="line" id="LC719"> </div><div class="line" id="LC720"> </div><div class="line" id="LC721"> </div><div class="line" id="LC722"> </div><div class="line" id="LC723"> </div><div class="line" id="LC724">Kalt Informational [Page 13]</div><div class="line" id="LC725"> </div><div class="line" id="LC726">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC727"> </div><div class="line" id="LC728"> </div><div class="line" id="LC729"> The <distribution> parameter is used to specify the visibility of a</div><div class="line" id="LC730"> service. The service may only be known to servers which have a name</div><div class="line" id="LC731"> matching the distribution. For a matching server to have knowledge</div><div class="line" id="LC732"> of the service, the network path between that server and the server</div><div class="line" id="LC733"> on which the service is connected MUST be composed of servers which</div><div class="line" id="LC734"> names all match the mask.</div><div class="line" id="LC735"> </div><div class="line" id="LC736"> The <type> parameter is currently reserved for future usage.</div><div class="line" id="LC737"> </div><div class="line" id="LC738"> Numeric Replies:</div><div class="line" id="LC739"> </div><div class="line" id="LC740"> ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS</div><div class="line" id="LC741"> ERR_ERRONEUSNICKNAME</div><div class="line" id="LC742"> RPL_YOURESERVICE RPL_YOURHOST</div><div class="line" id="LC743"> RPL_MYINFO</div><div class="line" id="LC744"> </div><div class="line" id="LC745"> Example:</div><div class="line" id="LC746"> </div><div class="line" id="LC747"> SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering</div><div class="line" id="LC748"> itself with a name of "dict". This</div><div class="line" id="LC749"> service will only be available on</div><div class="line" id="LC750"> servers which name matches "*.fr".</div><div class="line" id="LC751"> </div><div class="line" id="LC752">3.1.7 Quit</div><div class="line" id="LC753"> </div><div class="line" id="LC754"> Command: QUIT</div><div class="line" id="LC755"> Parameters: [ <Quit Message> ]</div><div class="line" id="LC756"> </div><div class="line" id="LC757"> A client session is terminated with a quit message. The server</div><div class="line" id="LC758"> acknowledges this by sending an ERROR message to the client.</div><div class="line" id="LC759"> </div><div class="line" id="LC760"> Numeric Replies:</div><div class="line" id="LC761"> </div><div class="line" id="LC762"> None.</div><div class="line" id="LC763"> </div><div class="line" id="LC764"> Example:</div><div class="line" id="LC765"> </div><div class="line" id="LC766"> QUIT :Gone to have lunch ; Preferred message format.</div><div class="line" id="LC767"> </div><div class="line" id="LC768"> :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User</div><div class="line" id="LC769"> syrk has quit IRC to have lunch.</div><div class="line" id="LC770"> </div><div class="line" id="LC771"> </div><div class="line" id="LC772"> </div><div class="line" id="LC773"> </div><div class="line" id="LC774"> </div><div class="line" id="LC775"> </div><div class="line" id="LC776"> </div><div class="line" id="LC777"> </div><div class="line" id="LC778"> </div><div class="line" id="LC779"> </div><div class="line" id="LC780">Kalt Informational [Page 14]</div><div class="line" id="LC781"> </div><div class="line" id="LC782">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC783"> </div><div class="line" id="LC784"> </div><div class="line" id="LC785">3.1.8 Squit</div><div class="line" id="LC786"> </div><div class="line" id="LC787"> Command: SQUIT</div><div class="line" id="LC788"> Parameters: <server> <comment></div><div class="line" id="LC789"> </div><div class="line" id="LC790"> The SQUIT command is available only to operators. It is used to</div><div class="line" id="LC791"> disconnect server links. Also servers can generate SQUIT messages on</div><div class="line" id="LC792"> error conditions. A SQUIT message may also target a remote server</div><div class="line" id="LC793"> connection. In this case, the SQUIT message will simply be sent to</div><div class="line" id="LC794"> the remote server without affecting the servers in between the</div><div class="line" id="LC795"> operator and the remote server.</div><div class="line" id="LC796"> </div><div class="line" id="LC797"> The <comment> SHOULD be supplied by all operators who execute a SQUIT</div><div class="line" id="LC798"> for a remote server. The server ordered to disconnect its peer</div><div class="line" id="LC799"> generates a WALLOPS message with <comment> included, so that other</div><div class="line" id="LC800"> users may be aware of the reason of this action.</div><div class="line" id="LC801"> </div><div class="line" id="LC802"> Numeric replies:</div><div class="line" id="LC803"> </div><div class="line" id="LC804"> ERR_NOPRIVILEGES ERR_NOSUCHSERVER</div><div class="line" id="LC805"> ERR_NEEDMOREPARAMS</div><div class="line" id="LC806"> </div><div class="line" id="LC807"> Examples:</div><div class="line" id="LC808"> </div><div class="line" id="LC809"> SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server</div><div class="line" id="LC810"> tolson.oulu.fi to terminate its</div><div class="line" id="LC811"> connection with comment "Bad Link".</div><div class="line" id="LC812"> </div><div class="line" id="LC813"> :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command</div><div class="line" id="LC814"> from Trillian from to disconnect</div><div class="line" id="LC815"> "cm22.eng.umd.edu" from the net with</div><div class="line" id="LC816"> comment "Server out of control".</div><div class="line" id="LC817"> </div><div class="line" id="LC818">3.2 Channel operations</div><div class="line" id="LC819"> </div><div class="line" id="LC820"> This group of messages is concerned with manipulating channels, their</div><div class="line" id="LC821"> properties (channel modes), and their contents (typically users).</div><div class="line" id="LC822"> For this reason, these messages SHALL NOT be made available to</div><div class="line" id="LC823"> services.</div><div class="line" id="LC824"> </div><div class="line" id="LC825"> All of these messages are requests which will or will not be granted</div><div class="line" id="LC826"> by the server. The server MUST send a reply informing the user</div><div class="line" id="LC827"> whether the request was granted, denied or generated an error. When</div><div class="line" id="LC828"> the server grants the request, the message is typically sent back</div><div class="line" id="LC829"> (eventually reformatted) to the user with the prefix set to the user</div><div class="line" id="LC830"> itself.</div><div class="line" id="LC831"> </div><div class="line" id="LC832"> </div><div class="line" id="LC833"> </div><div class="line" id="LC834"> </div><div class="line" id="LC835"> </div><div class="line" id="LC836">Kalt Informational [Page 15]</div><div class="line" id="LC837"> </div><div class="line" id="LC838">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC839"> </div><div class="line" id="LC840"> </div><div class="line" id="LC841"> The rules governing how channels are managed are enforced by the</div><div class="line" id="LC842"> servers. These rules are beyond the scope of this document. More</div><div class="line" id="LC843"> details are found in "Internet Relay Chat: Channel Management" [IRC-</div><div class="line" id="LC844"> CHAN].</div><div class="line" id="LC845"> </div><div class="line" id="LC846">3.2.1 Join message</div><div class="line" id="LC847"> </div><div class="line" id="LC848"> Command: JOIN</div><div class="line" id="LC849"> Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )</div><div class="line" id="LC850"> / "0"</div><div class="line" id="LC851"> </div><div class="line" id="LC852"> The JOIN command is used by a user to request to start listening to</div><div class="line" id="LC853"> the specific channel. Servers MUST be able to parse arguments in the</div><div class="line" id="LC854"> form of a list of target, but SHOULD NOT use lists when sending JOIN</div><div class="line" id="LC855"> messages to clients.</div><div class="line" id="LC856"> </div><div class="line" id="LC857"> Once a user has joined a channel, he receives information about</div><div class="line" id="LC858"> all commands his server receives affecting the channel. This</div><div class="line" id="LC859"> includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE.</div><div class="line" id="LC860"> This allows channel members to keep track of the other channel</div><div class="line" id="LC861"> members, as well as channel modes.</div><div class="line" id="LC862"> </div><div class="line" id="LC863"> If a JOIN is successful, the user receives a JOIN message as</div><div class="line" id="LC864"> confirmation and is then sent the channel's topic (using RPL_TOPIC) and</div><div class="line" id="LC865"> the list of users who are on the channel (using RPL_NAMREPLY), which</div><div class="line" id="LC866"> MUST include the user joining.</div><div class="line" id="LC867"> </div><div class="line" id="LC868"> Note that this message accepts a special argument ("0"), which is</div><div class="line" id="LC869"> a special request to leave all channels the user is currently a member</div><div class="line" id="LC870"> of. The server will process this message as if the user had sent</div><div class="line" id="LC871"> a PART command (See Section 3.2.2) for each channel he is a member</div><div class="line" id="LC872"> of.</div><div class="line" id="LC873"> </div><div class="line" id="LC874"> Numeric Replies:</div><div class="line" id="LC875"> </div><div class="line" id="LC876"> ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN</div><div class="line" id="LC877"> ERR_INVITEONLYCHAN ERR_BADCHANNELKEY</div><div class="line" id="LC878"> ERR_CHANNELISFULL ERR_BADCHANMASK</div><div class="line" id="LC879"> ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS</div><div class="line" id="LC880"> ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE</div><div class="line" id="LC881"> RPL_TOPIC</div><div class="line" id="LC882"> </div><div class="line" id="LC883"> Examples:</div><div class="line" id="LC884"> </div><div class="line" id="LC885"> JOIN #foobar ; Command to join channel #foobar.</div><div class="line" id="LC886"> </div><div class="line" id="LC887"> JOIN &foo fubar ; Command to join channel &foo using</div><div class="line" id="LC888"> key "fubar".</div><div class="line" id="LC889"> </div><div class="line" id="LC890"> </div><div class="line" id="LC891"> </div><div class="line" id="LC892">Kalt Informational [Page 16]</div><div class="line" id="LC893"> </div><div class="line" id="LC894">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC895"> </div><div class="line" id="LC896"> </div><div class="line" id="LC897"> JOIN #foo,&bar fubar ; Command to join channel #foo using</div><div class="line" id="LC898"> key "fubar" and &bar using no key.</div><div class="line" id="LC899"> </div><div class="line" id="LC900"> JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using</div><div class="line" id="LC901"> key "fubar", and channel #bar using</div><div class="line" id="LC902"> key "foobar".</div><div class="line" id="LC903"> </div><div class="line" id="LC904"> JOIN #foo,#bar ; Command to join channels #foo and</div><div class="line" id="LC905"> #bar.</div><div class="line" id="LC906"> </div><div class="line" id="LC907"> JOIN 0 ; Leave all currently joined</div><div class="line" id="LC908"> channels.</div><div class="line" id="LC909"> </div><div class="line" id="LC910"> :WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ</div><div class="line" id="LC911"> on channel #Twilight_zone</div><div class="line" id="LC912"> </div><div class="line" id="LC913">3.2.2 Part message</div><div class="line" id="LC914"> </div><div class="line" id="LC915"> Command: PART</div><div class="line" id="LC916"> Parameters: <channel> *( "," <channel> ) [ <Part Message> ]</div><div class="line" id="LC917"> </div><div class="line" id="LC918"> The PART command causes the user sending the message to be removed</div><div class="line" id="LC919"> from the list of active members for all given channels listed in the</div><div class="line" id="LC920"> parameter string. If a "Part Message" is given, this will be sent</div><div class="line" id="LC921"> instead of the default message, the nickname. This request is always</div><div class="line" id="LC922"> granted by the server.</div><div class="line" id="LC923"> </div><div class="line" id="LC924"> Servers MUST be able to parse arguments in the form of a list of</div><div class="line" id="LC925"> target, but SHOULD NOT use lists when sending PART messages to</div><div class="line" id="LC926"> clients.</div><div class="line" id="LC927"> </div><div class="line" id="LC928"> Numeric Replies:</div><div class="line" id="LC929"> </div><div class="line" id="LC930"> ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL</div><div class="line" id="LC931"> ERR_NOTONCHANNEL</div><div class="line" id="LC932"> </div><div class="line" id="LC933"> Examples:</div><div class="line" id="LC934"> </div><div class="line" id="LC935"> PART #twilight_zone ; Command to leave channel</div><div class="line" id="LC936"> "#twilight_zone"</div><div class="line" id="LC937"> </div><div class="line" id="LC938"> PART #oz-ops,&group5 ; Command to leave both channels</div><div class="line" id="LC939"> "&group5" and "#oz-ops".</div><div class="line" id="LC940"> </div><div class="line" id="LC941"> :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost</div><div class="line" id="LC942"> ; User WiZ leaving channel</div><div class="line" id="LC943"> "#playzone" with the message "I</div><div class="line" id="LC944"> lost".</div><div class="line" id="LC945"> </div><div class="line" id="LC946"> </div><div class="line" id="LC947"> </div><div class="line" id="LC948">Kalt Informational [Page 17]</div><div class="line" id="LC949"> </div><div class="line" id="LC950">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC951"> </div><div class="line" id="LC952"> </div><div class="line" id="LC953">3.2.3 Channel mode message</div><div class="line" id="LC954"> </div><div class="line" id="LC955"> Command: MODE</div><div class="line" id="LC956"> Parameters: <channel> *( ( "-" / "+" ) *<modes> *<modeparams> )</div><div class="line" id="LC957"> </div><div class="line" id="LC958"> The MODE command is provided so that users may query and change the</div><div class="line" id="LC959"> characteristics of a channel. For more details on available modes</div><div class="line" id="LC960"> and their uses, see "Internet Relay Chat: Channel Management" [IRC-</div><div class="line" id="LC961"> CHAN]. Note that there is a maximum limit of three (3) changes per</div><div class="line" id="LC962"> command for modes that take a parameter.</div><div class="line" id="LC963"> </div><div class="line" id="LC964"> Numeric Replies:</div><div class="line" id="LC965"> </div><div class="line" id="LC966"> ERR_NEEDMOREPARAMS ERR_KEYSET</div><div class="line" id="LC967"> ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED</div><div class="line" id="LC968"> ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE</div><div class="line" id="LC969"> RPL_CHANNELMODEIS</div><div class="line" id="LC970"> RPL_BANLIST RPL_ENDOFBANLIST</div><div class="line" id="LC971"> RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST</div><div class="line" id="LC972"> RPL_INVITELIST RPL_ENDOFINVITELIST</div><div class="line" id="LC973"> RPL_UNIQOPIS</div><div class="line" id="LC974"> </div><div class="line" id="LC975"> The following examples are given to help understanding the syntax of</div><div class="line" id="LC976"> the MODE command, but refer to modes defined in "Internet Relay Chat:</div><div class="line" id="LC977"> Channel Management" [IRC-CHAN].</div><div class="line" id="LC978"> </div><div class="line" id="LC979"> Examples:</div><div class="line" id="LC980"> </div><div class="line" id="LC981"> MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel</div><div class="line" id="LC982"> moderated and 'invite-only' with user</div><div class="line" id="LC983"> with a hostname matching *.fi</div><div class="line" id="LC984"> automatically invited.</div><div class="line" id="LC985"> </div><div class="line" id="LC986"> MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges</div><div class="line" id="LC987"> to Kilroy on channel #Finnish.</div><div class="line" id="LC988"> </div><div class="line" id="LC989"> MODE #Finnish +v Wiz ; Command to allow WiZ to speak on</div><div class="line" id="LC990"> #Finnish.</div><div class="line" id="LC991"> </div><div class="line" id="LC992"> MODE #Fins -s ; Command to remove 'secret' flag</div><div class="line" id="LC993"> from channel #Fins.</div><div class="line" id="LC994"> </div><div class="line" id="LC995"> MODE #42 +k oulu ; Command to set the channel key to</div><div class="line" id="LC996"> "oulu".</div><div class="line" id="LC997"> </div><div class="line" id="LC998"> MODE #42 -k oulu ; Command to remove the "oulu"</div><div class="line" id="LC999"> channel key on channel "#42".</div><div class="line" id="LC1000"> </div><div class="line" id="LC1001"> </div><div class="line" id="LC1002"> </div><div class="line" id="LC1003"> </div><div class="line" id="LC1004">Kalt Informational [Page 18]</div><div class="line" id="LC1005"> </div><div class="line" id="LC1006">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1007"> </div><div class="line" id="LC1008"> </div><div class="line" id="LC1009"> MODE #eu-opers +l 10 ; Command to set the limit for the</div><div class="line" id="LC1010"> number of users on channel</div><div class="line" id="LC1011"> "#eu-opers" to 10.</div><div class="line" id="LC1012"> </div><div class="line" id="LC1013"> :WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l</div><div class="line" id="LC1014"> ; User "WiZ" removing the limit for</div><div class="line" id="LC1015"> the number of users on channel "#eu-</div><div class="line" id="LC1016"> opers".</div><div class="line" id="LC1017"> </div><div class="line" id="LC1018"> MODE &oulu +b ; Command to list ban masks set for</div><div class="line" id="LC1019"> the channel "&oulu".</div><div class="line" id="LC1020"> </div><div class="line" id="LC1021"> MODE &oulu +b *!*@* ; Command to prevent all users from</div><div class="line" id="LC1022"> joining.</div><div class="line" id="LC1023"> </div><div class="line" id="LC1024"> MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu</div><div class="line" id="LC1025"> ; Command to prevent any user from a</div><div class="line" id="LC1026"> hostname matching *.edu from joining,</div><div class="line" id="LC1027"> except if matching *.bu.edu</div><div class="line" id="LC1028"> </div><div class="line" id="LC1029"> MODE #bu +be *!*@*.edu *!*@*.bu.edu</div><div class="line" id="LC1030"> ; Comment to prevent any user from a</div><div class="line" id="LC1031"> hostname matching *.edu from joining,</div><div class="line" id="LC1032"> except if matching *.bu.edu</div><div class="line" id="LC1033"> </div><div class="line" id="LC1034"> MODE #meditation e ; Command to list exception masks set</div><div class="line" id="LC1035"> for the channel "#meditation".</div><div class="line" id="LC1036"> </div><div class="line" id="LC1037"> MODE #meditation I ; Command to list invitations masks</div><div class="line" id="LC1038"> set for the channel "#meditation".</div><div class="line" id="LC1039"> </div><div class="line" id="LC1040"> MODE !12345ircd O ; Command to ask who the channel</div><div class="line" id="LC1041"> creator for "!12345ircd" is</div><div class="line" id="LC1042"> </div><div class="line" id="LC1043">3.2.4 Topic message</div><div class="line" id="LC1044"> </div><div class="line" id="LC1045"> Command: TOPIC</div><div class="line" id="LC1046"> Parameters: <channel> [ <topic> ]</div><div class="line" id="LC1047"> </div><div class="line" id="LC1048"> The TOPIC command is used to change or view the topic of a channel.</div><div class="line" id="LC1049"> The topic for channel <channel> is returned if there is no <topic></div><div class="line" id="LC1050"> given. If the <topic> parameter is present, the topic for that</div><div class="line" id="LC1051"> channel will be changed, if this action is allowed for the user</div><div class="line" id="LC1052"> requesting it. If the <topic> parameter is an empty string, the</div><div class="line" id="LC1053"> topic for that channel will be removed.</div><div class="line" id="LC1054"> </div><div class="line" id="LC1055"> </div><div class="line" id="LC1056"> </div><div class="line" id="LC1057"> </div><div class="line" id="LC1058"> </div><div class="line" id="LC1059"> </div><div class="line" id="LC1060">Kalt Informational [Page 19]</div><div class="line" id="LC1061"> </div><div class="line" id="LC1062">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1063"> </div><div class="line" id="LC1064"> </div><div class="line" id="LC1065"> Numeric Replies:</div><div class="line" id="LC1066"> </div><div class="line" id="LC1067"> ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL</div><div class="line" id="LC1068"> RPL_NOTOPIC RPL_TOPIC</div><div class="line" id="LC1069"> ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES</div><div class="line" id="LC1070"> </div><div class="line" id="LC1071"> Examples:</div><div class="line" id="LC1072"> </div><div class="line" id="LC1073"> :WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the</div><div class="line" id="LC1074"> topic.</div><div class="line" id="LC1075"> </div><div class="line" id="LC1076"> TOPIC #test :another topic ; Command to set the topic on #test</div><div class="line" id="LC1077"> to "another topic".</div><div class="line" id="LC1078"> </div><div class="line" id="LC1079"> TOPIC #test : ; Command to clear the topic on</div><div class="line" id="LC1080"> #test.</div><div class="line" id="LC1081"> </div><div class="line" id="LC1082"> TOPIC #test ; Command to check the topic for</div><div class="line" id="LC1083"> #test.</div><div class="line" id="LC1084"> </div><div class="line" id="LC1085">3.2.5 Names message</div><div class="line" id="LC1086"> </div><div class="line" id="LC1087"> Command: NAMES</div><div class="line" id="LC1088"> Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]</div><div class="line" id="LC1089"> </div><div class="line" id="LC1090"> By using the NAMES command, a user can list all nicknames that are</div><div class="line" id="LC1091"> visible to him. For more details on what is visible and what is not,</div><div class="line" id="LC1092"> see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The</div><div class="line" id="LC1093"> <channel> parameter specifies which channel(s) to return information</div><div class="line" id="LC1094"> about. There is no error reply for bad channel names.</div><div class="line" id="LC1095"> </div><div class="line" id="LC1096"> If no <channel> parameter is given, a list of all channels and their</div><div class="line" id="LC1097"> occupants is returned. At the end of this list, a list of users who</div><div class="line" id="LC1098"> are visible but either not on any channel or not on a visible channel</div><div class="line" id="LC1099"> are listed as being on `channel' "*".</div><div class="line" id="LC1100"> </div><div class="line" id="LC1101"> If the <target> parameter is specified, the request is forwarded to</div><div class="line" id="LC1102"> that server which will generate the reply.</div><div class="line" id="LC1103"> </div><div class="line" id="LC1104"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1105"> </div><div class="line" id="LC1106"> Numerics:</div><div class="line" id="LC1107"> </div><div class="line" id="LC1108"> ERR_TOOMANYMATCHES ERR_NOSUCHSERVER</div><div class="line" id="LC1109"> RPL_NAMREPLY RPL_ENDOFNAMES</div><div class="line" id="LC1110"> </div><div class="line" id="LC1111"> </div><div class="line" id="LC1112"> </div><div class="line" id="LC1113"> </div><div class="line" id="LC1114"> </div><div class="line" id="LC1115"> </div><div class="line" id="LC1116">Kalt Informational [Page 20]</div><div class="line" id="LC1117"> </div><div class="line" id="LC1118">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1119"> </div><div class="line" id="LC1120"> </div><div class="line" id="LC1121"> Examples:</div><div class="line" id="LC1122"> </div><div class="line" id="LC1123"> NAMES #twilight_zone,#42 ; Command to list visible users on</div><div class="line" id="LC1124"> #twilight_zone and #42</div><div class="line" id="LC1125"> </div><div class="line" id="LC1126"> NAMES ; Command to list all visible</div><div class="line" id="LC1127"> channels and users</div><div class="line" id="LC1128"> </div><div class="line" id="LC1129">3.2.6 List message</div><div class="line" id="LC1130"> </div><div class="line" id="LC1131"> Command: LIST</div><div class="line" id="LC1132"> Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]</div><div class="line" id="LC1133"> </div><div class="line" id="LC1134"> The list command is used to list channels and their topics. If the</div><div class="line" id="LC1135"> <channel> parameter is used, only the status of that channel is</div><div class="line" id="LC1136"> displayed.</div><div class="line" id="LC1137"> </div><div class="line" id="LC1138"> If the <target> parameter is specified, the request is forwarded to</div><div class="line" id="LC1139"> that server which will generate the reply.</div><div class="line" id="LC1140"> </div><div class="line" id="LC1141"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1142"> </div><div class="line" id="LC1143"> Numeric Replies:</div><div class="line" id="LC1144"> </div><div class="line" id="LC1145"> ERR_TOOMANYMATCHES ERR_NOSUCHSERVER</div><div class="line" id="LC1146"> RPL_LIST RPL_LISTEND</div><div class="line" id="LC1147"> </div><div class="line" id="LC1148"> Examples:</div><div class="line" id="LC1149"> </div><div class="line" id="LC1150"> LIST ; Command to list all channels.</div><div class="line" id="LC1151"> </div><div class="line" id="LC1152"> LIST #twilight_zone,#42 ; Command to list channels</div><div class="line" id="LC1153"> #twilight_zone and #42</div><div class="line" id="LC1154"> </div><div class="line" id="LC1155">3.2.7 Invite message</div><div class="line" id="LC1156"> </div><div class="line" id="LC1157"> Command: INVITE</div><div class="line" id="LC1158"> Parameters: <nickname> <channel></div><div class="line" id="LC1159"> </div><div class="line" id="LC1160"> The INVITE command is used to invite a user to a channel. The</div><div class="line" id="LC1161"> parameter <nickname> is the nickname of the person to be invited to</div><div class="line" id="LC1162"> the target channel <channel>. There is no requirement that the</div><div class="line" id="LC1163"> channel the target user is being invited to must exist or be a valid</div><div class="line" id="LC1164"> channel. However, if the channel exists, only members of the channel</div><div class="line" id="LC1165"> are allowed to invite other users. When the channel has invite-only</div><div class="line" id="LC1166"> flag set, only channel operators may issue INVITE command.</div><div class="line" id="LC1167"> </div><div class="line" id="LC1168"> </div><div class="line" id="LC1169"> </div><div class="line" id="LC1170"> </div><div class="line" id="LC1171"> </div><div class="line" id="LC1172">Kalt Informational [Page 21]</div><div class="line" id="LC1173"> </div><div class="line" id="LC1174">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1175"> </div><div class="line" id="LC1176"> </div><div class="line" id="LC1177"> Only the user inviting and the user being invited will receive</div><div class="line" id="LC1178"> notification of the invitation. Other channel members are not</div><div class="line" id="LC1179"> notified. (This is unlike the MODE changes, and is occasionally the</div><div class="line" id="LC1180"> source of trouble for users.)</div><div class="line" id="LC1181"> </div><div class="line" id="LC1182"> Numeric Replies:</div><div class="line" id="LC1183"> </div><div class="line" id="LC1184"> ERR_NEEDMOREPARAMS ERR_NOSUCHNICK</div><div class="line" id="LC1185"> ERR_NOTONCHANNEL ERR_USERONCHANNEL</div><div class="line" id="LC1186"> ERR_CHANOPRIVSNEEDED</div><div class="line" id="LC1187"> RPL_INVITING RPL_AWAY</div><div class="line" id="LC1188"> </div><div class="line" id="LC1189"> Examples:</div><div class="line" id="LC1190"> </div><div class="line" id="LC1191"> :Angel!wings@irc.org INVITE Wiz #Dust</div><div class="line" id="LC1192"> </div><div class="line" id="LC1193"> ; Message to WiZ when he has been</div><div class="line" id="LC1194"> invited by user Angel to channel</div><div class="line" id="LC1195"> #Dust</div><div class="line" id="LC1196"> </div><div class="line" id="LC1197"> INVITE Wiz #Twilight_Zone ; Command to invite WiZ to</div><div class="line" id="LC1198"> #Twilight_zone</div><div class="line" id="LC1199"> </div><div class="line" id="LC1200">3.2.8 Kick command</div><div class="line" id="LC1201"> </div><div class="line" id="LC1202"> Command: KICK</div><div class="line" id="LC1203"> Parameters: <channel> *( "," <channel> ) <user> *( "," <user> )</div><div class="line" id="LC1204"> [<comment>]</div><div class="line" id="LC1205"> </div><div class="line" id="LC1206"> The KICK command can be used to request the forced removal of a user</div><div class="line" id="LC1207"> from a channel. It causes the <user> to PART from the <channel> by</div><div class="line" id="LC1208"> force. For the message to be syntactically correct, there MUST be</div><div class="line" id="LC1209"> either one channel parameter and multiple user parameter, or as many</div><div class="line" id="LC1210"> channel parameters as there are user parameters. If a "comment" is</div><div class="line" id="LC1211"> given, this will be sent instead of the default message, the nickname</div><div class="line" id="LC1212"> of the user issuing the KICK.</div><div class="line" id="LC1213"> </div><div class="line" id="LC1214"> The server MUST NOT send KICK messages with multiple channels or</div><div class="line" id="LC1215"> users to clients. This is necessarily to maintain backward</div><div class="line" id="LC1216"> compatibility with old client software.</div><div class="line" id="LC1217"> </div><div class="line" id="LC1218"> Numeric Replies:</div><div class="line" id="LC1219"> </div><div class="line" id="LC1220"> ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL</div><div class="line" id="LC1221"> ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED</div><div class="line" id="LC1222"> ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL</div><div class="line" id="LC1223"> </div><div class="line" id="LC1224"> </div><div class="line" id="LC1225"> </div><div class="line" id="LC1226"> </div><div class="line" id="LC1227"> </div><div class="line" id="LC1228">Kalt Informational [Page 22]</div><div class="line" id="LC1229"> </div><div class="line" id="LC1230">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1231"> </div><div class="line" id="LC1232"> </div><div class="line" id="LC1233"> Examples:</div><div class="line" id="LC1234"> </div><div class="line" id="LC1235"> KICK &Melbourne Matthew ; Command to kick Matthew from</div><div class="line" id="LC1236"> &Melbourne</div><div class="line" id="LC1237"> </div><div class="line" id="LC1238"> KICK #Finnish John :Speaking English</div><div class="line" id="LC1239"> ; Command to kick John from #Finnish</div><div class="line" id="LC1240"> using "Speaking English" as the</div><div class="line" id="LC1241"> reason (comment).</div><div class="line" id="LC1242"> </div><div class="line" id="LC1243"> :WiZ!jto@tolsun.oulu.fi KICK #Finnish John</div><div class="line" id="LC1244"> ; KICK message on channel #Finnish</div><div class="line" id="LC1245"> from WiZ to remove John from channel</div><div class="line" id="LC1246"> </div><div class="line" id="LC1247">3.3 Sending messages</div><div class="line" id="LC1248"> </div><div class="line" id="LC1249"> The main purpose of the IRC protocol is to provide a base for clients</div><div class="line" id="LC1250"> to communicate with each other. PRIVMSG, NOTICE and SQUERY</div><div class="line" id="LC1251"> (described in Section 3.5 on Service Query and Commands) are the only</div><div class="line" id="LC1252"> messages available which actually perform delivery of a text message</div><div class="line" id="LC1253"> from one client to another - the rest just make it possible and try</div><div class="line" id="LC1254"> to ensure it happens in a reliable and structured manner.</div><div class="line" id="LC1255"> </div><div class="line" id="LC1256">3.3.1 Private messages</div><div class="line" id="LC1257"> </div><div class="line" id="LC1258"> Command: PRIVMSG</div><div class="line" id="LC1259"> Parameters: <msgtarget> <text to be sent></div><div class="line" id="LC1260"> </div><div class="line" id="LC1261"> PRIVMSG is used to send private messages between users, as well as to</div><div class="line" id="LC1262"> send messages to channels. <msgtarget> is usually the nickname of</div><div class="line" id="LC1263"> the recipient of the message, or a channel name.</div><div class="line" id="LC1264"> </div><div class="line" id="LC1265"> The <msgtarget> parameter may also be a host mask (#<mask>) or server</div><div class="line" id="LC1266"> mask ($<mask>). In both cases the server will only send the PRIVMSG</div><div class="line" id="LC1267"> to those who have a server or host matching the mask. The mask MUST</div><div class="line" id="LC1268"> have at least 1 (one) "." in it and no wildcards following the last</div><div class="line" id="LC1269"> ".". This requirement exists to prevent people sending messages to</div><div class="line" id="LC1270"> "#*" or "$*", which would broadcast to all users. Wildcards are the</div><div class="line" id="LC1271"> '*' and '?' characters. This extension to the PRIVMSG command is</div><div class="line" id="LC1272"> only available to operators.</div><div class="line" id="LC1273"> </div><div class="line" id="LC1274"> Numeric Replies:</div><div class="line" id="LC1275"> </div><div class="line" id="LC1276"> ERR_NORECIPIENT ERR_NOTEXTTOSEND</div><div class="line" id="LC1277"> ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL</div><div class="line" id="LC1278"> ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS</div><div class="line" id="LC1279"> ERR_NOSUCHNICK</div><div class="line" id="LC1280"> RPL_AWAY</div><div class="line" id="LC1281"> </div><div class="line" id="LC1282"> </div><div class="line" id="LC1283"> </div><div class="line" id="LC1284">Kalt Informational [Page 23]</div><div class="line" id="LC1285"> </div><div class="line" id="LC1286">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1287"> </div><div class="line" id="LC1288"> </div><div class="line" id="LC1289"> Examples:</div><div class="line" id="LC1290"> </div><div class="line" id="LC1291"> :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ?</div><div class="line" id="LC1292"> ; Message from Angel to Wiz.</div><div class="line" id="LC1293"> </div><div class="line" id="LC1294"> PRIVMSG Angel :yes I'm receiving it !</div><div class="line" id="LC1295"> ; Command to send a message to Angel.</div><div class="line" id="LC1296"> </div><div class="line" id="LC1297"> PRIVMSG jto@tolsun.oulu.fi :Hello !</div><div class="line" id="LC1298"> ; Command to send a message to a user</div><div class="line" id="LC1299"> on server tolsun.oulu.fi with</div><div class="line" id="LC1300"> username of "jto".</div><div class="line" id="LC1301"> </div><div class="line" id="LC1302"> PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog?</div><div class="line" id="LC1303"> ; Message to a user on server</div><div class="line" id="LC1304"> irc.stealth.net with username of</div><div class="line" id="LC1305"> "kalt", and connected from the host</div><div class="line" id="LC1306"> millennium.stealth.net.</div><div class="line" id="LC1307"> </div><div class="line" id="LC1308"> PRIVMSG kalt%millennium.stealth.net :Do you like cheese?</div><div class="line" id="LC1309"> ; Message to a user on the local</div><div class="line" id="LC1310"> server with username of "kalt", and</div><div class="line" id="LC1311"> connected from the host</div><div class="line" id="LC1312"> millennium.stealth.net.</div><div class="line" id="LC1313"> </div><div class="line" id="LC1314"> PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello !</div><div class="line" id="LC1315"> ; Message to the user with nickname</div><div class="line" id="LC1316"> Wiz who is connected from the host</div><div class="line" id="LC1317"> tolsun.oulu.fi and has the username</div><div class="line" id="LC1318"> "jto".</div><div class="line" id="LC1319"> </div><div class="line" id="LC1320"> PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting.</div><div class="line" id="LC1321"> ; Message to everyone on a server</div><div class="line" id="LC1322"> which has a name matching *.fi.</div><div class="line" id="LC1323"> </div><div class="line" id="LC1324"> PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions</div><div class="line" id="LC1325"> ; Message to all users who come from</div><div class="line" id="LC1326"> a host which has a name matching</div><div class="line" id="LC1327"> *.edu.</div><div class="line" id="LC1328"> </div><div class="line" id="LC1329">3.3.2 Notice</div><div class="line" id="LC1330"> </div><div class="line" id="LC1331"> Command: NOTICE</div><div class="line" id="LC1332"> Parameters: <msgtarget> <text></div><div class="line" id="LC1333"> </div><div class="line" id="LC1334"> The NOTICE command is used similarly to PRIVMSG. The difference</div><div class="line" id="LC1335"> between NOTICE and PRIVMSG is that automatic replies MUST NEVER be</div><div class="line" id="LC1336"> sent in response to a NOTICE message. This rule applies to servers</div><div class="line" id="LC1337"> </div><div class="line" id="LC1338"> </div><div class="line" id="LC1339"> </div><div class="line" id="LC1340">Kalt Informational [Page 24]</div><div class="line" id="LC1341"> </div><div class="line" id="LC1342">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1343"> </div><div class="line" id="LC1344"> </div><div class="line" id="LC1345"> too - they MUST NOT send any error reply back to the client on</div><div class="line" id="LC1346"> receipt of a notice. The object of this rule is to avoid loops</div><div class="line" id="LC1347"> between clients automatically sending something in response to</div><div class="line" id="LC1348"> something it received.</div><div class="line" id="LC1349"> </div><div class="line" id="LC1350"> This command is available to services as well as users.</div><div class="line" id="LC1351"> </div><div class="line" id="LC1352"> This is typically used by services, and automatons (clients with</div><div class="line" id="LC1353"> either an AI or other interactive program controlling their actions).</div><div class="line" id="LC1354"> </div><div class="line" id="LC1355"> See PRIVMSG for more details on replies and examples.</div><div class="line" id="LC1356"> </div><div class="line" id="LC1357">3.4 Server queries and commands</div><div class="line" id="LC1358"> </div><div class="line" id="LC1359"> The server query group of commands has been designed to return</div><div class="line" id="LC1360"> information about any server which is connected to the network.</div><div class="line" id="LC1361"> </div><div class="line" id="LC1362"> In these queries, where a parameter appears as <target>, wildcard</div><div class="line" id="LC1363"> masks are usually valid. For each parameter, however, only one query</div><div class="line" id="LC1364"> and set of replies is to be generated. In most cases, if a nickname</div><div class="line" id="LC1365"> is given, it will mean the server to which the user is connected.</div><div class="line" id="LC1366"> </div><div class="line" id="LC1367"> These messages typically have little value for services, it is</div><div class="line" id="LC1368"> therefore RECOMMENDED to forbid services from using them.</div><div class="line" id="LC1369"> </div><div class="line" id="LC1370">3.4.1 Motd message</div><div class="line" id="LC1371"> </div><div class="line" id="LC1372"> Command: MOTD</div><div class="line" id="LC1373"> Parameters: [ <target> ]</div><div class="line" id="LC1374"> </div><div class="line" id="LC1375"> The MOTD command is used to get the "Message Of The Day" of the given</div><div class="line" id="LC1376"> server, or current server if <target> is omitted.</div><div class="line" id="LC1377"> </div><div class="line" id="LC1378"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1379"> </div><div class="line" id="LC1380"> Numeric Replies:</div><div class="line" id="LC1381"> RPL_MOTDSTART RPL_MOTD</div><div class="line" id="LC1382"> RPL_ENDOFMOTD ERR_NOMOTD</div><div class="line" id="LC1383"> </div><div class="line" id="LC1384">3.4.2 Lusers message</div><div class="line" id="LC1385"> </div><div class="line" id="LC1386"> Command: LUSERS</div><div class="line" id="LC1387"> Parameters: [ <mask> [ <target> ] ]</div><div class="line" id="LC1388"> </div><div class="line" id="LC1389"> The LUSERS command is used to get statistics about the size of the</div><div class="line" id="LC1390"> IRC network. If no parameter is given, the reply will be about the</div><div class="line" id="LC1391"> whole net. If a <mask> is specified, then the reply will only</div><div class="line" id="LC1392"> </div><div class="line" id="LC1393"> </div><div class="line" id="LC1394"> </div><div class="line" id="LC1395"> </div><div class="line" id="LC1396">Kalt Informational [Page 25]</div><div class="line" id="LC1397"> </div><div class="line" id="LC1398">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1399"> </div><div class="line" id="LC1400"> </div><div class="line" id="LC1401"> concern the part of the network formed by the servers matching the</div><div class="line" id="LC1402"> mask. Finally, if the <target> parameter is specified, the request</div><div class="line" id="LC1403"> is forwarded to that server which will generate the reply.</div><div class="line" id="LC1404"> </div><div class="line" id="LC1405"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1406"> </div><div class="line" id="LC1407"> Numeric Replies:</div><div class="line" id="LC1408"> </div><div class="line" id="LC1409"> RPL_LUSERCLIENT RPL_LUSEROP</div><div class="line" id="LC1410"> RPL_LUSERUNKOWN RPL_LUSERCHANNELS</div><div class="line" id="LC1411"> RPL_LUSERME ERR_NOSUCHSERVER</div><div class="line" id="LC1412"> </div><div class="line" id="LC1413">3.4.3 Version message</div><div class="line" id="LC1414"> </div><div class="line" id="LC1415"> Command: VERSION</div><div class="line" id="LC1416"> Parameters: [ <target> ]</div><div class="line" id="LC1417"> </div><div class="line" id="LC1418"> The VERSION command is used to query the version of the server</div><div class="line" id="LC1419"> program. An optional parameter <target> is used to query the version</div><div class="line" id="LC1420"> of the server program which a client is not directly connected to.</div><div class="line" id="LC1421"> </div><div class="line" id="LC1422"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1423"> </div><div class="line" id="LC1424"> Numeric Replies:</div><div class="line" id="LC1425"> </div><div class="line" id="LC1426"> ERR_NOSUCHSERVER RPL_VERSION</div><div class="line" id="LC1427"> </div><div class="line" id="LC1428"> Examples:</div><div class="line" id="LC1429"> </div><div class="line" id="LC1430"> VERSION tolsun.oulu.fi ; Command to check the version of</div><div class="line" id="LC1431"> server "tolsun.oulu.fi".</div><div class="line" id="LC1432"> </div><div class="line" id="LC1433">3.4.4 Stats message</div><div class="line" id="LC1434"> </div><div class="line" id="LC1435"> Command: STATS</div><div class="line" id="LC1436"> Parameters: [ <query> [ <target> ] ]</div><div class="line" id="LC1437"> </div><div class="line" id="LC1438"> The stats command is used to query statistics of certain server. If</div><div class="line" id="LC1439"> <query> parameter is omitted, only the end of stats reply is sent</div><div class="line" id="LC1440"> back.</div><div class="line" id="LC1441"> </div><div class="line" id="LC1442"> A query may be given for any single letter which is only checked by</div><div class="line" id="LC1443"> the destination server and is otherwise passed on by intermediate</div><div class="line" id="LC1444"> servers, ignored and unaltered.</div><div class="line" id="LC1445"> </div><div class="line" id="LC1446"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1447"> </div><div class="line" id="LC1448"> </div><div class="line" id="LC1449"> </div><div class="line" id="LC1450"> </div><div class="line" id="LC1451"> </div><div class="line" id="LC1452">Kalt Informational [Page 26]</div><div class="line" id="LC1453"> </div><div class="line" id="LC1454">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1455"> </div><div class="line" id="LC1456"> </div><div class="line" id="LC1457"> Except for the ones below, the list of valid queries is</div><div class="line" id="LC1458"> implementation dependent. The standard queries below SHOULD be</div><div class="line" id="LC1459"> supported by the server:</div><div class="line" id="LC1460"> </div><div class="line" id="LC1461"> l - returns a list of the server's connections, showing how</div><div class="line" id="LC1462"> long each connection has been established and the</div><div class="line" id="LC1463"> traffic over that connection in Kbytes and messages for</div><div class="line" id="LC1464"> each direction;</div><div class="line" id="LC1465"> m - returns the usage count for each of commands supported</div><div class="line" id="LC1466"> by the server; commands for which the usage count is</div><div class="line" id="LC1467"> zero MAY be omitted;</div><div class="line" id="LC1468"> o - returns a list of configured privileged users,</div><div class="line" id="LC1469"> operators;</div><div class="line" id="LC1470"> u - returns a string showing how long the server has been</div><div class="line" id="LC1471"> up.</div><div class="line" id="LC1472"> </div><div class="line" id="LC1473"> It is also RECOMMENDED that client and server access configuration be</div><div class="line" id="LC1474"> published this way.</div><div class="line" id="LC1475"> </div><div class="line" id="LC1476"> Numeric Replies:</div><div class="line" id="LC1477"> </div><div class="line" id="LC1478"> ERR_NOSUCHSERVER</div><div class="line" id="LC1479"> RPL_STATSLINKINFO RPL_STATSUPTIME</div><div class="line" id="LC1480"> RPL_STATSCOMMANDS RPL_STATSOLINE</div><div class="line" id="LC1481"> RPL_ENDOFSTATS</div><div class="line" id="LC1482"> </div><div class="line" id="LC1483"> Examples:</div><div class="line" id="LC1484"> </div><div class="line" id="LC1485"> STATS m ; Command to check the command usage</div><div class="line" id="LC1486"> for the server you are connected to</div><div class="line" id="LC1487"> </div><div class="line" id="LC1488">3.4.5 Links message</div><div class="line" id="LC1489"> </div><div class="line" id="LC1490"> Command: LINKS</div><div class="line" id="LC1491"> Parameters: [ [ <remote server> ] <server mask> ]</div><div class="line" id="LC1492"> </div><div class="line" id="LC1493"> With LINKS, a user can list all servernames, which are known by the</div><div class="line" id="LC1494"> server answering the query. The returned list of servers MUST match</div><div class="line" id="LC1495"> the mask, or if no mask is given, the full list is returned.</div><div class="line" id="LC1496"> </div><div class="line" id="LC1497"> If <remote server> is given in addition to <server mask>, the LINKS</div><div class="line" id="LC1498"> command is forwarded to the first server found that matches that name</div><div class="line" id="LC1499"> (if any), and that server is then required to answer the query.</div><div class="line" id="LC1500"> </div><div class="line" id="LC1501"> Numeric Replies:</div><div class="line" id="LC1502"> </div><div class="line" id="LC1503"> ERR_NOSUCHSERVER</div><div class="line" id="LC1504"> RPL_LINKS RPL_ENDOFLINKS</div><div class="line" id="LC1505"> </div><div class="line" id="LC1506"> </div><div class="line" id="LC1507"> </div><div class="line" id="LC1508">Kalt Informational [Page 27]</div><div class="line" id="LC1509"> </div><div class="line" id="LC1510">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1511"> </div><div class="line" id="LC1512"> </div><div class="line" id="LC1513"> Examples:</div><div class="line" id="LC1514"> </div><div class="line" id="LC1515"> LINKS *.au ; Command to list all servers which</div><div class="line" id="LC1516"> have a name that matches *.au;</div><div class="line" id="LC1517"> </div><div class="line" id="LC1518"> LINKS *.edu *.bu.edu ; Command to list servers matching</div><div class="line" id="LC1519"> *.bu.edu as seen by the first server</div><div class="line" id="LC1520"> matching *.edu.</div><div class="line" id="LC1521"> </div><div class="line" id="LC1522">3.4.6 Time message</div><div class="line" id="LC1523"> </div><div class="line" id="LC1524"> Command: TIME</div><div class="line" id="LC1525"> Parameters: [ <target> ]</div><div class="line" id="LC1526"> </div><div class="line" id="LC1527"> The time command is used to query local time from the specified</div><div class="line" id="LC1528"> server. If the <target> parameter is not given, the server receiving</div><div class="line" id="LC1529"> the command must reply to the query.</div><div class="line" id="LC1530"> </div><div class="line" id="LC1531"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1532"> </div><div class="line" id="LC1533"> Numeric Replies:</div><div class="line" id="LC1534"> </div><div class="line" id="LC1535"> ERR_NOSUCHSERVER RPL_TIME</div><div class="line" id="LC1536"> </div><div class="line" id="LC1537"> Examples:</div><div class="line" id="LC1538"> TIME tolsun.oulu.fi ; check the time on the server</div><div class="line" id="LC1539"> "tolson.oulu.fi"</div><div class="line" id="LC1540"> </div><div class="line" id="LC1541">3.4.7 Connect message</div><div class="line" id="LC1542"> </div><div class="line" id="LC1543"> Command: CONNECT</div><div class="line" id="LC1544"> Parameters: <target server> <port> [ <remote server> ]</div><div class="line" id="LC1545"> </div><div class="line" id="LC1546"> The CONNECT command can be used to request a server to try to</div><div class="line" id="LC1547"> establish a new connection to another server immediately. CONNECT is</div><div class="line" id="LC1548"> a privileged command and SHOULD be available only to IRC Operators.</div><div class="line" id="LC1549"> If a <remote server> is given and its mask doesn't match name of the</div><div class="line" id="LC1550"> parsing server, the CONNECT attempt is sent to the first match of</div><div class="line" id="LC1551"> remote server. Otherwise the CONNECT attempt is made by the server</div><div class="line" id="LC1552"> processing the request.</div><div class="line" id="LC1553"> </div><div class="line" id="LC1554"> The server receiving a remote CONNECT command SHOULD generate a</div><div class="line" id="LC1555"> WALLOPS message describing the source and target of the request.</div><div class="line" id="LC1556"> </div><div class="line" id="LC1557"> Numeric Replies:</div><div class="line" id="LC1558"> </div><div class="line" id="LC1559"> ERR_NOSUCHSERVER ERR_NOPRIVILEGES</div><div class="line" id="LC1560"> ERR_NEEDMOREPARAMS</div><div class="line" id="LC1561"> </div><div class="line" id="LC1562"> </div><div class="line" id="LC1563"> </div><div class="line" id="LC1564">Kalt Informational [Page 28]</div><div class="line" id="LC1565"> </div><div class="line" id="LC1566">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1567"> </div><div class="line" id="LC1568"> </div><div class="line" id="LC1569"> Examples:</div><div class="line" id="LC1570"> </div><div class="line" id="LC1571"> CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local</div><div class="line" id="LC1572"> server to tolsun.oulu.fi on port 6667</div><div class="line" id="LC1573"> </div><div class="line" id="LC1574">3.4.8 Trace message</div><div class="line" id="LC1575"> </div><div class="line" id="LC1576"> Command: TRACE</div><div class="line" id="LC1577"> Parameters: [ <target> ]</div><div class="line" id="LC1578"> </div><div class="line" id="LC1579"> TRACE command is used to find the route to specific server and</div><div class="line" id="LC1580"> information about its peers. Each server that processes this command</div><div class="line" id="LC1581"> MUST report to the sender about it. The replies from pass-through</div><div class="line" id="LC1582"> links form a chain, which shows route to destination. After sending</div><div class="line" id="LC1583"> this reply back, the query MUST be sent to the next server until</div><div class="line" id="LC1584"> given <target> server is reached.</div><div class="line" id="LC1585"> </div><div class="line" id="LC1586"> TRACE command is used to find the route to specific server. Each</div><div class="line" id="LC1587"> server that processes this message MUST tell the sender about it by</div><div class="line" id="LC1588"> sending a reply indicating it is a pass-through link, forming a chain</div><div class="line" id="LC1589"> of replies. After sending this reply back, it MUST then send the</div><div class="line" id="LC1590"> TRACE message to the next server until given server is reached. If</div><div class="line" id="LC1591"> the <target> parameter is omitted, it is RECOMMENDED that TRACE</div><div class="line" id="LC1592"> command sends a message to the sender telling which servers the local</div><div class="line" id="LC1593"> server has direct connection to.</div><div class="line" id="LC1594"> </div><div class="line" id="LC1595"> If the destination given by <target> is an actual server, the</div><div class="line" id="LC1596"> destination server is REQUIRED to report all servers, services and</div><div class="line" id="LC1597"> operators which are connected to it; if the command was issued by an</div><div class="line" id="LC1598"> operator, the server MAY also report all users which are connected to</div><div class="line" id="LC1599"> it. If the destination given by <target> is a nickname, then only a</div><div class="line" id="LC1600"> reply for that nickname is given. If the <target> parameter is</div><div class="line" id="LC1601"> omitted, it is RECOMMENDED that the TRACE command is parsed as</div><div class="line" id="LC1602"> targeted to the processing server.</div><div class="line" id="LC1603"> </div><div class="line" id="LC1604"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1605"> </div><div class="line" id="LC1606"> Numeric Replies:</div><div class="line" id="LC1607"> </div><div class="line" id="LC1608"> ERR_NOSUCHSERVER</div><div class="line" id="LC1609"> </div><div class="line" id="LC1610"> If the TRACE message is destined for another server, all</div><div class="line" id="LC1611"> intermediate servers must return a RPL_TRACELINK reply to indicate</div><div class="line" id="LC1612"> that the TRACE passed through it and where it is going next.</div><div class="line" id="LC1613"> </div><div class="line" id="LC1614"> RPL_TRACELINK</div><div class="line" id="LC1615"> </div><div class="line" id="LC1616"> </div><div class="line" id="LC1617"> </div><div class="line" id="LC1618"> </div><div class="line" id="LC1619"> </div><div class="line" id="LC1620">Kalt Informational [Page 29]</div><div class="line" id="LC1621"> </div><div class="line" id="LC1622">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1623"> </div><div class="line" id="LC1624"> </div><div class="line" id="LC1625"> A TRACE reply may be composed of any number of the following</div><div class="line" id="LC1626"> numeric replies.</div><div class="line" id="LC1627"> </div><div class="line" id="LC1628"> RPL_TRACECONNECTING RPL_TRACEHANDSHAKE</div><div class="line" id="LC1629"> RPL_TRACEUNKNOWN RPL_TRACEOPERATOR</div><div class="line" id="LC1630"> RPL_TRACEUSER RPL_TRACESERVER</div><div class="line" id="LC1631"> RPL_TRACESERVICE RPL_TRACENEWTYPE</div><div class="line" id="LC1632"> RPL_TRACECLASS RPL_TRACELOG</div><div class="line" id="LC1633"> RPL_TRACEEND</div><div class="line" id="LC1634"> </div><div class="line" id="LC1635"> Examples:</div><div class="line" id="LC1636"> </div><div class="line" id="LC1637"> TRACE *.oulu.fi ; TRACE to a server matching</div><div class="line" id="LC1638"> *.oulu.fi</div><div class="line" id="LC1639"> </div><div class="line" id="LC1640">3.4.9 Admin command</div><div class="line" id="LC1641"> </div><div class="line" id="LC1642"> Command: ADMIN</div><div class="line" id="LC1643"> Parameters: [ <target> ]</div><div class="line" id="LC1644"> </div><div class="line" id="LC1645"> The admin command is used to find information about the administrator</div><div class="line" id="LC1646"> of the given server, or current server if <target> parameter is</div><div class="line" id="LC1647"> omitted. Each server MUST have the ability to forward ADMIN messages</div><div class="line" id="LC1648"> to other servers.</div><div class="line" id="LC1649"> </div><div class="line" id="LC1650"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1651"> </div><div class="line" id="LC1652"> Numeric Replies:</div><div class="line" id="LC1653"> </div><div class="line" id="LC1654"> ERR_NOSUCHSERVER</div><div class="line" id="LC1655"> RPL_ADMINME RPL_ADMINLOC1</div><div class="line" id="LC1656"> RPL_ADMINLOC2 RPL_ADMINEMAIL</div><div class="line" id="LC1657"> </div><div class="line" id="LC1658"> Examples:</div><div class="line" id="LC1659"> </div><div class="line" id="LC1660"> ADMIN tolsun.oulu.fi ; request an ADMIN reply from</div><div class="line" id="LC1661"> tolsun.oulu.fi</div><div class="line" id="LC1662"> </div><div class="line" id="LC1663"> ADMIN syrk ; ADMIN request for the server to</div><div class="line" id="LC1664"> which the user syrk is connected</div><div class="line" id="LC1665"> </div><div class="line" id="LC1666"> </div><div class="line" id="LC1667"> </div><div class="line" id="LC1668"> </div><div class="line" id="LC1669"> </div><div class="line" id="LC1670"> </div><div class="line" id="LC1671"> </div><div class="line" id="LC1672"> </div><div class="line" id="LC1673"> </div><div class="line" id="LC1674"> </div><div class="line" id="LC1675"> </div><div class="line" id="LC1676">Kalt Informational [Page 30]</div><div class="line" id="LC1677"> </div><div class="line" id="LC1678">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1679"> </div><div class="line" id="LC1680"> </div><div class="line" id="LC1681">3.4.10 Info command</div><div class="line" id="LC1682"> </div><div class="line" id="LC1683"> Command: INFO</div><div class="line" id="LC1684"> Parameters: [ <target> ]</div><div class="line" id="LC1685"> </div><div class="line" id="LC1686"> The INFO command is REQUIRED to return information describing the</div><div class="line" id="LC1687"> server: its version, when it was compiled, the patchlevel, when it</div><div class="line" id="LC1688"> was started, and any other miscellaneous information which may be</div><div class="line" id="LC1689"> considered to be relevant.</div><div class="line" id="LC1690"> </div><div class="line" id="LC1691"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1692"> </div><div class="line" id="LC1693"> Numeric Replies:</div><div class="line" id="LC1694"> </div><div class="line" id="LC1695"> ERR_NOSUCHSERVER</div><div class="line" id="LC1696"> RPL_INFO RPL_ENDOFINFO</div><div class="line" id="LC1697"> </div><div class="line" id="LC1698"> Examples:</div><div class="line" id="LC1699"> </div><div class="line" id="LC1700"> INFO csd.bu.edu ; request an INFO reply from</div><div class="line" id="LC1701"> csd.bu.edu</div><div class="line" id="LC1702"> </div><div class="line" id="LC1703"> INFO Angel ; request info from the server that</div><div class="line" id="LC1704"> Angel is connected to.</div><div class="line" id="LC1705"> </div><div class="line" id="LC1706">3.5 Service Query and Commands</div><div class="line" id="LC1707"> </div><div class="line" id="LC1708"> The service query group of commands has been designed to return</div><div class="line" id="LC1709"> information about any service which is connected to the network.</div><div class="line" id="LC1710"> </div><div class="line" id="LC1711">3.5.1 Servlist message</div><div class="line" id="LC1712"> </div><div class="line" id="LC1713"> Command: SERVLIST</div><div class="line" id="LC1714"> Parameters: [ <mask> [ <type> ] ]</div><div class="line" id="LC1715"> </div><div class="line" id="LC1716"> The SERVLIST command is used to list services currently connected to</div><div class="line" id="LC1717"> the network and visible to the user issuing the command. The</div><div class="line" id="LC1718"> optional parameters may be used to restrict the result of the query</div><div class="line" id="LC1719"> (to matching services names, and services type).</div><div class="line" id="LC1720"> </div><div class="line" id="LC1721"> Numeric Replies:</div><div class="line" id="LC1722"> </div><div class="line" id="LC1723"> RPL_SERVLIST RPL_SERVLISTEND</div><div class="line" id="LC1724"> </div><div class="line" id="LC1725"> </div><div class="line" id="LC1726"> </div><div class="line" id="LC1727"> </div><div class="line" id="LC1728"> </div><div class="line" id="LC1729"> </div><div class="line" id="LC1730"> </div><div class="line" id="LC1731"> </div><div class="line" id="LC1732">Kalt Informational [Page 31]</div><div class="line" id="LC1733"> </div><div class="line" id="LC1734">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1735"> </div><div class="line" id="LC1736"> </div><div class="line" id="LC1737">3.5.2 Squery</div><div class="line" id="LC1738"> </div><div class="line" id="LC1739"> Command: SQUERY</div><div class="line" id="LC1740"> Parameters: <servicename> <text></div><div class="line" id="LC1741"> </div><div class="line" id="LC1742"> The SQUERY command is used similarly to PRIVMSG. The only difference</div><div class="line" id="LC1743"> is that the recipient MUST be a service. This is the only way for a</div><div class="line" id="LC1744"> text message to be delivered to a service.</div><div class="line" id="LC1745"> </div><div class="line" id="LC1746"> See PRIVMSG for more details on replies and example.</div><div class="line" id="LC1747"> </div><div class="line" id="LC1748"> Examples:</div><div class="line" id="LC1749"> </div><div class="line" id="LC1750"> SQUERY irchelp :HELP privmsg</div><div class="line" id="LC1751"> ; Message to the service with</div><div class="line" id="LC1752"> nickname irchelp.</div><div class="line" id="LC1753"> </div><div class="line" id="LC1754"> SQUERY dict@irc.fr :fr2en blaireau</div><div class="line" id="LC1755"> ; Message to the service with name</div><div class="line" id="LC1756"> dict@irc.fr.</div><div class="line" id="LC1757"> </div><div class="line" id="LC1758">3.6 User based queries</div><div class="line" id="LC1759"> </div><div class="line" id="LC1760"> User queries are a group of commands which are primarily concerned</div><div class="line" id="LC1761"> with finding details on a particular user or group users. When using</div><div class="line" id="LC1762"> wildcards with any of these commands, if they match, they will only</div><div class="line" id="LC1763"> return information on users who are 'visible' to you. The visibility</div><div class="line" id="LC1764"> of a user is determined as a combination of the user's mode and the</div><div class="line" id="LC1765"> common set of channels you are both on.</div><div class="line" id="LC1766"> </div><div class="line" id="LC1767"> Although services SHOULD NOT be using this class of message, they are</div><div class="line" id="LC1768"> allowed to.</div><div class="line" id="LC1769"> </div><div class="line" id="LC1770">3.6.1 Who query</div><div class="line" id="LC1771"> </div><div class="line" id="LC1772"> Command: WHO</div><div class="line" id="LC1773"> Parameters: [ <mask> [ "o" ] ]</div><div class="line" id="LC1774"> </div><div class="line" id="LC1775"> The WHO command is used by a client to generate a query which returns</div><div class="line" id="LC1776"> a list of information which 'matches' the <mask> parameter given by</div><div class="line" id="LC1777"> the client. In the absence of the <mask> parameter, all visible</div><div class="line" id="LC1778"> (users who aren't invisible (user mode +i) and who don't have a</div><div class="line" id="LC1779"> common channel with the requesting client) are listed. The same</div><div class="line" id="LC1780"> result can be achieved by using a <mask> of "0" or any wildcard which</div><div class="line" id="LC1781"> will end up matching every visible user.</div><div class="line" id="LC1782"> </div><div class="line" id="LC1783"> The <mask> passed to WHO is matched against users' host, server, real</div><div class="line" id="LC1784"> name and nickname if the channel <mask> cannot be found.</div><div class="line" id="LC1785"> </div><div class="line" id="LC1786"> </div><div class="line" id="LC1787"> </div><div class="line" id="LC1788">Kalt Informational [Page 32]</div><div class="line" id="LC1789"> </div><div class="line" id="LC1790">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1791"> </div><div class="line" id="LC1792"> </div><div class="line" id="LC1793"> If the "o" parameter is passed only operators are returned according</div><div class="line" id="LC1794"> to the <mask> supplied.</div><div class="line" id="LC1795"> </div><div class="line" id="LC1796"> Numeric Replies:</div><div class="line" id="LC1797"> </div><div class="line" id="LC1798"> ERR_NOSUCHSERVER</div><div class="line" id="LC1799"> RPL_WHOREPLY RPL_ENDOFWHO</div><div class="line" id="LC1800"> </div><div class="line" id="LC1801"> Examples:</div><div class="line" id="LC1802"> </div><div class="line" id="LC1803"> WHO *.fi ; Command to list all users who match</div><div class="line" id="LC1804"> against "*.fi".</div><div class="line" id="LC1805"> </div><div class="line" id="LC1806"> WHO jto* o ; Command to list all users with a</div><div class="line" id="LC1807"> match against "jto*" if they are an</div><div class="line" id="LC1808"> operator.</div><div class="line" id="LC1809"> </div><div class="line" id="LC1810">3.6.2 Whois query</div><div class="line" id="LC1811"> </div><div class="line" id="LC1812"> Command: WHOIS</div><div class="line" id="LC1813"> Parameters: [ <target> ] <mask> *( "," <mask> )</div><div class="line" id="LC1814"> </div><div class="line" id="LC1815"> This command is used to query information about particular user.</div><div class="line" id="LC1816"> The server will answer this command with several numeric messages</div><div class="line" id="LC1817"> indicating different statuses of each user which matches the mask (if</div><div class="line" id="LC1818"> you are entitled to see them). If no wildcard is present in the</div><div class="line" id="LC1819"> <mask>, any information about that nick which you are allowed to see</div><div class="line" id="LC1820"> is presented.</div><div class="line" id="LC1821"> </div><div class="line" id="LC1822"> If the <target> parameter is specified, it sends the query to a</div><div class="line" id="LC1823"> specific server. It is useful if you want to know how long the user</div><div class="line" id="LC1824"> in question has been idle as only local server (i.e., the server the</div><div class="line" id="LC1825"> user is directly connected to) knows that information, while</div><div class="line" id="LC1826"> everything else is globally known.</div><div class="line" id="LC1827"> </div><div class="line" id="LC1828"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1829"> </div><div class="line" id="LC1830"> Numeric Replies:</div><div class="line" id="LC1831"> </div><div class="line" id="LC1832"> ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN</div><div class="line" id="LC1833"> RPL_WHOISUSER RPL_WHOISCHANNELS</div><div class="line" id="LC1834"> RPL_WHOISCHANNELS RPL_WHOISSERVER</div><div class="line" id="LC1835"> RPL_AWAY RPL_WHOISOPERATOR</div><div class="line" id="LC1836"> RPL_WHOISIDLE ERR_NOSUCHNICK</div><div class="line" id="LC1837"> RPL_ENDOFWHOIS</div><div class="line" id="LC1838"> </div><div class="line" id="LC1839"> </div><div class="line" id="LC1840"> </div><div class="line" id="LC1841"> </div><div class="line" id="LC1842"> </div><div class="line" id="LC1843"> </div><div class="line" id="LC1844">Kalt Informational [Page 33]</div><div class="line" id="LC1845"> </div><div class="line" id="LC1846">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1847"> </div><div class="line" id="LC1848"> </div><div class="line" id="LC1849"> Examples:</div><div class="line" id="LC1850"> </div><div class="line" id="LC1851"> WHOIS wiz ; return available user information</div><div class="line" id="LC1852"> about nick WiZ</div><div class="line" id="LC1853"> </div><div class="line" id="LC1854"> WHOIS eff.org trillian ; ask server eff.org for user</div><div class="line" id="LC1855"> information about trillian</div><div class="line" id="LC1856"> </div><div class="line" id="LC1857">3.6.3 Whowas</div><div class="line" id="LC1858"> </div><div class="line" id="LC1859"> Command: WHOWAS</div><div class="line" id="LC1860"> Parameters: <nickname> *( "," <nickname> ) [ <count> [ <target> ] ]</div><div class="line" id="LC1861"> </div><div class="line" id="LC1862"> Whowas asks for information about a nickname which no longer exists.</div><div class="line" id="LC1863"> This may either be due to a nickname change or the user leaving IRC.</div><div class="line" id="LC1864"> In response to this query, the server searches through its nickname</div><div class="line" id="LC1865"> history, looking for any nicks which are lexically the same (no wild</div><div class="line" id="LC1866"> card matching here). The history is searched backward, returning the</div><div class="line" id="LC1867"> most recent entry first. If there are multiple entries, up to</div><div class="line" id="LC1868"> <count> replies will be returned (or all of them if no <count></div><div class="line" id="LC1869"> parameter is given). If a non-positive number is passed as being</div><div class="line" id="LC1870"> <count>, then a full search is done.</div><div class="line" id="LC1871"> </div><div class="line" id="LC1872"> Wildcards are allowed in the <target> parameter.</div><div class="line" id="LC1873"> </div><div class="line" id="LC1874"> Numeric Replies:</div><div class="line" id="LC1875"> </div><div class="line" id="LC1876"> ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK</div><div class="line" id="LC1877"> RPL_WHOWASUSER RPL_WHOISSERVER</div><div class="line" id="LC1878"> RPL_ENDOFWHOWAS</div><div class="line" id="LC1879"> </div><div class="line" id="LC1880"> Examples:</div><div class="line" id="LC1881"> </div><div class="line" id="LC1882"> WHOWAS Wiz ; return all information in the nick</div><div class="line" id="LC1883"> history about nick "WiZ";</div><div class="line" id="LC1884"> </div><div class="line" id="LC1885"> WHOWAS Mermaid 9 ; return at most, the 9 most recent</div><div class="line" id="LC1886"> entries in the nick history for</div><div class="line" id="LC1887"> "Mermaid";</div><div class="line" id="LC1888"> </div><div class="line" id="LC1889"> WHOWAS Trillian 1 *.edu ; return the most recent history for</div><div class="line" id="LC1890"> "Trillian" from the first server</div><div class="line" id="LC1891"> found to match "*.edu".</div><div class="line" id="LC1892"> </div><div class="line" id="LC1893">3.7 Miscellaneous messages</div><div class="line" id="LC1894"> </div><div class="line" id="LC1895"> Messages in this category do not fit into any of the above categories</div><div class="line" id="LC1896"> but are nonetheless still a part of and REQUIRED by the protocol.</div><div class="line" id="LC1897"> </div><div class="line" id="LC1898"> </div><div class="line" id="LC1899"> </div><div class="line" id="LC1900">Kalt Informational [Page 34]</div><div class="line" id="LC1901"> </div><div class="line" id="LC1902">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1903"> </div><div class="line" id="LC1904"> </div><div class="line" id="LC1905">3.7.1 Kill message</div><div class="line" id="LC1906"> </div><div class="line" id="LC1907"> Command: KILL</div><div class="line" id="LC1908"> Parameters: <nickname> <comment></div><div class="line" id="LC1909"> </div><div class="line" id="LC1910"> The KILL command is used to cause a client-server connection to be</div><div class="line" id="LC1911"> closed by the server which has the actual connection. Servers</div><div class="line" id="LC1912"> generate KILL messages on nickname collisions. It MAY also be</div><div class="line" id="LC1913"> available available to users who have the operator status.</div><div class="line" id="LC1914"> </div><div class="line" id="LC1915"> Clients which have automatic reconnect algorithms effectively make</div><div class="line" id="LC1916"> this command useless since the disconnection is only brief. It does</div><div class="line" id="LC1917"> however break the flow of data and can be used to stop large amounts</div><div class="line" id="LC1918"> of 'flooding' from abusive users or accidents. Abusive users usually</div><div class="line" id="LC1919"> don't care as they will reconnect promptly and resume their abusive</div><div class="line" id="LC1920"> behaviour. To prevent this command from being abused, any user may</div><div class="line" id="LC1921"> elect to receive KILL messages generated for others to keep an 'eye'</div><div class="line" id="LC1922"> on would be trouble spots.</div><div class="line" id="LC1923"> </div><div class="line" id="LC1924"> In an arena where nicknames are REQUIRED to be globally unique at all</div><div class="line" id="LC1925"> times, KILL messages are sent whenever 'duplicates' are detected</div><div class="line" id="LC1926"> (that is an attempt to register two users with the same nickname) in</div><div class="line" id="LC1927"> the hope that both of them will disappear and only 1 reappear.</div><div class="line" id="LC1928"> </div><div class="line" id="LC1929"> When a client is removed as the result of a KILL message, the server</div><div class="line" id="LC1930"> SHOULD add the nickname to the list of unavailable nicknames in an</div><div class="line" id="LC1931"> attempt to avoid clients to reuse this name immediately which is</div><div class="line" id="LC1932"> usually the pattern of abusive behaviour often leading to useless</div><div class="line" id="LC1933"> "KILL loops". See the "IRC Server Protocol" document [IRC-SERVER]</div><div class="line" id="LC1934"> for more information on this procedure.</div><div class="line" id="LC1935"> </div><div class="line" id="LC1936"> The comment given MUST reflect the actual reason for the KILL. For</div><div class="line" id="LC1937"> server-generated KILLs it usually is made up of details concerning</div><div class="line" id="LC1938"> the origins of the two conflicting nicknames. For users it is left</div><div class="line" id="LC1939"> up to them to provide an adequate reason to satisfy others who see</div><div class="line" id="LC1940"> it. To prevent/discourage fake KILLs from being generated to hide</div><div class="line" id="LC1941"> the identify of the KILLer, the comment also shows a 'kill-path'</div><div class="line" id="LC1942"> which is updated by each server it passes through, each prepending</div><div class="line" id="LC1943"> its name to the path.</div><div class="line" id="LC1944"> </div><div class="line" id="LC1945"> Numeric Replies:</div><div class="line" id="LC1946"> </div><div class="line" id="LC1947"> ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS</div><div class="line" id="LC1948"> ERR_NOSUCHNICK ERR_CANTKILLSERVER</div><div class="line" id="LC1949"> </div><div class="line" id="LC1950"> </div><div class="line" id="LC1951"> </div><div class="line" id="LC1952"> </div><div class="line" id="LC1953"> </div><div class="line" id="LC1954"> </div><div class="line" id="LC1955"> </div><div class="line" id="LC1956">Kalt Informational [Page 35]</div><div class="line" id="LC1957"> </div><div class="line" id="LC1958">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC1959"> </div><div class="line" id="LC1960"> </div><div class="line" id="LC1961"> NOTE:</div><div class="line" id="LC1962"> It is RECOMMENDED that only Operators be allowed to kill other users</div><div class="line" id="LC1963"> with KILL command. This command has been the subject of many</div><div class="line" id="LC1964"> controversies over the years, and along with the above</div><div class="line" id="LC1965"> recommendation, it is also widely recognized that not even operators</div><div class="line" id="LC1966"> should be allowed to kill users on remote servers.</div><div class="line" id="LC1967"> </div><div class="line" id="LC1968">3.7.2 Ping message</div><div class="line" id="LC1969"> </div><div class="line" id="LC1970"> Command: PING</div><div class="line" id="LC1971"> Parameters: <server1> [ <server2> ]</div><div class="line" id="LC1972"> </div><div class="line" id="LC1973"> The PING command is used to test the presence of an active client or</div><div class="line" id="LC1974"> server at the other end of the connection. Servers send a PING</div><div class="line" id="LC1975"> message at regular intervals if no other activity detected coming</div><div class="line" id="LC1976"> from a connection. If a connection fails to respond to a PING</div><div class="line" id="LC1977"> message within a set amount of time, that connection is closed. A</div><div class="line" id="LC1978"> PING message MAY be sent even if the connection is active.</div><div class="line" id="LC1979"> </div><div class="line" id="LC1980"> When a PING message is received, the appropriate PONG message MUST be</div><div class="line" id="LC1981"> sent as reply to <server1> (server which sent the PING message out)</div><div class="line" id="LC1982"> as soon as possible. If the <server2> parameter is specified, it</div><div class="line" id="LC1983"> represents the target of the ping, and the message gets forwarded</div><div class="line" id="LC1984"> there.</div><div class="line" id="LC1985"> </div><div class="line" id="LC1986"> Numeric Replies:</div><div class="line" id="LC1987"> </div><div class="line" id="LC1988"> ERR_NOORIGIN ERR_NOSUCHSERVER</div><div class="line" id="LC1989"> </div><div class="line" id="LC1990"> Examples:</div><div class="line" id="LC1991"> </div><div class="line" id="LC1992"> PING tolsun.oulu.fi ; Command to send a PING message to</div><div class="line" id="LC1993"> server</div><div class="line" id="LC1994"> </div><div class="line" id="LC1995"> PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING</div><div class="line" id="LC1996"> message to server "tolsun.oulu.fi"</div><div class="line" id="LC1997"> </div><div class="line" id="LC1998"> PING :irc.funet.fi ; Ping message sent by server</div><div class="line" id="LC1999"> "irc.funet.fi"</div><div class="line" id="LC2000"> </div><div class="line" id="LC2001"> </div><div class="line" id="LC2002"> </div><div class="line" id="LC2003"> </div><div class="line" id="LC2004"> </div><div class="line" id="LC2005"> </div><div class="line" id="LC2006"> </div><div class="line" id="LC2007"> </div><div class="line" id="LC2008"> </div><div class="line" id="LC2009"> </div><div class="line" id="LC2010"> </div><div class="line" id="LC2011"> </div><div class="line" id="LC2012">Kalt Informational [Page 36]</div><div class="line" id="LC2013"> </div><div class="line" id="LC2014">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2015"> </div><div class="line" id="LC2016"> </div><div class="line" id="LC2017">3.7.3 Pong message</div><div class="line" id="LC2018"> </div><div class="line" id="LC2019"> Command: PONG</div><div class="line" id="LC2020"> Parameters: <server> [ <server2> ]</div><div class="line" id="LC2021"> </div><div class="line" id="LC2022"> PONG message is a reply to ping message. If parameter <server2> is</div><div class="line" id="LC2023"> given, this message MUST be forwarded to given target. The <server></div><div class="line" id="LC2024"> parameter is the name of the entity who has responded to PING message</div><div class="line" id="LC2025"> and generated this message.</div><div class="line" id="LC2026"> </div><div class="line" id="LC2027"> Numeric Replies:</div><div class="line" id="LC2028"> </div><div class="line" id="LC2029"> ERR_NOORIGIN ERR_NOSUCHSERVER</div><div class="line" id="LC2030"> </div><div class="line" id="LC2031"> Example:</div><div class="line" id="LC2032"> </div><div class="line" id="LC2033"> PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to</div><div class="line" id="LC2034"> tolsun.oulu.fi</div><div class="line" id="LC2035"> </div><div class="line" id="LC2036">3.7.4 Error</div><div class="line" id="LC2037"> </div><div class="line" id="LC2038"> Command: ERROR</div><div class="line" id="LC2039"> Parameters: <error message></div><div class="line" id="LC2040"> </div><div class="line" id="LC2041"> The ERROR command is for use by servers when reporting a serious or</div><div class="line" id="LC2042"> fatal error to its peers. It may also be sent from one server to</div><div class="line" id="LC2043"> another but MUST NOT be accepted from any normal unknown clients.</div><div class="line" id="LC2044"> </div><div class="line" id="LC2045"> Only an ERROR message SHOULD be used for reporting errors which occur</div><div class="line" id="LC2046"> with a server-to-server link. An ERROR message is sent to the server</div><div class="line" id="LC2047"> at the other end (which reports it to appropriate local users and</div><div class="line" id="LC2048"> logs) and to appropriate local users and logs. It is not to be</div><div class="line" id="LC2049"> passed onto any other servers by a server if it is received from a</div><div class="line" id="LC2050"> server.</div><div class="line" id="LC2051"> </div><div class="line" id="LC2052"> The ERROR message is also used before terminating a client</div><div class="line" id="LC2053"> connection.</div><div class="line" id="LC2054"> </div><div class="line" id="LC2055"> When a server sends a received ERROR message to its operators, the</div><div class="line" id="LC2056"> message SHOULD be encapsulated inside a NOTICE message, indicating</div><div class="line" id="LC2057"> that the client was not responsible for the error.</div><div class="line" id="LC2058"> </div><div class="line" id="LC2059"> Numerics:</div><div class="line" id="LC2060"> </div><div class="line" id="LC2061"> None.</div><div class="line" id="LC2062"> </div><div class="line" id="LC2063"> </div><div class="line" id="LC2064"> </div><div class="line" id="LC2065"> </div><div class="line" id="LC2066"> </div><div class="line" id="LC2067"> </div><div class="line" id="LC2068">Kalt Informational [Page 37]</div><div class="line" id="LC2069"> </div><div class="line" id="LC2070">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2071"> </div><div class="line" id="LC2072"> </div><div class="line" id="LC2073"> Examples:</div><div class="line" id="LC2074"> </div><div class="line" id="LC2075"> ERROR :Server *.fi already exists ; ERROR message to the other server</div><div class="line" id="LC2076"> which caused this error.</div><div class="line" id="LC2077"> </div><div class="line" id="LC2078"> NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists</div><div class="line" id="LC2079"> ; Same ERROR message as above but</div><div class="line" id="LC2080"> sent to user WiZ on the other server.</div><div class="line" id="LC2081"> </div><div class="line" id="LC2082">4. Optional features</div><div class="line" id="LC2083"> </div><div class="line" id="LC2084"> This section describes OPTIONAL messages. They are not required in a</div><div class="line" id="LC2085"> working server implementation of the protocol described herein. In</div><div class="line" id="LC2086"> the absence of the feature, an error reply message MUST be generated</div><div class="line" id="LC2087"> or an unknown command error. If the message is destined for another</div><div class="line" id="LC2088"> server to answer then it MUST be passed on (elementary parsing</div><div class="line" id="LC2089"> REQUIRED) The allocated numerics for this are listed with the</div><div class="line" id="LC2090"> messages below.</div><div class="line" id="LC2091"> </div><div class="line" id="LC2092"> From this section, only the USERHOST and ISON messages are available</div><div class="line" id="LC2093"> to services.</div><div class="line" id="LC2094"> </div><div class="line" id="LC2095">4.1 Away</div><div class="line" id="LC2096"> </div><div class="line" id="LC2097"> Command: AWAY</div><div class="line" id="LC2098"> Parameters: [ <text> ]</div><div class="line" id="LC2099"> </div><div class="line" id="LC2100"> With the AWAY command, clients can set an automatic reply string for</div><div class="line" id="LC2101"> any PRIVMSG commands directed at them (not to a channel they are on).</div><div class="line" id="LC2102"> The server sends an automatic reply to the client sending the PRIVMSG</div><div class="line" id="LC2103"> command. The only replying server is the one to which the sending</div><div class="line" id="LC2104"> client is connected to.</div><div class="line" id="LC2105"> </div><div class="line" id="LC2106"> The AWAY command is used either with one parameter, to set an AWAY</div><div class="line" id="LC2107"> message, or with no parameters, to remove the AWAY message.</div><div class="line" id="LC2108"> </div><div class="line" id="LC2109"> Because of its high cost (memory and bandwidth wise), the AWAY</div><div class="line" id="LC2110"> message SHOULD only be used for client-server communication. A</div><div class="line" id="LC2111"> server MAY choose to silently ignore AWAY messages received from</div><div class="line" id="LC2112"> other servers. To update the away status of a client across servers,</div><div class="line" id="LC2113"> the user mode 'a' SHOULD be used instead. (See Section 3.1.5)</div><div class="line" id="LC2114"> </div><div class="line" id="LC2115"> Numeric Replies:</div><div class="line" id="LC2116"> </div><div class="line" id="LC2117"> RPL_UNAWAY RPL_NOWAWAY</div><div class="line" id="LC2118"> </div><div class="line" id="LC2119"> </div><div class="line" id="LC2120"> </div><div class="line" id="LC2121"> </div><div class="line" id="LC2122"> </div><div class="line" id="LC2123"> </div><div class="line" id="LC2124">Kalt Informational [Page 38]</div><div class="line" id="LC2125"> </div><div class="line" id="LC2126">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2127"> </div><div class="line" id="LC2128"> </div><div class="line" id="LC2129"> Example:</div><div class="line" id="LC2130"> </div><div class="line" id="LC2131"> AWAY :Gone to lunch. Back in 5 ; Command to set away message to</div><div class="line" id="LC2132"> "Gone to lunch. Back in 5".</div><div class="line" id="LC2133"> </div><div class="line" id="LC2134">4.2 Rehash message</div><div class="line" id="LC2135"> </div><div class="line" id="LC2136"> Command: REHASH</div><div class="line" id="LC2137"> Parameters: None</div><div class="line" id="LC2138"> </div><div class="line" id="LC2139"> The rehash command is an administrative command which can be used by</div><div class="line" id="LC2140"> an operator to force the server to re-read and process its</div><div class="line" id="LC2141"> configuration file.</div><div class="line" id="LC2142"> </div><div class="line" id="LC2143"> Numeric Replies:</div><div class="line" id="LC2144"> </div><div class="line" id="LC2145"> RPL_REHASHING ERR_NOPRIVILEGES</div><div class="line" id="LC2146"> </div><div class="line" id="LC2147"> </div><div class="line" id="LC2148"> Example:</div><div class="line" id="LC2149"> </div><div class="line" id="LC2150"> REHASH ; message from user with operator</div><div class="line" id="LC2151"> status to server asking it to reread</div><div class="line" id="LC2152"> its configuration file.</div><div class="line" id="LC2153"> </div><div class="line" id="LC2154">4.3 Die message</div><div class="line" id="LC2155"> </div><div class="line" id="LC2156"> Command: DIE</div><div class="line" id="LC2157"> Parameters: None</div><div class="line" id="LC2158"> </div><div class="line" id="LC2159"> An operator can use the DIE command to shutdown the server. This</div><div class="line" id="LC2160"> message is optional since it may be viewed as a risk to allow</div><div class="line" id="LC2161"> arbitrary people to connect to a server as an operator and execute</div><div class="line" id="LC2162"> this command.</div><div class="line" id="LC2163"> </div><div class="line" id="LC2164"> The DIE command MUST always be fully processed by the server to which</div><div class="line" id="LC2165"> the sending client is connected and MUST NOT be passed onto other</div><div class="line" id="LC2166"> connected servers.</div><div class="line" id="LC2167"> </div><div class="line" id="LC2168"> Numeric Replies:</div><div class="line" id="LC2169"> </div><div class="line" id="LC2170"> ERR_NOPRIVILEGES</div><div class="line" id="LC2171"> </div><div class="line" id="LC2172"> Example:</div><div class="line" id="LC2173"> </div><div class="line" id="LC2174"> DIE ; no parameters required.</div><div class="line" id="LC2175"> </div><div class="line" id="LC2176"> </div><div class="line" id="LC2177"> </div><div class="line" id="LC2178"> </div><div class="line" id="LC2179"> </div><div class="line" id="LC2180">Kalt Informational [Page 39]</div><div class="line" id="LC2181"> </div><div class="line" id="LC2182">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2183"> </div><div class="line" id="LC2184"> </div><div class="line" id="LC2185">4.4 Restart message</div><div class="line" id="LC2186"> </div><div class="line" id="LC2187"> Command: RESTART</div><div class="line" id="LC2188"> Parameters: None</div><div class="line" id="LC2189"> </div><div class="line" id="LC2190"> An operator can use the restart command to force the server to</div><div class="line" id="LC2191"> restart itself. This message is optional since it may be viewed as a</div><div class="line" id="LC2192"> risk to allow arbitrary people to connect to a server as an operator</div><div class="line" id="LC2193"> and execute this command, causing (at least) a disruption to service.</div><div class="line" id="LC2194"> </div><div class="line" id="LC2195"> The RESTART command MUST always be fully processed by the server to</div><div class="line" id="LC2196"> which the sending client is connected and MUST NOT be passed onto</div><div class="line" id="LC2197"> other connected servers.</div><div class="line" id="LC2198"> </div><div class="line" id="LC2199"> Numeric Replies:</div><div class="line" id="LC2200"> </div><div class="line" id="LC2201"> ERR_NOPRIVILEGES</div><div class="line" id="LC2202"> </div><div class="line" id="LC2203"> Example:</div><div class="line" id="LC2204"> </div><div class="line" id="LC2205"> RESTART ; no parameters required.</div><div class="line" id="LC2206"> </div><div class="line" id="LC2207">4.5 Summon message</div><div class="line" id="LC2208"> </div><div class="line" id="LC2209"> Command: SUMMON</div><div class="line" id="LC2210"> Parameters: <user> [ <target> [ <channel> ] ]</div><div class="line" id="LC2211"> </div><div class="line" id="LC2212"> The SUMMON command can be used to give users who are on a host</div><div class="line" id="LC2213"> running an IRC server a message asking them to please join IRC. This</div><div class="line" id="LC2214"> message is only sent if the target server (a) has SUMMON enabled, (b)</div><div class="line" id="LC2215"> the user is logged in and (c) the server process can write to the</div><div class="line" id="LC2216"> user's tty (or similar).</div><div class="line" id="LC2217"> </div><div class="line" id="LC2218"> If no <server> parameter is given it tries to summon <user> from the</div><div class="line" id="LC2219"> server the client is connected to is assumed as the target.</div><div class="line" id="LC2220"> </div><div class="line" id="LC2221"> If summon is not enabled in a server, it MUST return the</div><div class="line" id="LC2222"> ERR_SUMMONDISABLED numeric.</div><div class="line" id="LC2223"> </div><div class="line" id="LC2224"> Numeric Replies:</div><div class="line" id="LC2225"> </div><div class="line" id="LC2226"> ERR_NORECIPIENT ERR_FILEERROR</div><div class="line" id="LC2227"> ERR_NOLOGIN ERR_NOSUCHSERVER</div><div class="line" id="LC2228"> ERR_SUMMONDISABLED RPL_SUMMONING</div><div class="line" id="LC2229"> </div><div class="line" id="LC2230"> </div><div class="line" id="LC2231"> </div><div class="line" id="LC2232"> </div><div class="line" id="LC2233"> </div><div class="line" id="LC2234"> </div><div class="line" id="LC2235"> </div><div class="line" id="LC2236">Kalt Informational [Page 40]</div><div class="line" id="LC2237"> </div><div class="line" id="LC2238">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2239"> </div><div class="line" id="LC2240"> </div><div class="line" id="LC2241"> Examples:</div><div class="line" id="LC2242"> </div><div class="line" id="LC2243"> SUMMON jto ; summon user jto on the server's</div><div class="line" id="LC2244"> host</div><div class="line" id="LC2245"> </div><div class="line" id="LC2246"> SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a</div><div class="line" id="LC2247"> server named "tolsun.oulu.fi" is</div><div class="line" id="LC2248"> running.</div><div class="line" id="LC2249"> </div><div class="line" id="LC2250">4.6 Users</div><div class="line" id="LC2251"> </div><div class="line" id="LC2252"> Command: USERS</div><div class="line" id="LC2253"> Parameters: [ <target> ]</div><div class="line" id="LC2254"> </div><div class="line" id="LC2255"> The USERS command returns a list of users logged into the server in a</div><div class="line" id="LC2256"> format similar to the UNIX commands who(1), rusers(1) and finger(1).</div><div class="line" id="LC2257"> If disabled, the correct numeric MUST be returned to indicate this.</div><div class="line" id="LC2258"> </div><div class="line" id="LC2259"> Because of the security implications of such a command, it SHOULD be</div><div class="line" id="LC2260"> disabled by default in server implementations. Enabling it SHOULD</div><div class="line" id="LC2261"> require recompiling the server or some equivalent change rather than</div><div class="line" id="LC2262"> simply toggling an option and restarting the server. The procedure</div><div class="line" id="LC2263"> to enable this command SHOULD also include suitable large comments.</div><div class="line" id="LC2264"> </div><div class="line" id="LC2265"> Numeric Replies:</div><div class="line" id="LC2266"> </div><div class="line" id="LC2267"> ERR_NOSUCHSERVER ERR_FILEERROR</div><div class="line" id="LC2268"> RPL_USERSSTART RPL_USERS</div><div class="line" id="LC2269"> RPL_NOUSERS RPL_ENDOFUSERS</div><div class="line" id="LC2270"> ERR_USERSDISABLED</div><div class="line" id="LC2271"> </div><div class="line" id="LC2272"> Disabled Reply:</div><div class="line" id="LC2273"> </div><div class="line" id="LC2274"> ERR_USERSDISABLED</div><div class="line" id="LC2275"> </div><div class="line" id="LC2276"> Example:</div><div class="line" id="LC2277"> </div><div class="line" id="LC2278"> USERS eff.org ; request a list of users logged in</div><div class="line" id="LC2279"> on server eff.org</div><div class="line" id="LC2280"> </div><div class="line" id="LC2281">4.7 Operwall message</div><div class="line" id="LC2282"> </div><div class="line" id="LC2283"> Command: WALLOPS</div><div class="line" id="LC2284"> Parameters: <Text to be sent></div><div class="line" id="LC2285"> </div><div class="line" id="LC2286"> The WALLOPS command is used to send a message to all currently</div><div class="line" id="LC2287"> connected users who have set the 'w' user mode for themselves. (See</div><div class="line" id="LC2288"> Section 3.1.5 "User modes").</div><div class="line" id="LC2289"> </div><div class="line" id="LC2290"> </div><div class="line" id="LC2291"> </div><div class="line" id="LC2292">Kalt Informational [Page 41]</div><div class="line" id="LC2293"> </div><div class="line" id="LC2294">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2295"> </div><div class="line" id="LC2296"> </div><div class="line" id="LC2297"> After implementing WALLOPS as a user command it was found that it was</div><div class="line" id="LC2298"> often and commonly abused as a means of sending a message to a lot of</div><div class="line" id="LC2299"> people. Due to this, it is RECOMMENDED that the implementation of</div><div class="line" id="LC2300"> WALLOPS allows and recognizes only servers as the originators of</div><div class="line" id="LC2301"> WALLOPS.</div><div class="line" id="LC2302"> </div><div class="line" id="LC2303"> Numeric Replies:</div><div class="line" id="LC2304"> </div><div class="line" id="LC2305"> ERR_NEEDMOREPARAMS</div><div class="line" id="LC2306"> </div><div class="line" id="LC2307"> Example:</div><div class="line" id="LC2308"> </div><div class="line" id="LC2309"> :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS</div><div class="line" id="LC2310"> message from csd.bu.edu announcing a</div><div class="line" id="LC2311"> CONNECT message it received from</div><div class="line" id="LC2312"> Joshua and acted upon.</div><div class="line" id="LC2313"> </div><div class="line" id="LC2314">4.8 Userhost message</div><div class="line" id="LC2315"> </div><div class="line" id="LC2316"> Command: USERHOST</div><div class="line" id="LC2317"> Parameters: <nickname> *( SPACE <nickname> )</div><div class="line" id="LC2318"> </div><div class="line" id="LC2319"> The USERHOST command takes a list of up to 5 nicknames, each</div><div class="line" id="LC2320"> separated by a space character and returns a list of information</div><div class="line" id="LC2321"> about each nickname that it found. The returned list has each reply</div><div class="line" id="LC2322"> separated by a space.</div><div class="line" id="LC2323"> </div><div class="line" id="LC2324"> Numeric Replies:</div><div class="line" id="LC2325"> </div><div class="line" id="LC2326"> RPL_USERHOST ERR_NEEDMOREPARAMS</div><div class="line" id="LC2327"> </div><div class="line" id="LC2328"> Example:</div><div class="line" id="LC2329"> </div><div class="line" id="LC2330"> USERHOST Wiz Michael syrk ; USERHOST request for information on</div><div class="line" id="LC2331"> nicks "Wiz", "Michael", and "syrk"</div><div class="line" id="LC2332"> </div><div class="line" id="LC2333"> :ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net</div><div class="line" id="LC2334"> ; Reply for user syrk</div><div class="line" id="LC2335"> </div><div class="line" id="LC2336">4.9 Ison message</div><div class="line" id="LC2337"> </div><div class="line" id="LC2338"> Command: ISON</div><div class="line" id="LC2339"> Parameters: <nickname> *( SPACE <nickname> )</div><div class="line" id="LC2340"> </div><div class="line" id="LC2341"> The ISON command was implemented to provide a quick and efficient</div><div class="line" id="LC2342"> means to get a response about whether a given nickname was currently</div><div class="line" id="LC2343"> on IRC. ISON only takes one (1) type of parameter: a space-separated</div><div class="line" id="LC2344"> list of nicks. For each nickname in the list that is present, the</div><div class="line" id="LC2345"> </div><div class="line" id="LC2346"> </div><div class="line" id="LC2347"> </div><div class="line" id="LC2348">Kalt Informational [Page 42]</div><div class="line" id="LC2349"> </div><div class="line" id="LC2350">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2351"> </div><div class="line" id="LC2352"> </div><div class="line" id="LC2353"> server adds that to its reply string. Thus the reply string may</div><div class="line" id="LC2354"> return empty (none of the given nicks are present), an exact copy of</div><div class="line" id="LC2355"> the parameter string (all of them present) or any other subset of the</div><div class="line" id="LC2356"> set of nicks given in the parameter. The only limit on the number of</div><div class="line" id="LC2357"> nicks that may be checked is that the combined length MUST NOT be too</div><div class="line" id="LC2358"> large as to cause the server to chop it off so it fits in 512</div><div class="line" id="LC2359"> characters.</div><div class="line" id="LC2360"> </div><div class="line" id="LC2361"> ISON is only processed by the server local to the client sending the</div><div class="line" id="LC2362"> command and thus not passed onto other servers for further</div><div class="line" id="LC2363"> processing.</div><div class="line" id="LC2364"> </div><div class="line" id="LC2365"> Numeric Replies:</div><div class="line" id="LC2366"> </div><div class="line" id="LC2367"> RPL_ISON ERR_NEEDMOREPARAMS</div><div class="line" id="LC2368"> </div><div class="line" id="LC2369"> Example:</div><div class="line" id="LC2370"> </div><div class="line" id="LC2371"> ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk</div><div class="line" id="LC2372"> ; Sample ISON request for 7 nicks.</div><div class="line" id="LC2373"> </div><div class="line" id="LC2374">5. Replies</div><div class="line" id="LC2375"> </div><div class="line" id="LC2376"> The following is a list of numeric replies which are generated in</div><div class="line" id="LC2377"> response to the commands given above. Each numeric is given with its</div><div class="line" id="LC2378"> number, name and reply string.</div><div class="line" id="LC2379"> </div><div class="line" id="LC2380">5.1 Command responses</div><div class="line" id="LC2381"> </div><div class="line" id="LC2382"> Numerics in the range from 001 to 099 are used for client-server</div><div class="line" id="LC2383"> connections only and should never travel between servers. Replies</div><div class="line" id="LC2384"> generated in the response to commands are found in the range from 200</div><div class="line" id="LC2385"> to 399.</div><div class="line" id="LC2386"> </div><div class="line" id="LC2387"> 001 RPL_WELCOME</div><div class="line" id="LC2388"> "Welcome to the Internet Relay Network</div><div class="line" id="LC2389"> <nick>!<user>@<host>"</div><div class="line" id="LC2390"> 002 RPL_YOURHOST</div><div class="line" id="LC2391"> "Your host is <servername>, running version <ver>"</div><div class="line" id="LC2392"> 003 RPL_CREATED</div><div class="line" id="LC2393"> "This server was created <date>"</div><div class="line" id="LC2394"> 004 RPL_MYINFO</div><div class="line" id="LC2395"> "<servername> <version> <available user modes></div><div class="line" id="LC2396"> <available channel modes>"</div><div class="line" id="LC2397"> </div><div class="line" id="LC2398"> - The server sends Replies 001 to 004 to a user upon</div><div class="line" id="LC2399"> successful registration.</div><div class="line" id="LC2400"> </div><div class="line" id="LC2401"> </div><div class="line" id="LC2402"> </div><div class="line" id="LC2403"> </div><div class="line" id="LC2404">Kalt Informational [Page 43]</div><div class="line" id="LC2405"> </div><div class="line" id="LC2406">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2407"> </div><div class="line" id="LC2408"> </div><div class="line" id="LC2409"> 005 RPL_BOUNCE</div><div class="line" id="LC2410"> "Try server <server name>, port <port number>"</div><div class="line" id="LC2411"> </div><div class="line" id="LC2412"> - Sent by the server to a user to suggest an alternative</div><div class="line" id="LC2413"> server. This is often used when the connection is</div><div class="line" id="LC2414"> refused because the server is already full.</div><div class="line" id="LC2415"> </div><div class="line" id="LC2416"> 302 RPL_USERHOST</div><div class="line" id="LC2417"> ":*1<reply> *( " " <reply> )"</div><div class="line" id="LC2418"> </div><div class="line" id="LC2419"> - Reply format used by USERHOST to list replies to</div><div class="line" id="LC2420"> the query list. The reply string is composed as</div><div class="line" id="LC2421"> follows:</div><div class="line" id="LC2422"> </div><div class="line" id="LC2423"> reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname</div><div class="line" id="LC2424"> </div><div class="line" id="LC2425"> The '*' indicates whether the client has registered</div><div class="line" id="LC2426"> as an Operator. The '-' or '+' characters represent</div><div class="line" id="LC2427"> whether the client has set an AWAY message or not</div><div class="line" id="LC2428"> respectively.</div><div class="line" id="LC2429"> </div><div class="line" id="LC2430"> 303 RPL_ISON</div><div class="line" id="LC2431"> ":*1<nick> *( " " <nick> )"</div><div class="line" id="LC2432"> </div><div class="line" id="LC2433"> - Reply format used by ISON to list replies to the</div><div class="line" id="LC2434"> query list.</div><div class="line" id="LC2435"> </div><div class="line" id="LC2436"> 301 RPL_AWAY</div><div class="line" id="LC2437"> "<nick> :<away message>"</div><div class="line" id="LC2438"> 305 RPL_UNAWAY</div><div class="line" id="LC2439"> ":You are no longer marked as being away"</div><div class="line" id="LC2440"> 306 RPL_NOWAWAY</div><div class="line" id="LC2441"> ":You have been marked as being away"</div><div class="line" id="LC2442"> </div><div class="line" id="LC2443"> - These replies are used with the AWAY command (if</div><div class="line" id="LC2444"> allowed). RPL_AWAY is sent to any client sending a</div><div class="line" id="LC2445"> PRIVMSG to a client which is away. RPL_AWAY is only</div><div class="line" id="LC2446"> sent by the server to which the client is connected.</div><div class="line" id="LC2447"> Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the</div><div class="line" id="LC2448"> client removes and sets an AWAY message.</div><div class="line" id="LC2449"> </div><div class="line" id="LC2450"> 311 RPL_WHOISUSER</div><div class="line" id="LC2451"> "<nick> <user> <host> * :<real name>"</div><div class="line" id="LC2452"> 312 RPL_WHOISSERVER</div><div class="line" id="LC2453"> "<nick> <server> :<server info>"</div><div class="line" id="LC2454"> 313 RPL_WHOISOPERATOR</div><div class="line" id="LC2455"> "<nick> :is an IRC operator"</div><div class="line" id="LC2456"> </div><div class="line" id="LC2457"> </div><div class="line" id="LC2458"> </div><div class="line" id="LC2459"> </div><div class="line" id="LC2460">Kalt Informational [Page 44]</div><div class="line" id="LC2461"> </div><div class="line" id="LC2462">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2463"> </div><div class="line" id="LC2464"> </div><div class="line" id="LC2465"> 317 RPL_WHOISIDLE</div><div class="line" id="LC2466"> "<nick> <integer> :seconds idle"</div><div class="line" id="LC2467"> 318 RPL_ENDOFWHOIS</div><div class="line" id="LC2468"> "<nick> :End of WHOIS list"</div><div class="line" id="LC2469"> 319 RPL_WHOISCHANNELS</div><div class="line" id="LC2470"> "<nick> :*( ( "@" / "+" ) <channel> " " )"</div><div class="line" id="LC2471"> </div><div class="line" id="LC2472"> - Replies 311 - 313, 317 - 319 are all replies</div><div class="line" id="LC2473"> generated in response to a WHOIS message. Given that</div><div class="line" id="LC2474"> there are enough parameters present, the answering</div><div class="line" id="LC2475"> server MUST either formulate a reply out of the above</div><div class="line" id="LC2476"> numerics (if the query nick is found) or return an</div><div class="line" id="LC2477"> error reply. The '*' in RPL_WHOISUSER is there as</div><div class="line" id="LC2478"> the literal character and not as a wild card. For</div><div class="line" id="LC2479"> each reply set, only RPL_WHOISCHANNELS may appear</div><div class="line" id="LC2480"> more than once (for long lists of channel names).</div><div class="line" id="LC2481"> The '@' and '+' characters next to the channel name</div><div class="line" id="LC2482"> indicate whether a client is a channel operator or</div><div class="line" id="LC2483"> has been granted permission to speak on a moderated</div><div class="line" id="LC2484"> channel. The RPL_ENDOFWHOIS reply is used to mark</div><div class="line" id="LC2485"> the end of processing a WHOIS message.</div><div class="line" id="LC2486"> </div><div class="line" id="LC2487"> 314 RPL_WHOWASUSER</div><div class="line" id="LC2488"> "<nick> <user> <host> * :<real name>"</div><div class="line" id="LC2489"> 369 RPL_ENDOFWHOWAS</div><div class="line" id="LC2490"> "<nick> :End of WHOWAS"</div><div class="line" id="LC2491"> </div><div class="line" id="LC2492"> - When replying to a WHOWAS message, a server MUST use</div><div class="line" id="LC2493"> the replies RPL_WHOWASUSER, RPL_WHOISSERVER or</div><div class="line" id="LC2494"> ERR_WASNOSUCHNICK for each nickname in the presented</div><div class="line" id="LC2495"> list. At the end of all reply batches, there MUST</div><div class="line" id="LC2496"> be RPL_ENDOFWHOWAS (even if there was only one reply</div><div class="line" id="LC2497"> and it was an error).</div><div class="line" id="LC2498"> </div><div class="line" id="LC2499"> 321 RPL_LISTSTART</div><div class="line" id="LC2500"> Obsolete. Not used.</div><div class="line" id="LC2501"> </div><div class="line" id="LC2502"> 322 RPL_LIST</div><div class="line" id="LC2503"> "<channel> <# visible> :<topic>"</div><div class="line" id="LC2504"> 323 RPL_LISTEND</div><div class="line" id="LC2505"> ":End of LIST"</div><div class="line" id="LC2506"> </div><div class="line" id="LC2507"> - Replies RPL_LIST, RPL_LISTEND mark the actual replies</div><div class="line" id="LC2508"> with data and end of the server's response to a LIST</div><div class="line" id="LC2509"> command. If there are no channels available to return,</div><div class="line" id="LC2510"> only the end reply MUST be sent.</div><div class="line" id="LC2511"> </div><div class="line" id="LC2512"> </div><div class="line" id="LC2513"> </div><div class="line" id="LC2514"> </div><div class="line" id="LC2515"> </div><div class="line" id="LC2516">Kalt Informational [Page 45]</div><div class="line" id="LC2517"> </div><div class="line" id="LC2518">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2519"> </div><div class="line" id="LC2520"> </div><div class="line" id="LC2521"> 325 RPL_UNIQOPIS</div><div class="line" id="LC2522"> "<channel> <nickname>"</div><div class="line" id="LC2523"> </div><div class="line" id="LC2524"> 324 RPL_CHANNELMODEIS</div><div class="line" id="LC2525"> "<channel> <mode> <mode params>"</div><div class="line" id="LC2526"> </div><div class="line" id="LC2527"> 331 RPL_NOTOPIC</div><div class="line" id="LC2528"> "<channel> :No topic is set"</div><div class="line" id="LC2529"> 332 RPL_TOPIC</div><div class="line" id="LC2530"> "<channel> :<topic>"</div><div class="line" id="LC2531"> </div><div class="line" id="LC2532"> - When sending a TOPIC message to determine the</div><div class="line" id="LC2533"> channel topic, one of two replies is sent. If</div><div class="line" id="LC2534"> the topic is set, RPL_TOPIC is sent back else</div><div class="line" id="LC2535"> RPL_NOTOPIC.</div><div class="line" id="LC2536"> </div><div class="line" id="LC2537"> 341 RPL_INVITING</div><div class="line" id="LC2538"> "<channel> <nick>"</div><div class="line" id="LC2539"> </div><div class="line" id="LC2540"> - Returned by the server to indicate that the</div><div class="line" id="LC2541"> attempted INVITE message was successful and is</div><div class="line" id="LC2542"> being passed onto the end client.</div><div class="line" id="LC2543"> </div><div class="line" id="LC2544"> 342 RPL_SUMMONING</div><div class="line" id="LC2545"> "<user> :Summoning user to IRC"</div><div class="line" id="LC2546"> </div><div class="line" id="LC2547"> - Returned by a server answering a SUMMON message to</div><div class="line" id="LC2548"> indicate that it is summoning that user.</div><div class="line" id="LC2549"> </div><div class="line" id="LC2550"> 346 RPL_INVITELIST</div><div class="line" id="LC2551"> "<channel> <invitemask>"</div><div class="line" id="LC2552"> 347 RPL_ENDOFINVITELIST</div><div class="line" id="LC2553"> "<channel> :End of channel invite list"</div><div class="line" id="LC2554"> </div><div class="line" id="LC2555"> - When listing the 'invitations masks' for a given channel,</div><div class="line" id="LC2556"> a server is required to send the list back using the</div><div class="line" id="LC2557"> RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A</div><div class="line" id="LC2558"> separate RPL_INVITELIST is sent for each active mask.</div><div class="line" id="LC2559"> After the masks have been listed (or if none present) a</div><div class="line" id="LC2560"> RPL_ENDOFINVITELIST MUST be sent.</div><div class="line" id="LC2561"> </div><div class="line" id="LC2562"> 348 RPL_EXCEPTLIST</div><div class="line" id="LC2563"> "<channel> <exceptionmask>"</div><div class="line" id="LC2564"> 349 RPL_ENDOFEXCEPTLIST</div><div class="line" id="LC2565"> "<channel> :End of channel exception list"</div><div class="line" id="LC2566"> </div><div class="line" id="LC2567"> </div><div class="line" id="LC2568"> </div><div class="line" id="LC2569"> </div><div class="line" id="LC2570"> </div><div class="line" id="LC2571"> </div><div class="line" id="LC2572">Kalt Informational [Page 46]</div><div class="line" id="LC2573"> </div><div class="line" id="LC2574">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2575"> </div><div class="line" id="LC2576"> </div><div class="line" id="LC2577"> - When listing the 'exception masks' for a given channel,</div><div class="line" id="LC2578"> a server is required to send the list back using the</div><div class="line" id="LC2579"> RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A</div><div class="line" id="LC2580"> separate RPL_EXCEPTLIST is sent for each active mask.</div><div class="line" id="LC2581"> After the masks have been listed (or if none present)</div><div class="line" id="LC2582"> a RPL_ENDOFEXCEPTLIST MUST be sent.</div><div class="line" id="LC2583"> </div><div class="line" id="LC2584"> 351 RPL_VERSION</div><div class="line" id="LC2585"> "<version>.<debuglevel> <server> :<comments>"</div><div class="line" id="LC2586"> </div><div class="line" id="LC2587"> - Reply by the server showing its version details.</div><div class="line" id="LC2588"> The <version> is the version of the software being</div><div class="line" id="LC2589"> used (including any patchlevel revisions) and the</div><div class="line" id="LC2590"> <debuglevel> is used to indicate if the server is</div><div class="line" id="LC2591"> running in "debug mode".</div><div class="line" id="LC2592"> </div><div class="line" id="LC2593"> The "comments" field may contain any comments about</div><div class="line" id="LC2594"> the version or further version details.</div><div class="line" id="LC2595"> </div><div class="line" id="LC2596"> 352 RPL_WHOREPLY</div><div class="line" id="LC2597"> "<channel> <user> <host> <server> <nick></div><div class="line" id="LC2598"> ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]</div><div class="line" id="LC2599"> :<hopcount> <real name>"</div><div class="line" id="LC2600"> </div><div class="line" id="LC2601"> 315 RPL_ENDOFWHO</div><div class="line" id="LC2602"> "<name> :End of WHO list"</div><div class="line" id="LC2603"> </div><div class="line" id="LC2604"> - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used</div><div class="line" id="LC2605"> to answer a WHO message. The RPL_WHOREPLY is only</div><div class="line" id="LC2606"> sent if there is an appropriate match to the WHO</div><div class="line" id="LC2607"> query. If there is a list of parameters supplied</div><div class="line" id="LC2608"> with a WHO message, a RPL_ENDOFWHO MUST be sent</div><div class="line" id="LC2609"> after processing each list item with <name> being</div><div class="line" id="LC2610"> the item.</div><div class="line" id="LC2611"> </div><div class="line" id="LC2612"> 353 RPL_NAMREPLY</div><div class="line" id="LC2613"> "( "=" / "*" / "@" ) <channel></div><div class="line" id="LC2614"> :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )</div><div class="line" id="LC2615"> - "@" is used for secret channels, "*" for private</div><div class="line" id="LC2616"> channels, and "=" for others (public channels).</div><div class="line" id="LC2617"> </div><div class="line" id="LC2618"> 366 RPL_ENDOFNAMES</div><div class="line" id="LC2619"> "<channel> :End of NAMES list"</div><div class="line" id="LC2620"> </div><div class="line" id="LC2621"> - To reply to a NAMES message, a reply pair consisting</div><div class="line" id="LC2622"> of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the</div><div class="line" id="LC2623"> server back to the client. If there is no channel</div><div class="line" id="LC2624"> found as in the query, then only RPL_ENDOFNAMES is</div><div class="line" id="LC2625"> </div><div class="line" id="LC2626"> </div><div class="line" id="LC2627"> </div><div class="line" id="LC2628">Kalt Informational [Page 47]</div><div class="line" id="LC2629"> </div><div class="line" id="LC2630">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2631"> </div><div class="line" id="LC2632"> </div><div class="line" id="LC2633"> returned. The exception to this is when a NAMES</div><div class="line" id="LC2634"> message is sent with no parameters and all visible</div><div class="line" id="LC2635"> channels and contents are sent back in a series of</div><div class="line" id="LC2636"> RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark</div><div class="line" id="LC2637"> the end.</div><div class="line" id="LC2638"> </div><div class="line" id="LC2639"> 364 RPL_LINKS</div><div class="line" id="LC2640"> "<mask> <server> :<hopcount> <server info>"</div><div class="line" id="LC2641"> 365 RPL_ENDOFLINKS</div><div class="line" id="LC2642"> "<mask> :End of LINKS list"</div><div class="line" id="LC2643"> </div><div class="line" id="LC2644"> - In replying to the LINKS message, a server MUST send</div><div class="line" id="LC2645"> replies back using the RPL_LINKS numeric and mark the</div><div class="line" id="LC2646"> end of the list using an RPL_ENDOFLINKS reply.</div><div class="line" id="LC2647"> </div><div class="line" id="LC2648"> 367 RPL_BANLIST</div><div class="line" id="LC2649"> "<channel> <banmask>"</div><div class="line" id="LC2650"> 368 RPL_ENDOFBANLIST</div><div class="line" id="LC2651"> "<channel> :End of channel ban list"</div><div class="line" id="LC2652"> </div><div class="line" id="LC2653"> - When listing the active 'bans' for a given channel,</div><div class="line" id="LC2654"> a server is required to send the list back using the</div><div class="line" id="LC2655"> RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate</div><div class="line" id="LC2656"> RPL_BANLIST is sent for each active banmask. After the</div><div class="line" id="LC2657"> banmasks have been listed (or if none present) a</div><div class="line" id="LC2658"> RPL_ENDOFBANLIST MUST be sent.</div><div class="line" id="LC2659"> </div><div class="line" id="LC2660"> 371 RPL_INFO</div><div class="line" id="LC2661"> ":<string>"</div><div class="line" id="LC2662"> 374 RPL_ENDOFINFO</div><div class="line" id="LC2663"> ":End of INFO list"</div><div class="line" id="LC2664"> </div><div class="line" id="LC2665"> - A server responding to an INFO message is required to</div><div class="line" id="LC2666"> send all its 'info' in a series of RPL_INFO messages</div><div class="line" id="LC2667"> with a RPL_ENDOFINFO reply to indicate the end of the</div><div class="line" id="LC2668"> replies.</div><div class="line" id="LC2669"> </div><div class="line" id="LC2670"> 375 RPL_MOTDSTART</div><div class="line" id="LC2671"> ":- <server> Message of the day - "</div><div class="line" id="LC2672"> 372 RPL_MOTD</div><div class="line" id="LC2673"> ":- <text>"</div><div class="line" id="LC2674"> 376 RPL_ENDOFMOTD</div><div class="line" id="LC2675"> ":End of MOTD command"</div><div class="line" id="LC2676"> </div><div class="line" id="LC2677"> - When responding to the MOTD message and the MOTD file</div><div class="line" id="LC2678"> is found, the file is displayed line by line, with</div><div class="line" id="LC2679"> each line no longer than 80 characters, using</div><div class="line" id="LC2680"> </div><div class="line" id="LC2681"> </div><div class="line" id="LC2682"> </div><div class="line" id="LC2683"> </div><div class="line" id="LC2684">Kalt Informational [Page 48]</div><div class="line" id="LC2685"> </div><div class="line" id="LC2686">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2687"> </div><div class="line" id="LC2688"> </div><div class="line" id="LC2689"> RPL_MOTD format replies. These MUST be surrounded</div><div class="line" id="LC2690"> by a RPL_MOTDSTART (before the RPL_MOTDs) and an</div><div class="line" id="LC2691"> RPL_ENDOFMOTD (after).</div><div class="line" id="LC2692"> </div><div class="line" id="LC2693"> 381 RPL_YOUREOPER</div><div class="line" id="LC2694"> ":You are now an IRC operator"</div><div class="line" id="LC2695"> </div><div class="line" id="LC2696"> - RPL_YOUREOPER is sent back to a client which has</div><div class="line" id="LC2697"> just successfully issued an OPER message and gained</div><div class="line" id="LC2698"> operator status.</div><div class="line" id="LC2699"> </div><div class="line" id="LC2700"> 382 RPL_REHASHING</div><div class="line" id="LC2701"> "<config file> :Rehashing"</div><div class="line" id="LC2702"> </div><div class="line" id="LC2703"> - If the REHASH option is used and an operator sends</div><div class="line" id="LC2704"> a REHASH message, an RPL_REHASHING is sent back to</div><div class="line" id="LC2705"> the operator.</div><div class="line" id="LC2706"> </div><div class="line" id="LC2707"> 383 RPL_YOURESERVICE</div><div class="line" id="LC2708"> "You are service <servicename>"</div><div class="line" id="LC2709"> </div><div class="line" id="LC2710"> - Sent by the server to a service upon successful</div><div class="line" id="LC2711"> registration.</div><div class="line" id="LC2712"> </div><div class="line" id="LC2713"> 391 RPL_TIME</div><div class="line" id="LC2714"> "<server> :<string showing server's local time>"</div><div class="line" id="LC2715"> </div><div class="line" id="LC2716"> - When replying to the TIME message, a server MUST send</div><div class="line" id="LC2717"> the reply using the RPL_TIME format above. The string</div><div class="line" id="LC2718"> showing the time need only contain the correct day and</div><div class="line" id="LC2719"> time there. There is no further requirement for the</div><div class="line" id="LC2720"> time string.</div><div class="line" id="LC2721"> </div><div class="line" id="LC2722"> 392 RPL_USERSSTART</div><div class="line" id="LC2723"> ":UserID Terminal Host"</div><div class="line" id="LC2724"> 393 RPL_USERS</div><div class="line" id="LC2725"> ":<username> <ttyline> <hostname>"</div><div class="line" id="LC2726"> 394 RPL_ENDOFUSERS</div><div class="line" id="LC2727"> ":End of users"</div><div class="line" id="LC2728"> 395 RPL_NOUSERS</div><div class="line" id="LC2729"> ":Nobody logged in"</div><div class="line" id="LC2730"> </div><div class="line" id="LC2731"> - If the USERS message is handled by a server, the</div><div class="line" id="LC2732"> replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and</div><div class="line" id="LC2733"> RPL_NOUSERS are used. RPL_USERSSTART MUST be sent</div><div class="line" id="LC2734"> first, following by either a sequence of RPL_USERS</div><div class="line" id="LC2735"> or a single RPL_NOUSER. Following this is</div><div class="line" id="LC2736"> RPL_ENDOFUSERS.</div><div class="line" id="LC2737"> </div><div class="line" id="LC2738"> </div><div class="line" id="LC2739"> </div><div class="line" id="LC2740">Kalt Informational [Page 49]</div><div class="line" id="LC2741"> </div><div class="line" id="LC2742">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2743"> </div><div class="line" id="LC2744"> </div><div class="line" id="LC2745"> 200 RPL_TRACELINK</div><div class="line" id="LC2746"> "Link <version & debug level> <destination></div><div class="line" id="LC2747"> <next server> V<protocol version></div><div class="line" id="LC2748"> <link uptime in seconds> <backstream sendq></div><div class="line" id="LC2749"> <upstream sendq>"</div><div class="line" id="LC2750"> 201 RPL_TRACECONNECTING</div><div class="line" id="LC2751"> "Try. <class> <server>"</div><div class="line" id="LC2752"> 202 RPL_TRACEHANDSHAKE</div><div class="line" id="LC2753"> "H.S. <class> <server>"</div><div class="line" id="LC2754"> 203 RPL_TRACEUNKNOWN</div><div class="line" id="LC2755"> "???? <class> [<client IP address in dot form>]"</div><div class="line" id="LC2756"> 204 RPL_TRACEOPERATOR</div><div class="line" id="LC2757"> "Oper <class> <nick>"</div><div class="line" id="LC2758"> 205 RPL_TRACEUSER</div><div class="line" id="LC2759"> "User <class> <nick>"</div><div class="line" id="LC2760"> 206 RPL_TRACESERVER</div><div class="line" id="LC2761"> "Serv <class> <int>S <int>C <server></div><div class="line" id="LC2762"> <nick!user|*!*>@<host|server> V<protocol version>"</div><div class="line" id="LC2763"> 207 RPL_TRACESERVICE</div><div class="line" id="LC2764"> "Service <class> <name> <type> <active type>"</div><div class="line" id="LC2765"> 208 RPL_TRACENEWTYPE</div><div class="line" id="LC2766"> "<newtype> 0 <client name>"</div><div class="line" id="LC2767"> 209 RPL_TRACECLASS</div><div class="line" id="LC2768"> "Class <class> <count>"</div><div class="line" id="LC2769"> 210 RPL_TRACERECONNECT</div><div class="line" id="LC2770"> Unused.</div><div class="line" id="LC2771"> 261 RPL_TRACELOG</div><div class="line" id="LC2772"> "File <logfile> <debug level>"</div><div class="line" id="LC2773"> 262 RPL_TRACEEND</div><div class="line" id="LC2774"> "<server name> <version & debug level> :End of TRACE"</div><div class="line" id="LC2775"> </div><div class="line" id="LC2776"> - The RPL_TRACE* are all returned by the server in</div><div class="line" id="LC2777"> response to the TRACE message. How many are</div><div class="line" id="LC2778"> returned is dependent on the TRACE message and</div><div class="line" id="LC2779"> whether it was sent by an operator or not. There</div><div class="line" id="LC2780"> is no predefined order for which occurs first.</div><div class="line" id="LC2781"> Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and</div><div class="line" id="LC2782"> RPL_TRACEHANDSHAKE are all used for connections</div><div class="line" id="LC2783"> which have not been fully established and are either</div><div class="line" id="LC2784"> unknown, still attempting to connect or in the</div><div class="line" id="LC2785"> process of completing the 'server handshake'.</div><div class="line" id="LC2786"> RPL_TRACELINK is sent by any server which handles</div><div class="line" id="LC2787"> a TRACE message and has to pass it on to another</div><div class="line" id="LC2788"> server. The list of RPL_TRACELINKs sent in</div><div class="line" id="LC2789"> response to a TRACE command traversing the IRC</div><div class="line" id="LC2790"> network should reflect the actual connectivity of</div><div class="line" id="LC2791"> the servers themselves along that path.</div><div class="line" id="LC2792"> </div><div class="line" id="LC2793"> </div><div class="line" id="LC2794"> </div><div class="line" id="LC2795"> </div><div class="line" id="LC2796">Kalt Informational [Page 50]</div><div class="line" id="LC2797"> </div><div class="line" id="LC2798">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2799"> </div><div class="line" id="LC2800"> </div><div class="line" id="LC2801"> RPL_TRACENEWTYPE is to be used for any connection</div><div class="line" id="LC2802"> which does not fit in the other categories but is</div><div class="line" id="LC2803"> being displayed anyway.</div><div class="line" id="LC2804"> RPL_TRACEEND is sent to indicate the end of the list.</div><div class="line" id="LC2805"> </div><div class="line" id="LC2806"> 211 RPL_STATSLINKINFO</div><div class="line" id="LC2807"> "<linkname> <sendq> <sent messages></div><div class="line" id="LC2808"> <sent Kbytes> <received messages></div><div class="line" id="LC2809"> <received Kbytes> <time open>"</div><div class="line" id="LC2810"> </div><div class="line" id="LC2811"> - reports statistics on a connection. <linkname></div><div class="line" id="LC2812"> identifies the particular connection, <sendq> is</div><div class="line" id="LC2813"> the amount of data that is queued and waiting to be</div><div class="line" id="LC2814"> sent <sent messages> the number of messages sent,</div><div class="line" id="LC2815"> and <sent Kbytes> the amount of data sent, in</div><div class="line" id="LC2816"> Kbytes. <received messages> and <received Kbytes></div><div class="line" id="LC2817"> are the equivalent of <sent messages> and <sent</div><div class="line" id="LC2818"> Kbytes> for received data, respectively. <time</div><div class="line" id="LC2819"> open> indicates how long ago the connection was</div><div class="line" id="LC2820"> opened, in seconds.</div><div class="line" id="LC2821"> </div><div class="line" id="LC2822"> 212 RPL_STATSCOMMANDS</div><div class="line" id="LC2823"> "<command> <count> <byte count> <remote count>"</div><div class="line" id="LC2824"> </div><div class="line" id="LC2825"> - reports statistics on commands usage.</div><div class="line" id="LC2826"> </div><div class="line" id="LC2827"> 219 RPL_ENDOFSTATS</div><div class="line" id="LC2828"> "<stats letter> :End of STATS report"</div><div class="line" id="LC2829"> </div><div class="line" id="LC2830"> 242 RPL_STATSUPTIME</div><div class="line" id="LC2831"> ":Server Up %d days %d:%02d:%02d"</div><div class="line" id="LC2832"> </div><div class="line" id="LC2833"> - reports the server uptime.</div><div class="line" id="LC2834"> </div><div class="line" id="LC2835"> 243 RPL_STATSOLINE</div><div class="line" id="LC2836"> "O <hostmask> * <name>"</div><div class="line" id="LC2837"> </div><div class="line" id="LC2838"> - reports the allowed hosts from where user may become IRC</div><div class="line" id="LC2839"> operators.</div><div class="line" id="LC2840"> </div><div class="line" id="LC2841"> 221 RPL_UMODEIS</div><div class="line" id="LC2842"> "<user mode string>"</div><div class="line" id="LC2843"> </div><div class="line" id="LC2844"> - To answer a query about a client's own mode,</div><div class="line" id="LC2845"> RPL_UMODEIS is sent back.</div><div class="line" id="LC2846"> </div><div class="line" id="LC2847"> 234 RPL_SERVLIST</div><div class="line" id="LC2848"> "<name> <server> <mask> <type> <hopcount> <info>"</div><div class="line" id="LC2849"> </div><div class="line" id="LC2850"> </div><div class="line" id="LC2851"> </div><div class="line" id="LC2852">Kalt Informational [Page 51]</div><div class="line" id="LC2853"> </div><div class="line" id="LC2854">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2855"> </div><div class="line" id="LC2856"> </div><div class="line" id="LC2857"> 235 RPL_SERVLISTEND</div><div class="line" id="LC2858"> "<mask> <type> :End of service listing"</div><div class="line" id="LC2859"> </div><div class="line" id="LC2860"> - When listing services in reply to a SERVLIST message,</div><div class="line" id="LC2861"> a server is required to send the list back using the</div><div class="line" id="LC2862"> RPL_SERVLIST and RPL_SERVLISTEND messages. A separate</div><div class="line" id="LC2863"> RPL_SERVLIST is sent for each service. After the</div><div class="line" id="LC2864"> services have been listed (or if none present) a</div><div class="line" id="LC2865"> RPL_SERVLISTEND MUST be sent.</div><div class="line" id="LC2866"> </div><div class="line" id="LC2867"> 251 RPL_LUSERCLIENT</div><div class="line" id="LC2868"> ":There are <integer> users and <integer></div><div class="line" id="LC2869"> services on <integer> servers"</div><div class="line" id="LC2870"> 252 RPL_LUSEROP</div><div class="line" id="LC2871"> "<integer> :operator(s) online"</div><div class="line" id="LC2872"> 253 RPL_LUSERUNKNOWN</div><div class="line" id="LC2873"> "<integer> :unknown connection(s)"</div><div class="line" id="LC2874"> 254 RPL_LUSERCHANNELS</div><div class="line" id="LC2875"> "<integer> :channels formed"</div><div class="line" id="LC2876"> 255 RPL_LUSERME</div><div class="line" id="LC2877"> ":I have <integer> clients and <integer></div><div class="line" id="LC2878"> servers"</div><div class="line" id="LC2879"> </div><div class="line" id="LC2880"> - In processing an LUSERS message, the server</div><div class="line" id="LC2881"> sends a set of replies from RPL_LUSERCLIENT,</div><div class="line" id="LC2882"> RPL_LUSEROP, RPL_USERUNKNOWN,</div><div class="line" id="LC2883"> RPL_LUSERCHANNELS and RPL_LUSERME. When</div><div class="line" id="LC2884"> replying, a server MUST send back</div><div class="line" id="LC2885"> RPL_LUSERCLIENT and RPL_LUSERME. The other</div><div class="line" id="LC2886"> replies are only sent back if a non-zero count</div><div class="line" id="LC2887"> is found for them.</div><div class="line" id="LC2888"> </div><div class="line" id="LC2889"> 256 RPL_ADMINME</div><div class="line" id="LC2890"> "<server> :Administrative info"</div><div class="line" id="LC2891"> 257 RPL_ADMINLOC1</div><div class="line" id="LC2892"> ":<admin info>"</div><div class="line" id="LC2893"> 258 RPL_ADMINLOC2</div><div class="line" id="LC2894"> ":<admin info>"</div><div class="line" id="LC2895"> 259 RPL_ADMINEMAIL</div><div class="line" id="LC2896"> ":<admin info>"</div><div class="line" id="LC2897"> </div><div class="line" id="LC2898"> - When replying to an ADMIN message, a server</div><div class="line" id="LC2899"> is expected to use replies RPL_ADMINME</div><div class="line" id="LC2900"> through to RPL_ADMINEMAIL and provide a text</div><div class="line" id="LC2901"> message with each. For RPL_ADMINLOC1 a</div><div class="line" id="LC2902"> description of what city, state and country</div><div class="line" id="LC2903"> the server is in is expected, followed by</div><div class="line" id="LC2904"> details of the institution (RPL_ADMINLOC2)</div><div class="line" id="LC2905"> </div><div class="line" id="LC2906"> </div><div class="line" id="LC2907"> </div><div class="line" id="LC2908">Kalt Informational [Page 52]</div><div class="line" id="LC2909"> </div><div class="line" id="LC2910">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2911"> </div><div class="line" id="LC2912"> </div><div class="line" id="LC2913"> and finally the administrative contact for the</div><div class="line" id="LC2914"> server (an email address here is REQUIRED)</div><div class="line" id="LC2915"> in RPL_ADMINEMAIL.</div><div class="line" id="LC2916"> </div><div class="line" id="LC2917"> 263 RPL_TRYAGAIN</div><div class="line" id="LC2918"> "<command> :Please wait a while and try again."</div><div class="line" id="LC2919"> </div><div class="line" id="LC2920"> - When a server drops a command without processing it,</div><div class="line" id="LC2921"> it MUST use the reply RPL_TRYAGAIN to inform the</div><div class="line" id="LC2922"> originating client.</div><div class="line" id="LC2923"> </div><div class="line" id="LC2924">5.2 Error Replies</div><div class="line" id="LC2925"> </div><div class="line" id="LC2926"> Error replies are found in the range from 400 to 599.</div><div class="line" id="LC2927"> </div><div class="line" id="LC2928"> 401 ERR_NOSUCHNICK</div><div class="line" id="LC2929"> "<nickname> :No such nick/channel"</div><div class="line" id="LC2930"> </div><div class="line" id="LC2931"> - Used to indicate the nickname parameter supplied to a</div><div class="line" id="LC2932"> command is currently unused.</div><div class="line" id="LC2933"> </div><div class="line" id="LC2934"> 402 ERR_NOSUCHSERVER</div><div class="line" id="LC2935"> "<server name> :No such server"</div><div class="line" id="LC2936"> </div><div class="line" id="LC2937"> - Used to indicate the server name given currently</div><div class="line" id="LC2938"> does not exist.</div><div class="line" id="LC2939"> </div><div class="line" id="LC2940"> 403 ERR_NOSUCHCHANNEL</div><div class="line" id="LC2941"> "<channel name> :No such channel"</div><div class="line" id="LC2942"> </div><div class="line" id="LC2943"> - Used to indicate the given channel name is invalid.</div><div class="line" id="LC2944"> </div><div class="line" id="LC2945"> 404 ERR_CANNOTSENDTOCHAN</div><div class="line" id="LC2946"> "<channel name> :Cannot send to channel"</div><div class="line" id="LC2947"> </div><div class="line" id="LC2948"> - Sent to a user who is either (a) not on a channel</div><div class="line" id="LC2949"> which is mode +n or (b) not a chanop (or mode +v) on</div><div class="line" id="LC2950"> a channel which has mode +m set or where the user is</div><div class="line" id="LC2951"> banned and is trying to send a PRIVMSG message to</div><div class="line" id="LC2952"> that channel.</div><div class="line" id="LC2953"> </div><div class="line" id="LC2954"> 405 ERR_TOOMANYCHANNELS</div><div class="line" id="LC2955"> "<channel name> :You have joined too many channels"</div><div class="line" id="LC2956"> </div><div class="line" id="LC2957"> - Sent to a user when they have joined the maximum</div><div class="line" id="LC2958"> number of allowed channels and they try to join</div><div class="line" id="LC2959"> another channel.</div><div class="line" id="LC2960"> </div><div class="line" id="LC2961"> </div><div class="line" id="LC2962"> </div><div class="line" id="LC2963"> </div><div class="line" id="LC2964">Kalt Informational [Page 53]</div><div class="line" id="LC2965"> </div><div class="line" id="LC2966">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC2967"> </div><div class="line" id="LC2968"> </div><div class="line" id="LC2969"> 406 ERR_WASNOSUCHNICK</div><div class="line" id="LC2970"> "<nickname> :There was no such nickname"</div><div class="line" id="LC2971"> </div><div class="line" id="LC2972"> - Returned by WHOWAS to indicate there is no history</div><div class="line" id="LC2973"> information for that nickname.</div><div class="line" id="LC2974"> </div><div class="line" id="LC2975"> 407 ERR_TOOMANYTARGETS</div><div class="line" id="LC2976"> "<target> :<error code> recipients. <abort message>"</div><div class="line" id="LC2977"> </div><div class="line" id="LC2978"> - Returned to a client which is attempting to send a</div><div class="line" id="LC2979"> PRIVMSG/NOTICE using the user@host destination format</div><div class="line" id="LC2980"> and for a user@host which has several occurrences.</div><div class="line" id="LC2981"> </div><div class="line" id="LC2982"> - Returned to a client which trying to send a</div><div class="line" id="LC2983"> PRIVMSG/NOTICE to too many recipients.</div><div class="line" id="LC2984"> </div><div class="line" id="LC2985"> - Returned to a client which is attempting to JOIN a safe</div><div class="line" id="LC2986"> channel using the shortname when there are more than one</div><div class="line" id="LC2987"> such channel.</div><div class="line" id="LC2988"> </div><div class="line" id="LC2989"> 408 ERR_NOSUCHSERVICE</div><div class="line" id="LC2990"> "<service name> :No such service"</div><div class="line" id="LC2991"> </div><div class="line" id="LC2992"> - Returned to a client which is attempting to send a SQUERY</div><div class="line" id="LC2993"> to a service which does not exist.</div><div class="line" id="LC2994"> </div><div class="line" id="LC2995"> 409 ERR_NOORIGIN</div><div class="line" id="LC2996"> ":No origin specified"</div><div class="line" id="LC2997"> </div><div class="line" id="LC2998"> - PING or PONG message missing the originator parameter.</div><div class="line" id="LC2999"> </div><div class="line" id="LC3000"> 411 ERR_NORECIPIENT</div><div class="line" id="LC3001"> ":No recipient given (<command>)"</div><div class="line" id="LC3002"> 412 ERR_NOTEXTTOSEND</div><div class="line" id="LC3003"> ":No text to send"</div><div class="line" id="LC3004"> 413 ERR_NOTOPLEVEL</div><div class="line" id="LC3005"> "<mask> :No toplevel domain specified"</div><div class="line" id="LC3006"> 414 ERR_WILDTOPLEVEL</div><div class="line" id="LC3007"> "<mask> :Wildcard in toplevel domain"</div><div class="line" id="LC3008"> 415 ERR_BADMASK</div><div class="line" id="LC3009"> "<mask> :Bad Server/host mask"</div><div class="line" id="LC3010"> </div><div class="line" id="LC3011"> - 412 - 415 are returned by PRIVMSG to indicate that</div><div class="line" id="LC3012"> the message wasn't delivered for some reason.</div><div class="line" id="LC3013"> ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that</div><div class="line" id="LC3014"> are returned when an invalid use of</div><div class="line" id="LC3015"> "PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted.</div><div class="line" id="LC3016"> </div><div class="line" id="LC3017"> </div><div class="line" id="LC3018"> </div><div class="line" id="LC3019"> </div><div class="line" id="LC3020">Kalt Informational [Page 54]</div><div class="line" id="LC3021"> </div><div class="line" id="LC3022">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3023"> </div><div class="line" id="LC3024"> </div><div class="line" id="LC3025"> 421 ERR_UNKNOWNCOMMAND</div><div class="line" id="LC3026"> "<command> :Unknown command"</div><div class="line" id="LC3027"> </div><div class="line" id="LC3028"> - Returned to a registered client to indicate that the</div><div class="line" id="LC3029"> command sent is unknown by the server.</div><div class="line" id="LC3030"> </div><div class="line" id="LC3031"> 422 ERR_NOMOTD</div><div class="line" id="LC3032"> ":MOTD File is missing"</div><div class="line" id="LC3033"> </div><div class="line" id="LC3034"> - Server's MOTD file could not be opened by the server.</div><div class="line" id="LC3035"> </div><div class="line" id="LC3036"> 423 ERR_NOADMININFO</div><div class="line" id="LC3037"> "<server> :No administrative info available"</div><div class="line" id="LC3038"> </div><div class="line" id="LC3039"> - Returned by a server in response to an ADMIN message</div><div class="line" id="LC3040"> when there is an error in finding the appropriate</div><div class="line" id="LC3041"> information.</div><div class="line" id="LC3042"> </div><div class="line" id="LC3043"> 424 ERR_FILEERROR</div><div class="line" id="LC3044"> ":File error doing <file op> on <file>"</div><div class="line" id="LC3045"> </div><div class="line" id="LC3046"> - Generic error message used to report a failed file</div><div class="line" id="LC3047"> operation during the processing of a message.</div><div class="line" id="LC3048"> </div><div class="line" id="LC3049"> 431 ERR_NONICKNAMEGIVEN</div><div class="line" id="LC3050"> ":No nickname given"</div><div class="line" id="LC3051"> </div><div class="line" id="LC3052"> - Returned when a nickname parameter expected for a</div><div class="line" id="LC3053"> command and isn't found.</div><div class="line" id="LC3054"> </div><div class="line" id="LC3055"> 432 ERR_ERRONEUSNICKNAME</div><div class="line" id="LC3056"> "<nick> :Erroneous nickname"</div><div class="line" id="LC3057"> </div><div class="line" id="LC3058"> - Returned after receiving a NICK message which contains</div><div class="line" id="LC3059"> characters which do not fall in the defined set. See</div><div class="line" id="LC3060"> section 2.3.1 for details on valid nicknames.</div><div class="line" id="LC3061"> </div><div class="line" id="LC3062"> 433 ERR_NICKNAMEINUSE</div><div class="line" id="LC3063"> "<nick> :Nickname is already in use"</div><div class="line" id="LC3064"> </div><div class="line" id="LC3065"> - Returned when a NICK message is processed that results</div><div class="line" id="LC3066"> in an attempt to change to a currently existing</div><div class="line" id="LC3067"> nickname.</div><div class="line" id="LC3068"> </div><div class="line" id="LC3069"> </div><div class="line" id="LC3070"> </div><div class="line" id="LC3071"> </div><div class="line" id="LC3072"> </div><div class="line" id="LC3073"> </div><div class="line" id="LC3074"> </div><div class="line" id="LC3075"> </div><div class="line" id="LC3076">Kalt Informational [Page 55]</div><div class="line" id="LC3077"> </div><div class="line" id="LC3078">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3079"> </div><div class="line" id="LC3080"> </div><div class="line" id="LC3081"> 436 ERR_NICKCOLLISION</div><div class="line" id="LC3082"> "<nick> :Nickname collision KILL from <user>@<host>"</div><div class="line" id="LC3083"> </div><div class="line" id="LC3084"> - Returned by a server to a client when it detects a</div><div class="line" id="LC3085"> nickname collision (registered of a NICK that</div><div class="line" id="LC3086"> already exists by another server).</div><div class="line" id="LC3087"> </div><div class="line" id="LC3088"> 437 ERR_UNAVAILRESOURCE</div><div class="line" id="LC3089"> "<nick/channel> :Nick/channel is temporarily unavailable"</div><div class="line" id="LC3090"> </div><div class="line" id="LC3091"> - Returned by a server to a user trying to join a channel</div><div class="line" id="LC3092"> currently blocked by the channel delay mechanism.</div><div class="line" id="LC3093"> </div><div class="line" id="LC3094"> - Returned by a server to a user trying to change nickname</div><div class="line" id="LC3095"> when the desired nickname is blocked by the nick delay</div><div class="line" id="LC3096"> mechanism.</div><div class="line" id="LC3097"> </div><div class="line" id="LC3098"> 441 ERR_USERNOTINCHANNEL</div><div class="line" id="LC3099"> "<nick> <channel> :They aren't on that channel"</div><div class="line" id="LC3100"> </div><div class="line" id="LC3101"> - Returned by the server to indicate that the target</div><div class="line" id="LC3102"> user of the command is not on the given channel.</div><div class="line" id="LC3103"> </div><div class="line" id="LC3104"> 442 ERR_NOTONCHANNEL</div><div class="line" id="LC3105"> "<channel> :You're not on that channel"</div><div class="line" id="LC3106"> </div><div class="line" id="LC3107"> - Returned by the server whenever a client tries to</div><div class="line" id="LC3108"> perform a channel affecting command for which the</div><div class="line" id="LC3109"> client isn't a member.</div><div class="line" id="LC3110"> </div><div class="line" id="LC3111"> 443 ERR_USERONCHANNEL</div><div class="line" id="LC3112"> "<user> <channel> :is already on channel"</div><div class="line" id="LC3113"> </div><div class="line" id="LC3114"> - Returned when a client tries to invite a user to a</div><div class="line" id="LC3115"> channel they are already on.</div><div class="line" id="LC3116"> </div><div class="line" id="LC3117"> 444 ERR_NOLOGIN</div><div class="line" id="LC3118"> "<user> :User not logged in"</div><div class="line" id="LC3119"> </div><div class="line" id="LC3120"> - Returned by the summon after a SUMMON command for a</div><div class="line" id="LC3121"> user was unable to be performed since they were not</div><div class="line" id="LC3122"> logged in.</div><div class="line" id="LC3123"> </div><div class="line" id="LC3124"> </div><div class="line" id="LC3125"> </div><div class="line" id="LC3126"> </div><div class="line" id="LC3127"> </div><div class="line" id="LC3128"> </div><div class="line" id="LC3129"> </div><div class="line" id="LC3130"> </div><div class="line" id="LC3131"> </div><div class="line" id="LC3132">Kalt Informational [Page 56]</div><div class="line" id="LC3133"> </div><div class="line" id="LC3134">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3135"> </div><div class="line" id="LC3136"> </div><div class="line" id="LC3137"> 445 ERR_SUMMONDISABLED</div><div class="line" id="LC3138"> ":SUMMON has been disabled"</div><div class="line" id="LC3139"> </div><div class="line" id="LC3140"> - Returned as a response to the SUMMON command. MUST be</div><div class="line" id="LC3141"> returned by any server which doesn't implement it.</div><div class="line" id="LC3142"> </div><div class="line" id="LC3143"> 446 ERR_USERSDISABLED</div><div class="line" id="LC3144"> ":USERS has been disabled"</div><div class="line" id="LC3145"> </div><div class="line" id="LC3146"> - Returned as a response to the USERS command. MUST be</div><div class="line" id="LC3147"> returned by any server which does not implement it.</div><div class="line" id="LC3148"> </div><div class="line" id="LC3149"> 451 ERR_NOTREGISTERED</div><div class="line" id="LC3150"> ":You have not registered"</div><div class="line" id="LC3151"> </div><div class="line" id="LC3152"> - Returned by the server to indicate that the client</div><div class="line" id="LC3153"> MUST be registered before the server will allow it</div><div class="line" id="LC3154"> to be parsed in detail.</div><div class="line" id="LC3155"> </div><div class="line" id="LC3156"> 461 ERR_NEEDMOREPARAMS</div><div class="line" id="LC3157"> "<command> :Not enough parameters"</div><div class="line" id="LC3158"> </div><div class="line" id="LC3159"> - Returned by the server by numerous commands to</div><div class="line" id="LC3160"> indicate to the client that it didn't supply enough</div><div class="line" id="LC3161"> parameters.</div><div class="line" id="LC3162"> </div><div class="line" id="LC3163"> 462 ERR_ALREADYREGISTRED</div><div class="line" id="LC3164"> ":Unauthorized command (already registered)"</div><div class="line" id="LC3165"> </div><div class="line" id="LC3166"> - Returned by the server to any link which tries to</div><div class="line" id="LC3167"> change part of the registered details (such as</div><div class="line" id="LC3168"> password or user details from second USER message).</div><div class="line" id="LC3169"> </div><div class="line" id="LC3170"> 463 ERR_NOPERMFORHOST</div><div class="line" id="LC3171"> ":Your host isn't among the privileged"</div><div class="line" id="LC3172"> </div><div class="line" id="LC3173"> - Returned to a client which attempts to register with</div><div class="line" id="LC3174"> a server which does not been setup to allow</div><div class="line" id="LC3175"> connections from the host the attempted connection</div><div class="line" id="LC3176"> is tried.</div><div class="line" id="LC3177"> </div><div class="line" id="LC3178"> 464 ERR_PASSWDMISMATCH</div><div class="line" id="LC3179"> ":Password incorrect"</div><div class="line" id="LC3180"> </div><div class="line" id="LC3181"> - Returned to indicate a failed attempt at registering</div><div class="line" id="LC3182"> a connection for which a password was required and</div><div class="line" id="LC3183"> was either not given or incorrect.</div><div class="line" id="LC3184"> </div><div class="line" id="LC3185"> </div><div class="line" id="LC3186"> </div><div class="line" id="LC3187"> </div><div class="line" id="LC3188">Kalt Informational [Page 57]</div><div class="line" id="LC3189"> </div><div class="line" id="LC3190">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3191"> </div><div class="line" id="LC3192"> </div><div class="line" id="LC3193"> 465 ERR_YOUREBANNEDCREEP</div><div class="line" id="LC3194"> ":You are banned from this server"</div><div class="line" id="LC3195"> </div><div class="line" id="LC3196"> - Returned after an attempt to connect and register</div><div class="line" id="LC3197"> yourself with a server which has been setup to</div><div class="line" id="LC3198"> explicitly deny connections to you.</div><div class="line" id="LC3199"> </div><div class="line" id="LC3200"> 466 ERR_YOUWILLBEBANNED</div><div class="line" id="LC3201"> </div><div class="line" id="LC3202"> - Sent by a server to a user to inform that access to the</div><div class="line" id="LC3203"> server will soon be denied.</div><div class="line" id="LC3204"> </div><div class="line" id="LC3205"> 467 ERR_KEYSET</div><div class="line" id="LC3206"> "<channel> :Channel key already set"</div><div class="line" id="LC3207"> 471 ERR_CHANNELISFULL</div><div class="line" id="LC3208"> "<channel> :Cannot join channel (+l)"</div><div class="line" id="LC3209"> 472 ERR_UNKNOWNMODE</div><div class="line" id="LC3210"> "<char> :is unknown mode char to me for <channel>"</div><div class="line" id="LC3211"> 473 ERR_INVITEONLYCHAN</div><div class="line" id="LC3212"> "<channel> :Cannot join channel (+i)"</div><div class="line" id="LC3213"> 474 ERR_BANNEDFROMCHAN</div><div class="line" id="LC3214"> "<channel> :Cannot join channel (+b)"</div><div class="line" id="LC3215"> 475 ERR_BADCHANNELKEY</div><div class="line" id="LC3216"> "<channel> :Cannot join channel (+k)"</div><div class="line" id="LC3217"> 476 ERR_BADCHANMASK</div><div class="line" id="LC3218"> "<channel> :Bad Channel Mask"</div><div class="line" id="LC3219"> 477 ERR_NOCHANMODES</div><div class="line" id="LC3220"> "<channel> :Channel doesn't support modes"</div><div class="line" id="LC3221"> 478 ERR_BANLISTFULL</div><div class="line" id="LC3222"> "<channel> <char> :Channel list is full"</div><div class="line" id="LC3223"> </div><div class="line" id="LC3224"> 481 ERR_NOPRIVILEGES</div><div class="line" id="LC3225"> ":Permission Denied- You're not an IRC operator"</div><div class="line" id="LC3226"> </div><div class="line" id="LC3227"> - Any command requiring operator privileges to operate</div><div class="line" id="LC3228"> MUST return this error to indicate the attempt was</div><div class="line" id="LC3229"> unsuccessful.</div><div class="line" id="LC3230"> </div><div class="line" id="LC3231"> 482 ERR_CHANOPRIVSNEEDED</div><div class="line" id="LC3232"> "<channel> :You're not channel operator"</div><div class="line" id="LC3233"> </div><div class="line" id="LC3234"> - Any command requiring 'chanop' privileges (such as</div><div class="line" id="LC3235"> MODE messages) MUST return this error if the client</div><div class="line" id="LC3236"> making the attempt is not a chanop on the specified</div><div class="line" id="LC3237"> channel.</div><div class="line" id="LC3238"> </div><div class="line" id="LC3239"> </div><div class="line" id="LC3240"> </div><div class="line" id="LC3241"> </div><div class="line" id="LC3242"> </div><div class="line" id="LC3243"> </div><div class="line" id="LC3244">Kalt Informational [Page 58]</div><div class="line" id="LC3245"> </div><div class="line" id="LC3246">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3247"> </div><div class="line" id="LC3248"> </div><div class="line" id="LC3249"> 483 ERR_CANTKILLSERVER</div><div class="line" id="LC3250"> ":You can't kill a server!"</div><div class="line" id="LC3251"> </div><div class="line" id="LC3252"> - Any attempts to use the KILL command on a server</div><div class="line" id="LC3253"> are to be refused and this error returned directly</div><div class="line" id="LC3254"> to the client.</div><div class="line" id="LC3255"> </div><div class="line" id="LC3256"> 484 ERR_RESTRICTED</div><div class="line" id="LC3257"> ":Your connection is restricted!"</div><div class="line" id="LC3258"> </div><div class="line" id="LC3259"> - Sent by the server to a user upon connection to indicate</div><div class="line" id="LC3260"> the restricted nature of the connection (user mode "+r").</div><div class="line" id="LC3261"> </div><div class="line" id="LC3262"> 485 ERR_UNIQOPPRIVSNEEDED</div><div class="line" id="LC3263"> ":You're not the original channel operator"</div><div class="line" id="LC3264"> </div><div class="line" id="LC3265"> - Any MODE requiring "channel creator" privileges MUST</div><div class="line" id="LC3266"> return this error if the client making the attempt is not</div><div class="line" id="LC3267"> a chanop on the specified channel.</div><div class="line" id="LC3268"> </div><div class="line" id="LC3269"> 491 ERR_NOOPERHOST</div><div class="line" id="LC3270"> ":No O-lines for your host"</div><div class="line" id="LC3271"> </div><div class="line" id="LC3272"> - If a client sends an OPER message and the server has</div><div class="line" id="LC3273"> not been configured to allow connections from the</div><div class="line" id="LC3274"> client's host as an operator, this error MUST be</div><div class="line" id="LC3275"> returned.</div><div class="line" id="LC3276"> </div><div class="line" id="LC3277"> 501 ERR_UMODEUNKNOWNFLAG</div><div class="line" id="LC3278"> ":Unknown MODE flag"</div><div class="line" id="LC3279"> </div><div class="line" id="LC3280"> - Returned by the server to indicate that a MODE</div><div class="line" id="LC3281"> message was sent with a nickname parameter and that</div><div class="line" id="LC3282"> the a mode flag sent was not recognized.</div><div class="line" id="LC3283"> </div><div class="line" id="LC3284"> 502 ERR_USERSDONTMATCH</div><div class="line" id="LC3285"> ":Cannot change mode for other users"</div><div class="line" id="LC3286"> </div><div class="line" id="LC3287"> - Error sent to any user trying to view or change the</div><div class="line" id="LC3288"> user mode for a user other than themselves.</div><div class="line" id="LC3289"> </div><div class="line" id="LC3290">5.3 Reserved numerics</div><div class="line" id="LC3291"> </div><div class="line" id="LC3292"> These numerics are not described above since they fall into one of</div><div class="line" id="LC3293"> the following categories:</div><div class="line" id="LC3294"> </div><div class="line" id="LC3295"> 1. no longer in use;</div><div class="line" id="LC3296"> </div><div class="line" id="LC3297"> </div><div class="line" id="LC3298"> </div><div class="line" id="LC3299"> </div><div class="line" id="LC3300">Kalt Informational [Page 59]</div><div class="line" id="LC3301"> </div><div class="line" id="LC3302">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3303"> </div><div class="line" id="LC3304"> </div><div class="line" id="LC3305"> 2. reserved for future planned use;</div><div class="line" id="LC3306"> </div><div class="line" id="LC3307"> 3. in current use but are part of a non-generic 'feature' of</div><div class="line" id="LC3308"> the current IRC server.</div><div class="line" id="LC3309"> </div><div class="line" id="LC3310"> 231 RPL_SERVICEINFO 232 RPL_ENDOFSERVICES</div><div class="line" id="LC3311"> 233 RPL_SERVICE</div><div class="line" id="LC3312"> 300 RPL_NONE 316 RPL_WHOISCHANOP</div><div class="line" id="LC3313"> 361 RPL_KILLDONE 362 RPL_CLOSING</div><div class="line" id="LC3314"> 363 RPL_CLOSEEND 373 RPL_INFOSTART</div><div class="line" id="LC3315"> 384 RPL_MYPORTIS</div><div class="line" id="LC3316"> </div><div class="line" id="LC3317"> 213 RPL_STATSCLINE 214 RPL_STATSNLINE</div><div class="line" id="LC3318"> 215 RPL_STATSILINE 216 RPL_STATSKLINE</div><div class="line" id="LC3319"> 217 RPL_STATSQLINE 218 RPL_STATSYLINE</div><div class="line" id="LC3320"> 240 RPL_STATSVLINE 241 RPL_STATSLLINE</div><div class="line" id="LC3321"> 244 RPL_STATSHLINE 244 RPL_STATSSLINE</div><div class="line" id="LC3322"> 246 RPL_STATSPING 247 RPL_STATSBLINE</div><div class="line" id="LC3323"> 250 RPL_STATSDLINE</div><div class="line" id="LC3324"> </div><div class="line" id="LC3325"> 492 ERR_NOSERVICEHOST</div><div class="line" id="LC3326"> </div><div class="line" id="LC3327">6. Current implementations</div><div class="line" id="LC3328"> </div><div class="line" id="LC3329"> The IRC software, version 2.10 is the only complete implementation of</div><div class="line" id="LC3330"> the IRC protocol (client and server). Because of the small amount of</div><div class="line" id="LC3331"> changes in the client protocol since the publication of RFC 1459</div><div class="line" id="LC3332"> [IRC], implementations that follow it are likely to be compliant with</div><div class="line" id="LC3333"> this protocol or to require a small amount of changes to reach</div><div class="line" id="LC3334"> compliance.</div><div class="line" id="LC3335"> </div><div class="line" id="LC3336">7. Current problems</div><div class="line" id="LC3337"> </div><div class="line" id="LC3338"> There are a number of recognized problems with the IRC Client</div><div class="line" id="LC3339"> Protocol, and more generally with the IRC Server Protocol. In order</div><div class="line" id="LC3340"> to preserve backward compatibility with old clients, this protocol</div><div class="line" id="LC3341"> has almost not evolved since the publication of RFC 1459 [IRC].</div><div class="line" id="LC3342"> </div><div class="line" id="LC3343">7.1 Nicknames</div><div class="line" id="LC3344"> </div><div class="line" id="LC3345"> The idea of the nickname on IRC is very convenient for users to use</div><div class="line" id="LC3346"> when talking to each other outside of a channel, but there is only a</div><div class="line" id="LC3347"> finite nickname space and being what they are, it's not uncommon for</div><div class="line" id="LC3348"> several people to want to use the same nick. If a nickname is chosen</div><div class="line" id="LC3349"> by two people using this protocol, either one will not succeed or</div><div class="line" id="LC3350"> both will removed by use of a server KILL (See Section 3.7.1).</div><div class="line" id="LC3351"> </div><div class="line" id="LC3352"> </div><div class="line" id="LC3353"> </div><div class="line" id="LC3354"> </div><div class="line" id="LC3355"> </div><div class="line" id="LC3356">Kalt Informational [Page 60]</div><div class="line" id="LC3357"> </div><div class="line" id="LC3358">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3359"> </div><div class="line" id="LC3360"> </div><div class="line" id="LC3361">7.2 Limitation of wildcards</div><div class="line" id="LC3362"> </div><div class="line" id="LC3363"> There is no way to escape the escape character "\" (%x5C). While</div><div class="line" id="LC3364"> this isn't usually a problem, it makes it impossible to form a mask</div><div class="line" id="LC3365"> with a backslash character ("\") preceding a wildcard.</div><div class="line" id="LC3366"> </div><div class="line" id="LC3367">7.3 Security considerations</div><div class="line" id="LC3368"> </div><div class="line" id="LC3369"> Security issues related to this protocol are discussed in the "IRC</div><div class="line" id="LC3370"> Server Protocol" [IRC-SERVER] as they are mostly an issue for the</div><div class="line" id="LC3371"> server side of the connection.</div><div class="line" id="LC3372"> </div><div class="line" id="LC3373">8. Current support and availability</div><div class="line" id="LC3374"> </div><div class="line" id="LC3375"> Mailing lists for IRC related discussion:</div><div class="line" id="LC3376"> General discussion: ircd-users@irc.org</div><div class="line" id="LC3377"> Protocol development: ircd-dev@irc.org</div><div class="line" id="LC3378"> </div><div class="line" id="LC3379"> Software implementations:</div><div class="line" id="LC3380"> ftp://ftp.irc.org/irc/server</div><div class="line" id="LC3381"> ftp://ftp.funet.fi/pub/unix/irc</div><div class="line" id="LC3382"> ftp://ftp.irc.org/irc/clients</div><div class="line" id="LC3383"> </div><div class="line" id="LC3384"> Newsgroup: alt.irc</div><div class="line" id="LC3385"> </div><div class="line" id="LC3386">9. Acknowledgements</div><div class="line" id="LC3387"> </div><div class="line" id="LC3388"> Parts of this document were copied from the RFC 1459 [IRC] which</div><div class="line" id="LC3389"> first formally documented the IRC Protocol. It has also benefited</div><div class="line" id="LC3390"> from many rounds of review and comments. In particular, the</div><div class="line" id="LC3391"> following people have made significant contributions to this</div><div class="line" id="LC3392"> document:</div><div class="line" id="LC3393"> </div><div class="line" id="LC3394"> Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa</div><div class="line" id="LC3395"> Ruokonen, Magnus Tjernstrom, Stefan Zehl.</div><div class="line" id="LC3396"> </div><div class="line" id="LC3397"> </div><div class="line" id="LC3398"> </div><div class="line" id="LC3399"> </div><div class="line" id="LC3400"> </div><div class="line" id="LC3401"> </div><div class="line" id="LC3402"> </div><div class="line" id="LC3403"> </div><div class="line" id="LC3404"> </div><div class="line" id="LC3405"> </div><div class="line" id="LC3406"> </div><div class="line" id="LC3407"> </div><div class="line" id="LC3408"> </div><div class="line" id="LC3409"> </div><div class="line" id="LC3410"> </div><div class="line" id="LC3411"> </div><div class="line" id="LC3412">Kalt Informational [Page 61]</div><div class="line" id="LC3413"> </div><div class="line" id="LC3414">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3415"> </div><div class="line" id="LC3416"> </div><div class="line" id="LC3417">10. References</div><div class="line" id="LC3418"> </div><div class="line" id="LC3419"> [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate</div><div class="line" id="LC3420"> Requirement Levels", BCP 14, RFC 2119, March 1997.</div><div class="line" id="LC3421"> </div><div class="line" id="LC3422"> [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax</div><div class="line" id="LC3423"> Specifications: ABNF", RFC 2234, November 1997.</div><div class="line" id="LC3424"> </div><div class="line" id="LC3425"> [HNAME] Braden, R., "Requirements for Internet Hosts --</div><div class="line" id="LC3426"> Application and Support", STD 3, RFC 1123, October 1989.</div><div class="line" id="LC3427"> </div><div class="line" id="LC3428"> [IRC] Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",</div><div class="line" id="LC3429"> RFC 1459, May 1993.</div><div class="line" id="LC3430"> </div><div class="line" id="LC3431"> [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,</div><div class="line" id="LC3432"> April 2000.</div><div class="line" id="LC3433"> </div><div class="line" id="LC3434"> [IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC</div><div class="line" id="LC3435"> 2811, April 2000.</div><div class="line" id="LC3436"> </div><div class="line" id="LC3437"> [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC</div><div class="line" id="LC3438"> 2813, April 2000.</div><div class="line" id="LC3439"> </div><div class="line" id="LC3440">11. Author's Address</div><div class="line" id="LC3441"> </div><div class="line" id="LC3442"> Christophe Kalt</div><div class="line" id="LC3443"> 99 Teaneck Rd, Apt #117</div><div class="line" id="LC3444"> Ridgefield Park, NJ 07660</div><div class="line" id="LC3445"> USA</div><div class="line" id="LC3446"> </div><div class="line" id="LC3447"> EMail: kalt@stealth.net</div><div class="line" id="LC3448"> </div><div class="line" id="LC3449"> </div><div class="line" id="LC3450"> </div><div class="line" id="LC3451"> </div><div class="line" id="LC3452"> </div><div class="line" id="LC3453"> </div><div class="line" id="LC3454"> </div><div class="line" id="LC3455"> </div><div class="line" id="LC3456"> </div><div class="line" id="LC3457"> </div><div class="line" id="LC3458"> </div><div class="line" id="LC3459"> </div><div class="line" id="LC3460"> </div><div class="line" id="LC3461"> </div><div class="line" id="LC3462"> </div><div class="line" id="LC3463"> </div><div class="line" id="LC3464"> </div><div class="line" id="LC3465"> </div><div class="line" id="LC3466"> </div><div class="line" id="LC3467"> </div><div class="line" id="LC3468">Kalt Informational [Page 62]</div><div class="line" id="LC3469"> </div><div class="line" id="LC3470">RFC 2812 Internet Relay Chat: Client Protocol April 2000</div><div class="line" id="LC3471"> </div><div class="line" id="LC3472"> </div><div class="line" id="LC3473">12. Full Copyright Statement</div><div class="line" id="LC3474"> </div><div class="line" id="LC3475"> Copyright (C) The Internet Society (2000). All Rights Reserved.</div><div class="line" id="LC3476"> </div><div class="line" id="LC3477"> This document and translations of it may be copied and furnished to</div><div class="line" id="LC3478"> others, and derivative works that comment on or otherwise explain it</div><div class="line" id="LC3479"> or assist in its implementation may be prepared, copied, published</div><div class="line" id="LC3480"> and distributed, in whole or in part, without restriction of any</div><div class="line" id="LC3481"> kind, provided that the above copyright notice and this paragraph are</div><div class="line" id="LC3482"> included on all such copies and derivative works. However, this</div><div class="line" id="LC3483"> document itself may not be modified in any way, such as by removing</div><div class="line" id="LC3484"> the copyright notice or references to the Internet Society or other</div><div class="line" id="LC3485"> Internet organizations, except as needed for the purpose of</div><div class="line" id="LC3486"> developing Internet standards in which case the procedures for</div><div class="line" id="LC3487"> copyrights defined in the Internet Standards process must be</div><div class="line" id="LC3488"> followed, or as required to translate it into languages other than</div><div class="line" id="LC3489"> English.</div><div class="line" id="LC3490"> </div><div class="line" id="LC3491"> The limited permissions granted above are perpetual and will not be</div><div class="line" id="LC3492"> revoked by the Internet Society or its successors or assigns.</div><div class="line" id="LC3493"> </div><div class="line" id="LC3494"> This document and the information contained herein is provided on an</div><div class="line" id="LC3495"> "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING</div><div class="line" id="LC3496"> TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING</div><div class="line" id="LC3497"> BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION</div><div class="line" id="LC3498"> HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF</div><div class="line" id="LC3499"> MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</div><div class="line" id="LC3500"> </div><div class="line" id="LC3501">Acknowledgement</div><div class="line" id="LC3502"> </div><div class="line" id="LC3503"> Funding for the RFC Editor function is currently provided by the</div><div class="line" id="LC3504"> Internet Society.</div><div class="line" id="LC3505"> </div><div class="line" id="LC3506"> </div><div class="line" id="LC3507"> </div><div class="line" id="LC3508"> </div><div class="line" id="LC3509"> </div><div class="line" id="LC3510"> </div><div class="line" id="LC3511"> </div><div class="line" id="LC3512"> </div><div class="line" id="LC3513"> </div><div class="line" id="LC3514"> </div><div class="line" id="LC3515"> </div><div class="line" id="LC3516"> </div><div class="line" id="LC3517"> </div><div class="line" id="LC3518"> </div><div class="line" id="LC3519"> </div><div class="line" id="LC3520"> </div><div class="line" id="LC3521"> </div><div class="line" id="LC3522"> </div><div class="line" id="LC3523"> </div><div class="line" id="LC3524">Kalt Informational [Page 63]</div><div class="line" id="LC3525"> </div><div class="line" id="LC3526"> </div><div class="line" id="LC3527"> </div><div class="line" id="LC3528"> </div><div class="line" id="LC3529"> </div><div class="line" id="LC3530"> </div><div class="line" id="LC3531"> </div><div class="line" id="LC3532"> </div></pre></div> - - </td> - </tr> - </table> - - </div> - - - </div> - </div> - - - - - </div> - - - - <div class="push"></div> - </div> - - <div id="footer"> - <div class="site"> - <div class="info"> - <div class="links"> - <a href="http://github.com/blog"><b>Blog</b></a> | - <a href="http://support.github.com/">Support</a> | - <a href="http://github.com/training">Training</a> | - <a href="http://github.com/contact">Contact</a> | - <a href="http://develop.github.com">API</a> | - <a href="http://twitter.com/github">Status</a> | - <a href="http://twitter.com/github">GitHub on Twitter</a> | - <a href="http://github.com/guides/home">Help</a> - - </div> - <div class="company"> - <span id="_rrt" title="0.84973s from xc88-s00039">GitHub</span>™ - is <a href="http://logicalawesome.com/">Logical Awesome</a> ©2009 | <a href="/site/terms">Terms of Service</a> | <a href="/site/privacy">Privacy Policy</a> - </div> - </div> - <div class="sponsor"> - <a href="http://engineyard.com"><img src="/images/modules/footer/ey-rubyhosting.png" alt="Engine Yard" /></a> - </div> - </div> - </div> - - <div id="coming_soon" style="display:none;"> - This feature is coming soon. Sit tight! - </div> - - - <script type="text/javascript"> - var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); - document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); - </script> - <script type="text/javascript"> - var pageTracker = _gat._getTracker("UA-3769691-2"); - pageTracker._initData(); - pageTracker._trackPageview(); - </script> - - - </body> -</html> - +
+
+
+
+
+
+Network Working Group C. Kalt
+Request for Comments: 2812 April 2000
+Updates: 1459
+Category: Informational
+
+
+ Internet Relay Chat: Client Protocol
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+IESG NOTE:
+
+ The IRC protocol itself enables several possibilities of transferring
+ data between clients, and just like with other transfer mechanisms
+ like email, the receiver of the data has to be careful about how the
+ data is handled. For more information on security issues with the IRC
+ protocol, see for example http://www.irchelp.org/irchelp/security/.
+
+Abstract
+
+ The IRC (Internet Relay Chat) protocol is for use with text based
+ conferencing; the simplest client being any socket program capable of
+ connecting to the server.
+
+ This document defines the Client Protocol, and assumes that the
+ reader is familiar with the IRC Architecture [IRC-ARCH].
+
+Table of Contents
+
+ 1. Labels ..................................................... 3
+ 1.1 Servers ................................................ 3
+ 1.2 Clients ................................................ 3
+ 1.2.1 Users ............................................. 4
+ 1.2.1.1 Operators .................................... 4
+ 1.2.2 Services .......................................... 4
+ 1.3 Channels ............................................... 4
+ 2. The IRC Client Specification ............................... 5
+ 2.1 Overview ............................................... 5
+ 2.2 Character codes ........................................ 5
+ 2.3 Messages ............................................... 5
+
+
+
+Kalt Informational [Page 1]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 2.3.1 Message format in Augmented BNF ................... 6
+ 2.4 Numeric replies ........................................ 8
+ 2.5 Wildcard expressions ................................... 9
+ 3. Message Details ............................................ 9
+ 3.1 Connection Registration ................................ 10
+ 3.1.1 Password message .................................. 10
+ 3.1.2 Nick message ...................................... 10
+ 3.1.3 User message ...................................... 11
+ 3.1.4 Oper message ...................................... 12
+ 3.1.5 User mode message ................................. 12
+ 3.1.6 Service message ................................... 13
+ 3.1.7 Quit .............................................. 14
+ 3.1.8 Squit ............................................. 15
+ 3.2 Channel operations ..................................... 15
+ 3.2.1 Join message ...................................... 16
+ 3.2.2 Part message ...................................... 17
+ 3.2.3 Channel mode message .............................. 18
+ 3.2.4 Topic message ..................................... 19
+ 3.2.5 Names message ..................................... 20
+ 3.2.6 List message ...................................... 21
+ 3.2.7 Invite message .................................... 21
+ 3.2.8 Kick command ...................................... 22
+ 3.3 Sending messages ....................................... 23
+ 3.3.1 Private messages .................................. 23
+ 3.3.2 Notice ............................................ 24
+ 3.4 Server queries and commands ............................ 25
+ 3.4.1 Motd message ...................................... 25
+ 3.4.2 Lusers message .................................... 25
+ 3.4.3 Version message ................................... 26
+ 3.4.4 Stats message ..................................... 26
+ 3.4.5 Links message ..................................... 27
+ 3.4.6 Time message ...................................... 28
+ 3.4.7 Connect message ................................... 28
+ 3.4.8 Trace message ..................................... 29
+ 3.4.9 Admin command ..................................... 30
+ 3.4.10 Info command ...................................... 31
+ 3.5 Service Query and Commands ............................. 31
+ 3.5.1 Servlist message .................................. 31
+ 3.5.2 Squery ............................................ 32
+ 3.6 User based queries ..................................... 32
+ 3.6.1 Who query ......................................... 32
+ 3.6.2 Whois query ....................................... 33
+ 3.6.3 Whowas ............................................ 34
+ 3.7 Miscellaneous messages ................................. 34
+ 3.7.1 Kill message ...................................... 35
+ 3.7.2 Ping message ...................................... 36
+ 3.7.3 Pong message ...................................... 37
+ 3.7.4 Error ............................................. 37
+
+
+
+Kalt Informational [Page 2]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 4. Optional features .......................................... 38
+ 4.1 Away ................................................... 38
+ 4.2 Rehash message ......................................... 39
+ 4.3 Die message ............................................ 39
+ 4.4 Restart message ........................................ 40
+ 4.5 Summon message ......................................... 40
+ 4.6 Users .................................................. 41
+ 4.7 Operwall message ....................................... 41
+ 4.8 Userhost message ....................................... 42
+ 4.9 Ison message ........................................... 42
+ 5. Replies .................................................... 43
+ 5.1 Command responses ...................................... 43
+ 5.2 Error Replies .......................................... 53
+ 5.3 Reserved numerics ...................................... 59
+ 6. Current implementations .................................... 60
+ 7. Current problems ........................................... 60
+ 7.1 Nicknames .............................................. 60
+ 7.2 Limitation of wildcards ................................ 61
+ 7.3 Security considerations ................................ 61
+ 8. Current support and availability ........................... 61
+ 9. Acknowledgements ........................................... 61
+ 10. References ................................................ 62
+ 11. Author's Address .......................................... 62
+ 12. Full Copyright Statement .................................. 63
+
+1. Labels
+
+ This section defines the identifiers used for the various components
+ of the IRC protocol.
+
+1.1 Servers
+
+ Servers are uniquely identified by their name, which has a maximum
+ length of sixty three (63) characters. See the protocol grammar
+ rules (section 2.3.1) for what may and may not be used in a server
+ name.
+
+1.2 Clients
+
+ For each client all servers MUST have the following information: a
+ netwide unique identifier (whose format depends on the type of
+ client) and the server which introduced the client.
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 3]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+1.2.1 Users
+
+ Each user is distinguished from other users by a unique nickname
+ having a maximum length of nine (9) characters. See the protocol
+ grammar rules (section 2.3.1) for what may and may not be used in a
+ nickname.
+
+ While the maximum length is limited to nine characters, clients
+ SHOULD accept longer strings as they may become used in future
+ evolutions of the protocol.
+
+1.2.1.1 Operators
+
+ To allow a reasonable amount of order to be kept within the IRC
+ network, a special class of users (operators) is allowed to perform
+ general maintenance functions on the network. Although the powers
+ granted to an operator can be considered as 'dangerous', they are
+ nonetheless often necessary. Operators SHOULD be able to perform
+ basic network tasks such as disconnecting and reconnecting servers as
+ needed. In recognition of this need, the protocol discussed herein
+ provides for operators only to be able to perform such functions.
+ See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).
+
+ A more controversial power of operators is the ability to remove a
+ user from the connected network by 'force', i.e., operators are able
+ to close the connection between any client and server. The
+ justification for this is very delicate since its abuse is both
+ destructive and annoying, and its benefits close to inexistent. For
+ further details on this type of action, see section 3.7.1 (KILL).
+
+1.2.2 Services
+
+ Each service is distinguished from other services by a service name
+ composed of a nickname and a server name. As for users, the nickname
+ has a maximum length of nine (9) characters. See the protocol
+ grammar rules (section 2.3.1) for what may and may not be used in a
+ nickname.
+
+1.3 Channels
+
+ Channels names are strings (beginning with a '&', '#', '+' or '!'
+ character) of length up to fifty (50) characters. Apart from the
+ requirement that the first character is either '&', '#', '+' or '!',
+ the only restriction on a channel name is that it SHALL NOT contain
+ any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space
+ is used as parameter separator and command is used as a list item
+ separator by the protocol). A colon (':') can also be used as a
+ delimiter for the channel mask. Channel names are case insensitive.
+
+
+
+Kalt Informational [Page 4]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ See the protocol grammar rules (section 2.3.1) for the exact syntax
+ of a channel name.
+
+ Each prefix characterizes a different channel type. The definition
+ of the channel types is not relevant to the client-server protocol
+ and thus it is beyond the scope of this document. More details can
+ be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].
+
+2. The IRC Client Specification
+
+2.1 Overview
+
+ The protocol as described herein is for use only with client to
+ server connections when the client registers as a user.
+
+2.2 Character codes
+
+ No specific character set is specified. The protocol is based on a
+ set of codes which are composed of eight (8) bits, making up an
+ octet. Each message may be composed of any number of these octets;
+ however, some octet values are used for control codes, which act as
+ message delimiters.
+
+ Regardless of being an 8-bit protocol, the delimiters and keywords
+ are such that protocol is mostly usable from US-ASCII terminal and a
+ telnet connection.
+
+ Because of IRC's Scandinavian origin, the characters {}|^ are
+ considered to be the lower case equivalents of the characters []\~,
+ respectively. This is a critical issue when determining the
+ equivalence of two nicknames or channel names.
+
+2.3 Messages
+
+ Servers and clients send each other messages, which may or may not
+ generate a reply. If the message contains a valid command, as
+ described in later sections, the client should expect a reply as
+ specified but it is not advised to wait forever for the reply; client
+ to server and server to server communication is essentially
+ asynchronous by nature.
+
+ Each IRC message may consist of up to three main parts: the prefix
+ (OPTIONAL), the command, and the command parameters (maximum of
+ fifteen (15)). The prefix, command, and all parameters are separated
+ by one ASCII space character (0x20) each.
+
+
+
+
+
+
+Kalt Informational [Page 5]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ The presence of a prefix is indicated with a single leading ASCII
+ colon character (':', 0x3b), which MUST be the first character of the
+ message itself. There MUST be NO gap (whitespace) between the colon
+ and the prefix. The prefix is used by servers to indicate the true
+ origin of the message. If the prefix is missing from the message, it
+ is assumed to have originated from the connection from which it was
+ received from. Clients SHOULD NOT use a prefix when sending a
+ message; if they use one, the only valid prefix is the registered
+ nickname associated with the client.
+
+ The command MUST either be a valid IRC command or a three (3) digit
+ number represented in ASCII text.
+
+ IRC messages are always lines of characters terminated with a CR-LF
+ (Carriage Return - Line Feed) pair, and these messages SHALL NOT
+ exceed 512 characters in length, counting all characters including
+ the trailing CR-LF. Thus, there are 510 characters maximum allowed
+ for the command and its parameters. There is no provision for
+ continuation of message lines. See section 6 for more details about
+ current implementations.
+
+2.3.1 Message format in Augmented BNF
+
+ The protocol messages must be extracted from the contiguous stream of
+ octets. The current solution is to designate two characters, CR and
+ LF, as message separators. Empty messages are silently ignored,
+ which permits use of the sequence CR-LF between messages without
+ extra problems.
+
+ The extracted message is parsed into the components <prefix>,
+ <command> and list of parameters (<params>).
+
+ The Augmented BNF representation for this is:
+
+ message = [ ":" prefix SPACE ] command [ params ] crlf
+ prefix = servername / ( nickname [ [ "!" user ] "@" host ] )
+ command = 1*letter / 3digit
+ params = *14( SPACE middle ) [ SPACE ":" trailing ]
+ =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]
+
+ nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
+ ; any octet except NUL, CR, LF, " " and ":"
+ middle = nospcrlfcl *( ":" / nospcrlfcl )
+ trailing = *( ":" / " " / nospcrlfcl )
+
+ SPACE = %x20 ; space character
+ crlf = %x0D %x0A ; "carriage return" "linefeed"
+
+
+
+
+Kalt Informational [Page 6]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ NOTES:
+ 1) After extracting the parameter list, all parameters are equal
+ whether matched by <middle> or <trailing>. <trailing> is just a
+ syntactic trick to allow SPACE within the parameter.
+
+ 2) The NUL (%x00) character is not special in message framing, and
+ basically could end up inside a parameter, but it would cause
+ extra complexities in normal C string handling. Therefore, NUL
+ is not allowed within messages.
+
+ Most protocol messages specify additional semantics and syntax for
+ the extracted parameter strings dictated by their position in the
+ list. For example, many server commands will assume that the first
+ parameter after the command is the list of targets, which can be
+ described with:
+
+ target = nickname / server
+ msgtarget = msgto *( "," msgto )
+ msgto = channel / ( user [ "%" host ] "@" servername )
+ msgto =/ ( user "%" host ) / targetmask
+ msgto =/ nickname / ( nickname "!" user "@" host )
+ channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring
+ [ ":" chanstring ]
+ servername = hostname
+ host = hostname / hostaddr
+ hostname = shortname *( "." shortname )
+ shortname = ( letter / digit ) *( letter / digit / "-" )
+ *( letter / digit )
+ ; as specified in RFC 1123 [HNAME]
+ hostaddr = ip4addr / ip6addr
+ ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
+ ip6addr = 1*hexdigit 7( ":" 1*hexdigit )
+ ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr
+ nickname = ( letter / special ) *8( letter / digit / special / "-" )
+ targetmask = ( "$" / "#" ) mask
+ ; see details on allowed masks in section 3.3.1
+ chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B
+ chanstring =/ %x2D-39 / %x3B-FF
+ ; any octet except NUL, BELL, CR, LF, " ", "," and ":"
+ channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 7]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Other parameter syntaxes are:
+
+ user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )
+ ; any octet except NUL, CR, LF, " " and "@"
+ key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F )
+ ; any 7-bit US_ASCII character,
+ ; except NUL, CR, LF, FF, h/v TABs, and " "
+ letter = %x41-5A / %x61-7A ; A-Z / a-z
+ digit = %x30-39 ; 0-9
+ hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F"
+ special = %x5B-60 / %x7B-7D
+ ; "[", "]", "\", "`", "_", "^", "{", "|", "}"
+
+ NOTES:
+ 1) The <hostaddr> syntax is given here for the sole purpose of
+ indicating the format to follow for IP addresses. This
+ reflects the fact that the only available implementations of
+ this protocol uses TCP/IP as underlying network protocol but is
+ not meant to prevent other protocols to be used.
+
+ 2) <hostname> has a maximum length of 63 characters. This is a
+ limitation of the protocol as internet hostnames (in
+ particular) can be longer. Such restriction is necessary
+ because IRC messages are limited to 512 characters in length.
+ Clients connecting from a host which name is longer than 63
+ characters are registered using the host (numeric) address
+ instead of the host name.
+
+ 3) Some parameters used in the following sections of this
+ documents are not defined here as there is nothing specific
+ about them besides the name that is used for convenience.
+ These parameters follow the general syntax defined for
+ <params>.
+
+2.4 Numeric replies
+
+ Most of the messages sent to the server generate a reply of some
+ sort. The most common reply is the numeric reply, used for both
+ errors and normal replies. The numeric reply MUST be sent as one
+ message consisting of the sender prefix, the three-digit numeric, and
+ the target of the reply. A numeric reply is not allowed to originate
+ from a client. In all other respects, a numeric reply is just like a
+ normal message, except that the keyword is made up of 3 numeric
+ digits rather than a string of letters. A list of different replies
+ is supplied in section 5 (Replies).
+
+
+
+
+
+
+Kalt Informational [Page 8]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+2.5 Wildcard expressions
+
+ When wildcards are allowed in a string, it is referred as a "mask".
+
+ For string matching purposes, the protocol allows the use of two
+ special characters: '?' (%x3F) to match one and only one character,
+ and '*' (%x2A) to match any number of any characters. These two
+ characters can be escaped using the character '\' (%x5C).
+
+ The Augmented BNF syntax for this is:
+
+ mask = *( nowild / noesc wildone / noesc wildmany )
+ wildone = %x3F
+ wildmany = %x2A
+ nowild = %x01-29 / %x2B-3E / %x40-FF
+ ; any octet except NUL, "*", "?"
+ noesc = %x01-5B / %x5D-FF
+ ; any octet except NUL and "\"
+ matchone = %x01-FF
+ ; matches wildone
+ matchmany = *matchone
+ ; matches wildmany
+
+ Examples:
+
+ a?c ; Matches any string of 3 characters in length starting
+ with "a" and ending with "c"
+
+ a*c ; Matches any string of at least 2 characters in length
+ starting with "a" and ending with "c"
+
+3. Message Details
+
+ On the following pages there are descriptions of each message
+ recognized by the IRC server and client. All commands described in
+ this section MUST be implemented by any server for this protocol.
+
+ Where the reply ERR_NOSUCHSERVER is returned, it means that the
+ target of the message could not be found. The server MUST NOT send
+ any other replies after this error for that command.
+
+ The server to which a client is connected is required to parse the
+ complete message, and return any appropriate errors.
+
+ If multiple parameters is presented, then each MUST be checked for
+ validity and appropriate responses MUST be sent back to the client.
+ In the case of incorrect messages which use parameter lists with
+ comma as an item separator, a reply MUST be sent for each item.
+
+
+
+Kalt Informational [Page 9]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.1 Connection Registration
+
+ The commands described here are used to register a connection with an
+ IRC server as a user as well as to correctly disconnect.
+
+ A "PASS" command is not required for a client connection to be
+ registered, but it MUST precede the latter of the NICK/USER
+ combination (for a user connection) or the SERVICE command (for a
+ service connection). The RECOMMENDED order for a client to register
+ is as follows:
+
+ 1. Pass message
+ 2. Nick message 2. Service message
+ 3. User message
+
+ Upon success, the client will receive an RPL_WELCOME (for users) or
+ RPL_YOURESERVICE (for services) message indicating that the
+ connection is now registered and known the to the entire IRC network.
+ The reply message MUST contain the full client identifier upon which
+ it was registered.
+
+3.1.1 Password message
+
+ Command: PASS
+ Parameters: <password>
+
+ The PASS command is used to set a 'connection password'. The
+ optional password can and MUST be set before any attempt to register
+ the connection is made. Currently this requires that user send a
+ PASS command before sending the NICK/USER combination.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ PASS secretpasswordhere
+
+3.1.2 Nick message
+
+
+ Command: NICK
+ Parameters: <nickname>
+
+ NICK command is used to give user a nickname or change the existing
+ one.
+
+
+
+
+Kalt Informational [Page 10]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME
+ ERR_NICKNAMEINUSE ERR_NICKCOLLISION
+ ERR_UNAVAILRESOURCE ERR_RESTRICTED
+
+ Examples:
+
+ NICK Wiz ; Introducing new nick "Wiz" if session is
+ still unregistered, or user changing his
+ nickname to "Wiz"
+
+ :WiZ!jto@tolsun.oulu.fi NICK Kilroy
+ ; Server telling that WiZ changed his
+ nickname to Kilroy.
+
+3.1.3 User message
+
+ Command: USER
+ Parameters: <user> <mode> <unused> <realname>
+
+ The USER command is used at the beginning of connection to specify
+ the username, hostname and realname of a new user.
+
+ The <mode> parameter should be a numeric, and can be used to
+ automatically set user modes when registering with the server. This
+ parameter is a bitmask, with only 2 bits having any signification: if
+ the bit 2 is set, the user mode 'w' will be set and if the bit 3 is
+ set, the user mode 'i' will be set. (See Section 3.1.5 "User
+ Modes").
+
+ The <realname> may contain space characters.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ USER guest 0 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan".
+
+ USER guest 8 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan", and asking to be set
+ invisible.
+
+
+
+
+Kalt Informational [Page 11]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.1.4 Oper message
+
+ Command: OPER
+ Parameters: <name> <password>
+
+ A normal user uses the OPER command to obtain operator privileges.
+ The combination of <name> and <password> are REQUIRED to gain
+ Operator privileges. Upon success, the user will receive a MODE
+ message (see section 3.1.5) indicating the new user modes.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS RPL_YOUREOPER
+ ERR_NOOPERHOST ERR_PASSWDMISMATCH
+
+ Example:
+
+ OPER foo bar ; Attempt to register as an operator
+ using a username of "foo" and "bar"
+ as the password.
+
+3.1.5 User mode message
+
+ Command: MODE
+ Parameters: <nickname>
+ *( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )
+
+ The user MODE's are typically changes which affect either how the
+ client is seen by others or what 'extra' messages the client is sent.
+
+ A user MODE command MUST only be accepted if both the sender of the
+ message and the nickname given as a parameter are both the same. If
+ no other parameter is given, then the server will return the current
+ settings for the nick.
+
+ The available modes are as follows:
+
+ a - user is flagged as away;
+ i - marks a users as invisible;
+ w - user receives wallops;
+ r - restricted user connection;
+ o - operator flag;
+ O - local operator flag;
+ s - marks a user for receipt of server notices.
+
+ Additional modes may be available later on.
+
+
+
+
+
+Kalt Informational [Page 12]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ The flag 'a' SHALL NOT be toggled by the user using the MODE command,
+ instead use of the AWAY command is REQUIRED.
+
+ If a user attempts to make themselves an operator using the "+o" or
+ "+O" flag, the attempt SHOULD be ignored as users could bypass the
+ authentication mechanisms of the OPER command. There is no
+ restriction, however, on anyone `deopping' themselves (using "-o" or
+ "-O").
+
+ On the other hand, if a user attempts to make themselves unrestricted
+ using the "-r" flag, the attempt SHOULD be ignored. There is no
+ restriction, however, on anyone `deopping' themselves (using "+r").
+ This flag is typically set by the server upon connection for
+ administrative reasons. While the restrictions imposed are left up
+ to the implementation, it is typical that a restricted user not be
+ allowed to change nicknames, nor make use of the channel operator
+ status on channels.
+
+ The flag 's' is obsolete but MAY still be used.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH
+ ERR_UMODEUNKNOWNFLAG RPL_UMODEIS
+
+ Examples:
+
+ MODE WiZ -w ; Command by WiZ to turn off
+ reception of WALLOPS messages.
+
+ MODE Angel +i ; Command from Angel to make herself
+ invisible.
+
+ MODE WiZ -o ; WiZ 'deopping' (removing operator
+ status).
+
+3.1.6 Service message
+
+ Command: SERVICE
+ Parameters: <nickname> <reserved> <distribution> <type>
+ <reserved> <info>
+
+ The SERVICE command to register a new service. Command parameters
+ specify the service nickname, distribution, type and info of a new
+ service.
+
+
+
+
+
+
+Kalt Informational [Page 13]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ The <distribution> parameter is used to specify the visibility of a
+ service. The service may only be known to servers which have a name
+ matching the distribution. For a matching server to have knowledge
+ of the service, the network path between that server and the server
+ on which the service is connected MUST be composed of servers which
+ names all match the mask.
+
+ The <type> parameter is currently reserved for future usage.
+
+ Numeric Replies:
+
+ ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS
+ ERR_ERRONEUSNICKNAME
+ RPL_YOURESERVICE RPL_YOURHOST
+ RPL_MYINFO
+
+ Example:
+
+ SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering
+ itself with a name of "dict". This
+ service will only be available on
+ servers which name matches "*.fr".
+
+3.1.7 Quit
+
+ Command: QUIT
+ Parameters: [ <Quit Message> ]
+
+ A client session is terminated with a quit message. The server
+ acknowledges this by sending an ERROR message to the client.
+
+ Numeric Replies:
+
+ None.
+
+ Example:
+
+ QUIT :Gone to have lunch ; Preferred message format.
+
+ :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User
+ syrk has quit IRC to have lunch.
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 14]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.1.8 Squit
+
+ Command: SQUIT
+ Parameters: <server> <comment>
+
+ The SQUIT command is available only to operators. It is used to
+ disconnect server links. Also servers can generate SQUIT messages on
+ error conditions. A SQUIT message may also target a remote server
+ connection. In this case, the SQUIT message will simply be sent to
+ the remote server without affecting the servers in between the
+ operator and the remote server.
+
+ The <comment> SHOULD be supplied by all operators who execute a SQUIT
+ for a remote server. The server ordered to disconnect its peer
+ generates a WALLOPS message with <comment> included, so that other
+ users may be aware of the reason of this action.
+
+ Numeric replies:
+
+ ERR_NOPRIVILEGES ERR_NOSUCHSERVER
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server
+ tolson.oulu.fi to terminate its
+ connection with comment "Bad Link".
+
+ :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command
+ from Trillian from to disconnect
+ "cm22.eng.umd.edu" from the net with
+ comment "Server out of control".
+
+3.2 Channel operations
+
+ This group of messages is concerned with manipulating channels, their
+ properties (channel modes), and their contents (typically users).
+ For this reason, these messages SHALL NOT be made available to
+ services.
+
+ All of these messages are requests which will or will not be granted
+ by the server. The server MUST send a reply informing the user
+ whether the request was granted, denied or generated an error. When
+ the server grants the request, the message is typically sent back
+ (eventually reformatted) to the user with the prefix set to the user
+ itself.
+
+
+
+
+
+Kalt Informational [Page 15]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ The rules governing how channels are managed are enforced by the
+ servers. These rules are beyond the scope of this document. More
+ details are found in "Internet Relay Chat: Channel Management" [IRC-
+ CHAN].
+
+3.2.1 Join message
+
+ Command: JOIN
+ Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )
+ / "0"
+
+ The JOIN command is used by a user to request to start listening to
+ the specific channel. Servers MUST be able to parse arguments in the
+ form of a list of target, but SHOULD NOT use lists when sending JOIN
+ messages to clients.
+
+ Once a user has joined a channel, he receives information about
+ all commands his server receives affecting the channel. This
+ includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE.
+ This allows channel members to keep track of the other channel
+ members, as well as channel modes.
+
+ If a JOIN is successful, the user receives a JOIN message as
+ confirmation and is then sent the channel's topic (using RPL_TOPIC) and
+ the list of users who are on the channel (using RPL_NAMREPLY), which
+ MUST include the user joining.
+
+ Note that this message accepts a special argument ("0"), which is
+ a special request to leave all channels the user is currently a member
+ of. The server will process this message as if the user had sent
+ a PART command (See Section 3.2.2) for each channel he is a member
+ of.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN
+ ERR_INVITEONLYCHAN ERR_BADCHANNELKEY
+ ERR_CHANNELISFULL ERR_BADCHANMASK
+ ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS
+ ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE
+ RPL_TOPIC
+
+ Examples:
+
+ JOIN #foobar ; Command to join channel #foobar.
+
+ JOIN &foo fubar ; Command to join channel &foo using
+ key "fubar".
+
+
+
+Kalt Informational [Page 16]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ JOIN #foo,&bar fubar ; Command to join channel #foo using
+ key "fubar" and &bar using no key.
+
+ JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using
+ key "fubar", and channel #bar using
+ key "foobar".
+
+ JOIN #foo,#bar ; Command to join channels #foo and
+ #bar.
+
+ JOIN 0 ; Leave all currently joined
+ channels.
+
+ :WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ
+ on channel #Twilight_zone
+
+3.2.2 Part message
+
+ Command: PART
+ Parameters: <channel> *( "," <channel> ) [ <Part Message> ]
+
+ The PART command causes the user sending the message to be removed
+ from the list of active members for all given channels listed in the
+ parameter string. If a "Part Message" is given, this will be sent
+ instead of the default message, the nickname. This request is always
+ granted by the server.
+
+ Servers MUST be able to parse arguments in the form of a list of
+ target, but SHOULD NOT use lists when sending PART messages to
+ clients.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_NOTONCHANNEL
+
+ Examples:
+
+ PART #twilight_zone ; Command to leave channel
+ "#twilight_zone"
+
+ PART #oz-ops,&group5 ; Command to leave both channels
+ "&group5" and "#oz-ops".
+
+ :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost
+ ; User WiZ leaving channel
+ "#playzone" with the message "I
+ lost".
+
+
+
+Kalt Informational [Page 17]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.2.3 Channel mode message
+
+ Command: MODE
+ Parameters: <channel> *( ( "-" / "+" ) *<modes> *<modeparams> )
+
+ The MODE command is provided so that users may query and change the
+ characteristics of a channel. For more details on available modes
+ and their uses, see "Internet Relay Chat: Channel Management" [IRC-
+ CHAN]. Note that there is a maximum limit of three (3) changes per
+ command for modes that take a parameter.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_KEYSET
+ ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE
+ RPL_CHANNELMODEIS
+ RPL_BANLIST RPL_ENDOFBANLIST
+ RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST
+ RPL_INVITELIST RPL_ENDOFINVITELIST
+ RPL_UNIQOPIS
+
+ The following examples are given to help understanding the syntax of
+ the MODE command, but refer to modes defined in "Internet Relay Chat:
+ Channel Management" [IRC-CHAN].
+
+ Examples:
+
+ MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel
+ moderated and 'invite-only' with user
+ with a hostname matching *.fi
+ automatically invited.
+
+ MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges
+ to Kilroy on channel #Finnish.
+
+ MODE #Finnish +v Wiz ; Command to allow WiZ to speak on
+ #Finnish.
+
+ MODE #Fins -s ; Command to remove 'secret' flag
+ from channel #Fins.
+
+ MODE #42 +k oulu ; Command to set the channel key to
+ "oulu".
+
+ MODE #42 -k oulu ; Command to remove the "oulu"
+ channel key on channel "#42".
+
+
+
+
+Kalt Informational [Page 18]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ MODE #eu-opers +l 10 ; Command to set the limit for the
+ number of users on channel
+ "#eu-opers" to 10.
+
+ :WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l
+ ; User "WiZ" removing the limit for
+ the number of users on channel "#eu-
+ opers".
+
+ MODE &oulu +b ; Command to list ban masks set for
+ the channel "&oulu".
+
+ MODE &oulu +b *!*@* ; Command to prevent all users from
+ joining.
+
+ MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu
+ ; Command to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #bu +be *!*@*.edu *!*@*.bu.edu
+ ; Comment to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #meditation e ; Command to list exception masks set
+ for the channel "#meditation".
+
+ MODE #meditation I ; Command to list invitations masks
+ set for the channel "#meditation".
+
+ MODE !12345ircd O ; Command to ask who the channel
+ creator for "!12345ircd" is
+
+3.2.4 Topic message
+
+ Command: TOPIC
+ Parameters: <channel> [ <topic> ]
+
+ The TOPIC command is used to change or view the topic of a channel.
+ The topic for channel <channel> is returned if there is no <topic>
+ given. If the <topic> parameter is present, the topic for that
+ channel will be changed, if this action is allowed for the user
+ requesting it. If the <topic> parameter is an empty string, the
+ topic for that channel will be removed.
+
+
+
+
+
+
+Kalt Informational [Page 19]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL
+ RPL_NOTOPIC RPL_TOPIC
+ ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES
+
+ Examples:
+
+ :WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the
+ topic.
+
+ TOPIC #test :another topic ; Command to set the topic on #test
+ to "another topic".
+
+ TOPIC #test : ; Command to clear the topic on
+ #test.
+
+ TOPIC #test ; Command to check the topic for
+ #test.
+
+3.2.5 Names message
+
+ Command: NAMES
+ Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+ By using the NAMES command, a user can list all nicknames that are
+ visible to him. For more details on what is visible and what is not,
+ see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The
+ <channel> parameter specifies which channel(s) to return information
+ about. There is no error reply for bad channel names.
+
+ If no <channel> parameter is given, a list of all channels and their
+ occupants is returned. At the end of this list, a list of users who
+ are visible but either not on any channel or not on a visible channel
+ are listed as being on `channel' "*".
+
+ If the <target> parameter is specified, the request is forwarded to
+ that server which will generate the reply.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numerics:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_NAMREPLY RPL_ENDOFNAMES
+
+
+
+
+
+
+Kalt Informational [Page 20]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ NAMES #twilight_zone,#42 ; Command to list visible users on
+ #twilight_zone and #42
+
+ NAMES ; Command to list all visible
+ channels and users
+
+3.2.6 List message
+
+ Command: LIST
+ Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+ The list command is used to list channels and their topics. If the
+ <channel> parameter is used, only the status of that channel is
+ displayed.
+
+ If the <target> parameter is specified, the request is forwarded to
+ that server which will generate the reply.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_LIST RPL_LISTEND
+
+ Examples:
+
+ LIST ; Command to list all channels.
+
+ LIST #twilight_zone,#42 ; Command to list channels
+ #twilight_zone and #42
+
+3.2.7 Invite message
+
+ Command: INVITE
+ Parameters: <nickname> <channel>
+
+ The INVITE command is used to invite a user to a channel. The
+ parameter <nickname> is the nickname of the person to be invited to
+ the target channel <channel>. There is no requirement that the
+ channel the target user is being invited to must exist or be a valid
+ channel. However, if the channel exists, only members of the channel
+ are allowed to invite other users. When the channel has invite-only
+ flag set, only channel operators may issue INVITE command.
+
+
+
+
+
+Kalt Informational [Page 21]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Only the user inviting and the user being invited will receive
+ notification of the invitation. Other channel members are not
+ notified. (This is unlike the MODE changes, and is occasionally the
+ source of trouble for users.)
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHNICK
+ ERR_NOTONCHANNEL ERR_USERONCHANNEL
+ ERR_CHANOPRIVSNEEDED
+ RPL_INVITING RPL_AWAY
+
+ Examples:
+
+ :Angel!wings@irc.org INVITE Wiz #Dust
+
+ ; Message to WiZ when he has been
+ invited by user Angel to channel
+ #Dust
+
+ INVITE Wiz #Twilight_Zone ; Command to invite WiZ to
+ #Twilight_zone
+
+3.2.8 Kick command
+
+ Command: KICK
+ Parameters: <channel> *( "," <channel> ) <user> *( "," <user> )
+ [<comment>]
+
+ The KICK command can be used to request the forced removal of a user
+ from a channel. It causes the <user> to PART from the <channel> by
+ force. For the message to be syntactically correct, there MUST be
+ either one channel parameter and multiple user parameter, or as many
+ channel parameters as there are user parameters. If a "comment" is
+ given, this will be sent instead of the default message, the nickname
+ of the user issuing the KICK.
+
+ The server MUST NOT send KICK messages with multiple channels or
+ users to clients. This is necessarily to maintain backward
+ compatibility with old client software.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL
+
+
+
+
+
+Kalt Informational [Page 22]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ KICK &Melbourne Matthew ; Command to kick Matthew from
+ &Melbourne
+
+ KICK #Finnish John :Speaking English
+ ; Command to kick John from #Finnish
+ using "Speaking English" as the
+ reason (comment).
+
+ :WiZ!jto@tolsun.oulu.fi KICK #Finnish John
+ ; KICK message on channel #Finnish
+ from WiZ to remove John from channel
+
+3.3 Sending messages
+
+ The main purpose of the IRC protocol is to provide a base for clients
+ to communicate with each other. PRIVMSG, NOTICE and SQUERY
+ (described in Section 3.5 on Service Query and Commands) are the only
+ messages available which actually perform delivery of a text message
+ from one client to another - the rest just make it possible and try
+ to ensure it happens in a reliable and structured manner.
+
+3.3.1 Private messages
+
+ Command: PRIVMSG
+ Parameters: <msgtarget> <text to be sent>
+
+ PRIVMSG is used to send private messages between users, as well as to
+ send messages to channels. <msgtarget> is usually the nickname of
+ the recipient of the message, or a channel name.
+
+ The <msgtarget> parameter may also be a host mask (#<mask>) or server
+ mask ($<mask>). In both cases the server will only send the PRIVMSG
+ to those who have a server or host matching the mask. The mask MUST
+ have at least 1 (one) "." in it and no wildcards following the last
+ ".". This requirement exists to prevent people sending messages to
+ "#*" or "$*", which would broadcast to all users. Wildcards are the
+ '*' and '?' characters. This extension to the PRIVMSG command is
+ only available to operators.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_NOTEXTTOSEND
+ ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL
+ ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS
+ ERR_NOSUCHNICK
+ RPL_AWAY
+
+
+
+Kalt Informational [Page 23]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ?
+ ; Message from Angel to Wiz.
+
+ PRIVMSG Angel :yes I'm receiving it !
+ ; Command to send a message to Angel.
+
+ PRIVMSG jto@tolsun.oulu.fi :Hello !
+ ; Command to send a message to a user
+ on server tolsun.oulu.fi with
+ username of "jto".
+
+ PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog?
+ ; Message to a user on server
+ irc.stealth.net with username of
+ "kalt", and connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG kalt%millennium.stealth.net :Do you like cheese?
+ ; Message to a user on the local
+ server with username of "kalt", and
+ connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello !
+ ; Message to the user with nickname
+ Wiz who is connected from the host
+ tolsun.oulu.fi and has the username
+ "jto".
+
+ PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting.
+ ; Message to everyone on a server
+ which has a name matching *.fi.
+
+ PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions
+ ; Message to all users who come from
+ a host which has a name matching
+ *.edu.
+
+3.3.2 Notice
+
+ Command: NOTICE
+ Parameters: <msgtarget> <text>
+
+ The NOTICE command is used similarly to PRIVMSG. The difference
+ between NOTICE and PRIVMSG is that automatic replies MUST NEVER be
+ sent in response to a NOTICE message. This rule applies to servers
+
+
+
+Kalt Informational [Page 24]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ too - they MUST NOT send any error reply back to the client on
+ receipt of a notice. The object of this rule is to avoid loops
+ between clients automatically sending something in response to
+ something it received.
+
+ This command is available to services as well as users.
+
+ This is typically used by services, and automatons (clients with
+ either an AI or other interactive program controlling their actions).
+
+ See PRIVMSG for more details on replies and examples.
+
+3.4 Server queries and commands
+
+ The server query group of commands has been designed to return
+ information about any server which is connected to the network.
+
+ In these queries, where a parameter appears as <target>, wildcard
+ masks are usually valid. For each parameter, however, only one query
+ and set of replies is to be generated. In most cases, if a nickname
+ is given, it will mean the server to which the user is connected.
+
+ These messages typically have little value for services, it is
+ therefore RECOMMENDED to forbid services from using them.
+
+3.4.1 Motd message
+
+ Command: MOTD
+ Parameters: [ <target> ]
+
+ The MOTD command is used to get the "Message Of The Day" of the given
+ server, or current server if <target> is omitted.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+ RPL_MOTDSTART RPL_MOTD
+ RPL_ENDOFMOTD ERR_NOMOTD
+
+3.4.2 Lusers message
+
+ Command: LUSERS
+ Parameters: [ <mask> [ <target> ] ]
+
+ The LUSERS command is used to get statistics about the size of the
+ IRC network. If no parameter is given, the reply will be about the
+ whole net. If a <mask> is specified, then the reply will only
+
+
+
+
+Kalt Informational [Page 25]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ concern the part of the network formed by the servers matching the
+ mask. Finally, if the <target> parameter is specified, the request
+ is forwarded to that server which will generate the reply.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ RPL_LUSERCLIENT RPL_LUSEROP
+ RPL_LUSERUNKOWN RPL_LUSERCHANNELS
+ RPL_LUSERME ERR_NOSUCHSERVER
+
+3.4.3 Version message
+
+ Command: VERSION
+ Parameters: [ <target> ]
+
+ The VERSION command is used to query the version of the server
+ program. An optional parameter <target> is used to query the version
+ of the server program which a client is not directly connected to.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_VERSION
+
+ Examples:
+
+ VERSION tolsun.oulu.fi ; Command to check the version of
+ server "tolsun.oulu.fi".
+
+3.4.4 Stats message
+
+ Command: STATS
+ Parameters: [ <query> [ <target> ] ]
+
+ The stats command is used to query statistics of certain server. If
+ <query> parameter is omitted, only the end of stats reply is sent
+ back.
+
+ A query may be given for any single letter which is only checked by
+ the destination server and is otherwise passed on by intermediate
+ servers, ignored and unaltered.
+
+ Wildcards are allowed in the <target> parameter.
+
+
+
+
+
+Kalt Informational [Page 26]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Except for the ones below, the list of valid queries is
+ implementation dependent. The standard queries below SHOULD be
+ supported by the server:
+
+ l - returns a list of the server's connections, showing how
+ long each connection has been established and the
+ traffic over that connection in Kbytes and messages for
+ each direction;
+ m - returns the usage count for each of commands supported
+ by the server; commands for which the usage count is
+ zero MAY be omitted;
+ o - returns a list of configured privileged users,
+ operators;
+ u - returns a string showing how long the server has been
+ up.
+
+ It is also RECOMMENDED that client and server access configuration be
+ published this way.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_STATSLINKINFO RPL_STATSUPTIME
+ RPL_STATSCOMMANDS RPL_STATSOLINE
+ RPL_ENDOFSTATS
+
+ Examples:
+
+ STATS m ; Command to check the command usage
+ for the server you are connected to
+
+3.4.5 Links message
+
+ Command: LINKS
+ Parameters: [ [ <remote server> ] <server mask> ]
+
+ With LINKS, a user can list all servernames, which are known by the
+ server answering the query. The returned list of servers MUST match
+ the mask, or if no mask is given, the full list is returned.
+
+ If <remote server> is given in addition to <server mask>, the LINKS
+ command is forwarded to the first server found that matches that name
+ (if any), and that server is then required to answer the query.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_LINKS RPL_ENDOFLINKS
+
+
+
+Kalt Informational [Page 27]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ LINKS *.au ; Command to list all servers which
+ have a name that matches *.au;
+
+ LINKS *.edu *.bu.edu ; Command to list servers matching
+ *.bu.edu as seen by the first server
+ matching *.edu.
+
+3.4.6 Time message
+
+ Command: TIME
+ Parameters: [ <target> ]
+
+ The time command is used to query local time from the specified
+ server. If the <target> parameter is not given, the server receiving
+ the command must reply to the query.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_TIME
+
+ Examples:
+ TIME tolsun.oulu.fi ; check the time on the server
+ "tolson.oulu.fi"
+
+3.4.7 Connect message
+
+ Command: CONNECT
+ Parameters: <target server> <port> [ <remote server> ]
+
+ The CONNECT command can be used to request a server to try to
+ establish a new connection to another server immediately. CONNECT is
+ a privileged command and SHOULD be available only to IRC Operators.
+ If a <remote server> is given and its mask doesn't match name of the
+ parsing server, the CONNECT attempt is sent to the first match of
+ remote server. Otherwise the CONNECT attempt is made by the server
+ processing the request.
+
+ The server receiving a remote CONNECT command SHOULD generate a
+ WALLOPS message describing the source and target of the request.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NOPRIVILEGES
+ ERR_NEEDMOREPARAMS
+
+
+
+Kalt Informational [Page 28]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local
+ server to tolsun.oulu.fi on port 6667
+
+3.4.8 Trace message
+
+ Command: TRACE
+ Parameters: [ <target> ]
+
+ TRACE command is used to find the route to specific server and
+ information about its peers. Each server that processes this command
+ MUST report to the sender about it. The replies from pass-through
+ links form a chain, which shows route to destination. After sending
+ this reply back, the query MUST be sent to the next server until
+ given <target> server is reached.
+
+ TRACE command is used to find the route to specific server. Each
+ server that processes this message MUST tell the sender about it by
+ sending a reply indicating it is a pass-through link, forming a chain
+ of replies. After sending this reply back, it MUST then send the
+ TRACE message to the next server until given server is reached. If
+ the <target> parameter is omitted, it is RECOMMENDED that TRACE
+ command sends a message to the sender telling which servers the local
+ server has direct connection to.
+
+ If the destination given by <target> is an actual server, the
+ destination server is REQUIRED to report all servers, services and
+ operators which are connected to it; if the command was issued by an
+ operator, the server MAY also report all users which are connected to
+ it. If the destination given by <target> is a nickname, then only a
+ reply for that nickname is given. If the <target> parameter is
+ omitted, it is RECOMMENDED that the TRACE command is parsed as
+ targeted to the processing server.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+
+ If the TRACE message is destined for another server, all
+ intermediate servers must return a RPL_TRACELINK reply to indicate
+ that the TRACE passed through it and where it is going next.
+
+ RPL_TRACELINK
+
+
+
+
+
+Kalt Informational [Page 29]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ A TRACE reply may be composed of any number of the following
+ numeric replies.
+
+ RPL_TRACECONNECTING RPL_TRACEHANDSHAKE
+ RPL_TRACEUNKNOWN RPL_TRACEOPERATOR
+ RPL_TRACEUSER RPL_TRACESERVER
+ RPL_TRACESERVICE RPL_TRACENEWTYPE
+ RPL_TRACECLASS RPL_TRACELOG
+ RPL_TRACEEND
+
+ Examples:
+
+ TRACE *.oulu.fi ; TRACE to a server matching
+ *.oulu.fi
+
+3.4.9 Admin command
+
+ Command: ADMIN
+ Parameters: [ <target> ]
+
+ The admin command is used to find information about the administrator
+ of the given server, or current server if <target> parameter is
+ omitted. Each server MUST have the ability to forward ADMIN messages
+ to other servers.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_ADMINME RPL_ADMINLOC1
+ RPL_ADMINLOC2 RPL_ADMINEMAIL
+
+ Examples:
+
+ ADMIN tolsun.oulu.fi ; request an ADMIN reply from
+ tolsun.oulu.fi
+
+ ADMIN syrk ; ADMIN request for the server to
+ which the user syrk is connected
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 30]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.4.10 Info command
+
+ Command: INFO
+ Parameters: [ <target> ]
+
+ The INFO command is REQUIRED to return information describing the
+ server: its version, when it was compiled, the patchlevel, when it
+ was started, and any other miscellaneous information which may be
+ considered to be relevant.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_INFO RPL_ENDOFINFO
+
+ Examples:
+
+ INFO csd.bu.edu ; request an INFO reply from
+ csd.bu.edu
+
+ INFO Angel ; request info from the server that
+ Angel is connected to.
+
+3.5 Service Query and Commands
+
+ The service query group of commands has been designed to return
+ information about any service which is connected to the network.
+
+3.5.1 Servlist message
+
+ Command: SERVLIST
+ Parameters: [ <mask> [ <type> ] ]
+
+ The SERVLIST command is used to list services currently connected to
+ the network and visible to the user issuing the command. The
+ optional parameters may be used to restrict the result of the query
+ (to matching services names, and services type).
+
+ Numeric Replies:
+
+ RPL_SERVLIST RPL_SERVLISTEND
+
+
+
+
+
+
+
+
+Kalt Informational [Page 31]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.5.2 Squery
+
+ Command: SQUERY
+ Parameters: <servicename> <text>
+
+ The SQUERY command is used similarly to PRIVMSG. The only difference
+ is that the recipient MUST be a service. This is the only way for a
+ text message to be delivered to a service.
+
+ See PRIVMSG for more details on replies and example.
+
+ Examples:
+
+ SQUERY irchelp :HELP privmsg
+ ; Message to the service with
+ nickname irchelp.
+
+ SQUERY dict@irc.fr :fr2en blaireau
+ ; Message to the service with name
+ dict@irc.fr.
+
+3.6 User based queries
+
+ User queries are a group of commands which are primarily concerned
+ with finding details on a particular user or group users. When using
+ wildcards with any of these commands, if they match, they will only
+ return information on users who are 'visible' to you. The visibility
+ of a user is determined as a combination of the user's mode and the
+ common set of channels you are both on.
+
+ Although services SHOULD NOT be using this class of message, they are
+ allowed to.
+
+3.6.1 Who query
+
+ Command: WHO
+ Parameters: [ <mask> [ "o" ] ]
+
+ The WHO command is used by a client to generate a query which returns
+ a list of information which 'matches' the <mask> parameter given by
+ the client. In the absence of the <mask> parameter, all visible
+ (users who aren't invisible (user mode +i) and who don't have a
+ common channel with the requesting client) are listed. The same
+ result can be achieved by using a <mask> of "0" or any wildcard which
+ will end up matching every visible user.
+
+ The <mask> passed to WHO is matched against users' host, server, real
+ name and nickname if the channel <mask> cannot be found.
+
+
+
+Kalt Informational [Page 32]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ If the "o" parameter is passed only operators are returned according
+ to the <mask> supplied.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_WHOREPLY RPL_ENDOFWHO
+
+ Examples:
+
+ WHO *.fi ; Command to list all users who match
+ against "*.fi".
+
+ WHO jto* o ; Command to list all users with a
+ match against "jto*" if they are an
+ operator.
+
+3.6.2 Whois query
+
+ Command: WHOIS
+ Parameters: [ <target> ] <mask> *( "," <mask> )
+
+ This command is used to query information about particular user.
+ The server will answer this command with several numeric messages
+ indicating different statuses of each user which matches the mask (if
+ you are entitled to see them). If no wildcard is present in the
+ <mask>, any information about that nick which you are allowed to see
+ is presented.
+
+ If the <target> parameter is specified, it sends the query to a
+ specific server. It is useful if you want to know how long the user
+ in question has been idle as only local server (i.e., the server the
+ user is directly connected to) knows that information, while
+ everything else is globally known.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN
+ RPL_WHOISUSER RPL_WHOISCHANNELS
+ RPL_WHOISCHANNELS RPL_WHOISSERVER
+ RPL_AWAY RPL_WHOISOPERATOR
+ RPL_WHOISIDLE ERR_NOSUCHNICK
+ RPL_ENDOFWHOIS
+
+
+
+
+
+
+Kalt Informational [Page 33]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ WHOIS wiz ; return available user information
+ about nick WiZ
+
+ WHOIS eff.org trillian ; ask server eff.org for user
+ information about trillian
+
+3.6.3 Whowas
+
+ Command: WHOWAS
+ Parameters: <nickname> *( "," <nickname> ) [ <count> [ <target> ] ]
+
+ Whowas asks for information about a nickname which no longer exists.
+ This may either be due to a nickname change or the user leaving IRC.
+ In response to this query, the server searches through its nickname
+ history, looking for any nicks which are lexically the same (no wild
+ card matching here). The history is searched backward, returning the
+ most recent entry first. If there are multiple entries, up to
+ <count> replies will be returned (or all of them if no <count>
+ parameter is given). If a non-positive number is passed as being
+ <count>, then a full search is done.
+
+ Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK
+ RPL_WHOWASUSER RPL_WHOISSERVER
+ RPL_ENDOFWHOWAS
+
+ Examples:
+
+ WHOWAS Wiz ; return all information in the nick
+ history about nick "WiZ";
+
+ WHOWAS Mermaid 9 ; return at most, the 9 most recent
+ entries in the nick history for
+ "Mermaid";
+
+ WHOWAS Trillian 1 *.edu ; return the most recent history for
+ "Trillian" from the first server
+ found to match "*.edu".
+
+3.7 Miscellaneous messages
+
+ Messages in this category do not fit into any of the above categories
+ but are nonetheless still a part of and REQUIRED by the protocol.
+
+
+
+Kalt Informational [Page 34]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.7.1 Kill message
+
+ Command: KILL
+ Parameters: <nickname> <comment>
+
+ The KILL command is used to cause a client-server connection to be
+ closed by the server which has the actual connection. Servers
+ generate KILL messages on nickname collisions. It MAY also be
+ available available to users who have the operator status.
+
+ Clients which have automatic reconnect algorithms effectively make
+ this command useless since the disconnection is only brief. It does
+ however break the flow of data and can be used to stop large amounts
+ of 'flooding' from abusive users or accidents. Abusive users usually
+ don't care as they will reconnect promptly and resume their abusive
+ behaviour. To prevent this command from being abused, any user may
+ elect to receive KILL messages generated for others to keep an 'eye'
+ on would be trouble spots.
+
+ In an arena where nicknames are REQUIRED to be globally unique at all
+ times, KILL messages are sent whenever 'duplicates' are detected
+ (that is an attempt to register two users with the same nickname) in
+ the hope that both of them will disappear and only 1 reappear.
+
+ When a client is removed as the result of a KILL message, the server
+ SHOULD add the nickname to the list of unavailable nicknames in an
+ attempt to avoid clients to reuse this name immediately which is
+ usually the pattern of abusive behaviour often leading to useless
+ "KILL loops". See the "IRC Server Protocol" document [IRC-SERVER]
+ for more information on this procedure.
+
+ The comment given MUST reflect the actual reason for the KILL. For
+ server-generated KILLs it usually is made up of details concerning
+ the origins of the two conflicting nicknames. For users it is left
+ up to them to provide an adequate reason to satisfy others who see
+ it. To prevent/discourage fake KILLs from being generated to hide
+ the identify of the KILLer, the comment also shows a 'kill-path'
+ which is updated by each server it passes through, each prepending
+ its name to the path.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS
+ ERR_NOSUCHNICK ERR_CANTKILLSERVER
+
+
+
+
+
+
+
+Kalt Informational [Page 35]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ NOTE:
+ It is RECOMMENDED that only Operators be allowed to kill other users
+ with KILL command. This command has been the subject of many
+ controversies over the years, and along with the above
+ recommendation, it is also widely recognized that not even operators
+ should be allowed to kill users on remote servers.
+
+3.7.2 Ping message
+
+ Command: PING
+ Parameters: <server1> [ <server2> ]
+
+ The PING command is used to test the presence of an active client or
+ server at the other end of the connection. Servers send a PING
+ message at regular intervals if no other activity detected coming
+ from a connection. If a connection fails to respond to a PING
+ message within a set amount of time, that connection is closed. A
+ PING message MAY be sent even if the connection is active.
+
+ When a PING message is received, the appropriate PONG message MUST be
+ sent as reply to <server1> (server which sent the PING message out)
+ as soon as possible. If the <server2> parameter is specified, it
+ represents the target of the ping, and the message gets forwarded
+ there.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Examples:
+
+ PING tolsun.oulu.fi ; Command to send a PING message to
+ server
+
+ PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING
+ message to server "tolsun.oulu.fi"
+
+ PING :irc.funet.fi ; Ping message sent by server
+ "irc.funet.fi"
+
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 36]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+3.7.3 Pong message
+
+ Command: PONG
+ Parameters: <server> [ <server2> ]
+
+ PONG message is a reply to ping message. If parameter <server2> is
+ given, this message MUST be forwarded to given target. The <server>
+ parameter is the name of the entity who has responded to PING message
+ and generated this message.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Example:
+
+ PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to
+ tolsun.oulu.fi
+
+3.7.4 Error
+
+ Command: ERROR
+ Parameters: <error message>
+
+ The ERROR command is for use by servers when reporting a serious or
+ fatal error to its peers. It may also be sent from one server to
+ another but MUST NOT be accepted from any normal unknown clients.
+
+ Only an ERROR message SHOULD be used for reporting errors which occur
+ with a server-to-server link. An ERROR message is sent to the server
+ at the other end (which reports it to appropriate local users and
+ logs) and to appropriate local users and logs. It is not to be
+ passed onto any other servers by a server if it is received from a
+ server.
+
+ The ERROR message is also used before terminating a client
+ connection.
+
+ When a server sends a received ERROR message to its operators, the
+ message SHOULD be encapsulated inside a NOTICE message, indicating
+ that the client was not responsible for the error.
+
+ Numerics:
+
+ None.
+
+
+
+
+
+
+Kalt Informational [Page 37]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ ERROR :Server *.fi already exists ; ERROR message to the other server
+ which caused this error.
+
+ NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists
+ ; Same ERROR message as above but
+ sent to user WiZ on the other server.
+
+4. Optional features
+
+ This section describes OPTIONAL messages. They are not required in a
+ working server implementation of the protocol described herein. In
+ the absence of the feature, an error reply message MUST be generated
+ or an unknown command error. If the message is destined for another
+ server to answer then it MUST be passed on (elementary parsing
+ REQUIRED) The allocated numerics for this are listed with the
+ messages below.
+
+ From this section, only the USERHOST and ISON messages are available
+ to services.
+
+4.1 Away
+
+ Command: AWAY
+ Parameters: [ <text> ]
+
+ With the AWAY command, clients can set an automatic reply string for
+ any PRIVMSG commands directed at them (not to a channel they are on).
+ The server sends an automatic reply to the client sending the PRIVMSG
+ command. The only replying server is the one to which the sending
+ client is connected to.
+
+ The AWAY command is used either with one parameter, to set an AWAY
+ message, or with no parameters, to remove the AWAY message.
+
+ Because of its high cost (memory and bandwidth wise), the AWAY
+ message SHOULD only be used for client-server communication. A
+ server MAY choose to silently ignore AWAY messages received from
+ other servers. To update the away status of a client across servers,
+ the user mode 'a' SHOULD be used instead. (See Section 3.1.5)
+
+ Numeric Replies:
+
+ RPL_UNAWAY RPL_NOWAWAY
+
+
+
+
+
+
+Kalt Informational [Page 38]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Example:
+
+ AWAY :Gone to lunch. Back in 5 ; Command to set away message to
+ "Gone to lunch. Back in 5".
+
+4.2 Rehash message
+
+ Command: REHASH
+ Parameters: None
+
+ The rehash command is an administrative command which can be used by
+ an operator to force the server to re-read and process its
+ configuration file.
+
+ Numeric Replies:
+
+ RPL_REHASHING ERR_NOPRIVILEGES
+
+
+ Example:
+
+ REHASH ; message from user with operator
+ status to server asking it to reread
+ its configuration file.
+
+4.3 Die message
+
+ Command: DIE
+ Parameters: None
+
+ An operator can use the DIE command to shutdown the server. This
+ message is optional since it may be viewed as a risk to allow
+ arbitrary people to connect to a server as an operator and execute
+ this command.
+
+ The DIE command MUST always be fully processed by the server to which
+ the sending client is connected and MUST NOT be passed onto other
+ connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ DIE ; no parameters required.
+
+
+
+
+
+Kalt Informational [Page 39]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+4.4 Restart message
+
+ Command: RESTART
+ Parameters: None
+
+ An operator can use the restart command to force the server to
+ restart itself. This message is optional since it may be viewed as a
+ risk to allow arbitrary people to connect to a server as an operator
+ and execute this command, causing (at least) a disruption to service.
+
+ The RESTART command MUST always be fully processed by the server to
+ which the sending client is connected and MUST NOT be passed onto
+ other connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ RESTART ; no parameters required.
+
+4.5 Summon message
+
+ Command: SUMMON
+ Parameters: <user> [ <target> [ <channel> ] ]
+
+ The SUMMON command can be used to give users who are on a host
+ running an IRC server a message asking them to please join IRC. This
+ message is only sent if the target server (a) has SUMMON enabled, (b)
+ the user is logged in and (c) the server process can write to the
+ user's tty (or similar).
+
+ If no <server> parameter is given it tries to summon <user> from the
+ server the client is connected to is assumed as the target.
+
+ If summon is not enabled in a server, it MUST return the
+ ERR_SUMMONDISABLED numeric.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_FILEERROR
+ ERR_NOLOGIN ERR_NOSUCHSERVER
+ ERR_SUMMONDISABLED RPL_SUMMONING
+
+
+
+
+
+
+
+Kalt Informational [Page 40]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ Examples:
+
+ SUMMON jto ; summon user jto on the server's
+ host
+
+ SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a
+ server named "tolsun.oulu.fi" is
+ running.
+
+4.6 Users
+
+ Command: USERS
+ Parameters: [ <target> ]
+
+ The USERS command returns a list of users logged into the server in a
+ format similar to the UNIX commands who(1), rusers(1) and finger(1).
+ If disabled, the correct numeric MUST be returned to indicate this.
+
+ Because of the security implications of such a command, it SHOULD be
+ disabled by default in server implementations. Enabling it SHOULD
+ require recompiling the server or some equivalent change rather than
+ simply toggling an option and restarting the server. The procedure
+ to enable this command SHOULD also include suitable large comments.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_FILEERROR
+ RPL_USERSSTART RPL_USERS
+ RPL_NOUSERS RPL_ENDOFUSERS
+ ERR_USERSDISABLED
+
+ Disabled Reply:
+
+ ERR_USERSDISABLED
+
+ Example:
+
+ USERS eff.org ; request a list of users logged in
+ on server eff.org
+
+4.7 Operwall message
+
+ Command: WALLOPS
+ Parameters: <Text to be sent>
+
+ The WALLOPS command is used to send a message to all currently
+ connected users who have set the 'w' user mode for themselves. (See
+ Section 3.1.5 "User modes").
+
+
+
+Kalt Informational [Page 41]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ After implementing WALLOPS as a user command it was found that it was
+ often and commonly abused as a means of sending a message to a lot of
+ people. Due to this, it is RECOMMENDED that the implementation of
+ WALLOPS allows and recognizes only servers as the originators of
+ WALLOPS.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS
+
+ Example:
+
+ :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS
+ message from csd.bu.edu announcing a
+ CONNECT message it received from
+ Joshua and acted upon.
+
+4.8 Userhost message
+
+ Command: USERHOST
+ Parameters: <nickname> *( SPACE <nickname> )
+
+ The USERHOST command takes a list of up to 5 nicknames, each
+ separated by a space character and returns a list of information
+ about each nickname that it found. The returned list has each reply
+ separated by a space.
+
+ Numeric Replies:
+
+ RPL_USERHOST ERR_NEEDMOREPARAMS
+
+ Example:
+
+ USERHOST Wiz Michael syrk ; USERHOST request for information on
+ nicks "Wiz", "Michael", and "syrk"
+
+ :ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net
+ ; Reply for user syrk
+
+4.9 Ison message
+
+ Command: ISON
+ Parameters: <nickname> *( SPACE <nickname> )
+
+ The ISON command was implemented to provide a quick and efficient
+ means to get a response about whether a given nickname was currently
+ on IRC. ISON only takes one (1) type of parameter: a space-separated
+ list of nicks. For each nickname in the list that is present, the
+
+
+
+Kalt Informational [Page 42]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ server adds that to its reply string. Thus the reply string may
+ return empty (none of the given nicks are present), an exact copy of
+ the parameter string (all of them present) or any other subset of the
+ set of nicks given in the parameter. The only limit on the number of
+ nicks that may be checked is that the combined length MUST NOT be too
+ large as to cause the server to chop it off so it fits in 512
+ characters.
+
+ ISON is only processed by the server local to the client sending the
+ command and thus not passed onto other servers for further
+ processing.
+
+ Numeric Replies:
+
+ RPL_ISON ERR_NEEDMOREPARAMS
+
+ Example:
+
+ ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk
+ ; Sample ISON request for 7 nicks.
+
+5. Replies
+
+ The following is a list of numeric replies which are generated in
+ response to the commands given above. Each numeric is given with its
+ number, name and reply string.
+
+5.1 Command responses
+
+ Numerics in the range from 001 to 099 are used for client-server
+ connections only and should never travel between servers. Replies
+ generated in the response to commands are found in the range from 200
+ to 399.
+
+ 001 RPL_WELCOME
+ "Welcome to the Internet Relay Network
+ <nick>!<user>@<host>"
+ 002 RPL_YOURHOST
+ "Your host is <servername>, running version <ver>"
+ 003 RPL_CREATED
+ "This server was created <date>"
+ 004 RPL_MYINFO
+ "<servername> <version> <available user modes>
+ <available channel modes>"
+
+ - The server sends Replies 001 to 004 to a user upon
+ successful registration.
+
+
+
+
+Kalt Informational [Page 43]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 005 RPL_BOUNCE
+ "Try server <server name>, port <port number>"
+
+ - Sent by the server to a user to suggest an alternative
+ server. This is often used when the connection is
+ refused because the server is already full.
+
+ 302 RPL_USERHOST
+ ":*1<reply> *( " " <reply> )"
+
+ - Reply format used by USERHOST to list replies to
+ the query list. The reply string is composed as
+ follows:
+
+ reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
+
+ The '*' indicates whether the client has registered
+ as an Operator. The '-' or '+' characters represent
+ whether the client has set an AWAY message or not
+ respectively.
+
+ 303 RPL_ISON
+ ":*1<nick> *( " " <nick> )"
+
+ - Reply format used by ISON to list replies to the
+ query list.
+
+ 301 RPL_AWAY
+ "<nick> :<away message>"
+ 305 RPL_UNAWAY
+ ":You are no longer marked as being away"
+ 306 RPL_NOWAWAY
+ ":You have been marked as being away"
+
+ - These replies are used with the AWAY command (if
+ allowed). RPL_AWAY is sent to any client sending a
+ PRIVMSG to a client which is away. RPL_AWAY is only
+ sent by the server to which the client is connected.
+ Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the
+ client removes and sets an AWAY message.
+
+ 311 RPL_WHOISUSER
+ "<nick> <user> <host> * :<real name>"
+ 312 RPL_WHOISSERVER
+ "<nick> <server> :<server info>"
+ 313 RPL_WHOISOPERATOR
+ "<nick> :is an IRC operator"
+
+
+
+
+Kalt Informational [Page 44]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 317 RPL_WHOISIDLE
+ "<nick> <integer> :seconds idle"
+ 318 RPL_ENDOFWHOIS
+ "<nick> :End of WHOIS list"
+ 319 RPL_WHOISCHANNELS
+ "<nick> :*( ( "@" / "+" ) <channel> " " )"
+
+ - Replies 311 - 313, 317 - 319 are all replies
+ generated in response to a WHOIS message. Given that
+ there are enough parameters present, the answering
+ server MUST either formulate a reply out of the above
+ numerics (if the query nick is found) or return an
+ error reply. The '*' in RPL_WHOISUSER is there as
+ the literal character and not as a wild card. For
+ each reply set, only RPL_WHOISCHANNELS may appear
+ more than once (for long lists of channel names).
+ The '@' and '+' characters next to the channel name
+ indicate whether a client is a channel operator or
+ has been granted permission to speak on a moderated
+ channel. The RPL_ENDOFWHOIS reply is used to mark
+ the end of processing a WHOIS message.
+
+ 314 RPL_WHOWASUSER
+ "<nick> <user> <host> * :<real name>"
+ 369 RPL_ENDOFWHOWAS
+ "<nick> :End of WHOWAS"
+
+ - When replying to a WHOWAS message, a server MUST use
+ the replies RPL_WHOWASUSER, RPL_WHOISSERVER or
+ ERR_WASNOSUCHNICK for each nickname in the presented
+ list. At the end of all reply batches, there MUST
+ be RPL_ENDOFWHOWAS (even if there was only one reply
+ and it was an error).
+
+ 321 RPL_LISTSTART
+ Obsolete. Not used.
+
+ 322 RPL_LIST
+ "<channel> <# visible> :<topic>"
+ 323 RPL_LISTEND
+ ":End of LIST"
+
+ - Replies RPL_LIST, RPL_LISTEND mark the actual replies
+ with data and end of the server's response to a LIST
+ command. If there are no channels available to return,
+ only the end reply MUST be sent.
+
+
+
+
+
+Kalt Informational [Page 45]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 325 RPL_UNIQOPIS
+ "<channel> <nickname>"
+
+ 324 RPL_CHANNELMODEIS
+ "<channel> <mode> <mode params>"
+
+ 331 RPL_NOTOPIC
+ "<channel> :No topic is set"
+ 332 RPL_TOPIC
+ "<channel> :<topic>"
+
+ - When sending a TOPIC message to determine the
+ channel topic, one of two replies is sent. If
+ the topic is set, RPL_TOPIC is sent back else
+ RPL_NOTOPIC.
+
+ 341 RPL_INVITING
+ "<channel> <nick>"
+
+ - Returned by the server to indicate that the
+ attempted INVITE message was successful and is
+ being passed onto the end client.
+
+ 342 RPL_SUMMONING
+ "<user> :Summoning user to IRC"
+
+ - Returned by a server answering a SUMMON message to
+ indicate that it is summoning that user.
+
+ 346 RPL_INVITELIST
+ "<channel> <invitemask>"
+ 347 RPL_ENDOFINVITELIST
+ "<channel> :End of channel invite list"
+
+ - When listing the 'invitations masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A
+ separate RPL_INVITELIST is sent for each active mask.
+ After the masks have been listed (or if none present) a
+ RPL_ENDOFINVITELIST MUST be sent.
+
+ 348 RPL_EXCEPTLIST
+ "<channel> <exceptionmask>"
+ 349 RPL_ENDOFEXCEPTLIST
+ "<channel> :End of channel exception list"
+
+
+
+
+
+
+Kalt Informational [Page 46]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ - When listing the 'exception masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A
+ separate RPL_EXCEPTLIST is sent for each active mask.
+ After the masks have been listed (or if none present)
+ a RPL_ENDOFEXCEPTLIST MUST be sent.
+
+ 351 RPL_VERSION
+ "<version>.<debuglevel> <server> :<comments>"
+
+ - Reply by the server showing its version details.
+ The <version> is the version of the software being
+ used (including any patchlevel revisions) and the
+ <debuglevel> is used to indicate if the server is
+ running in "debug mode".
+
+ The "comments" field may contain any comments about
+ the version or further version details.
+
+ 352 RPL_WHOREPLY
+ "<channel> <user> <host> <server> <nick>
+ ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]
+ :<hopcount> <real name>"
+
+ 315 RPL_ENDOFWHO
+ "<name> :End of WHO list"
+
+ - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used
+ to answer a WHO message. The RPL_WHOREPLY is only
+ sent if there is an appropriate match to the WHO
+ query. If there is a list of parameters supplied
+ with a WHO message, a RPL_ENDOFWHO MUST be sent
+ after processing each list item with <name> being
+ the item.
+
+ 353 RPL_NAMREPLY
+ "( "=" / "*" / "@" ) <channel>
+ :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
+ - "@" is used for secret channels, "*" for private
+ channels, and "=" for others (public channels).
+
+ 366 RPL_ENDOFNAMES
+ "<channel> :End of NAMES list"
+
+ - To reply to a NAMES message, a reply pair consisting
+ of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the
+ server back to the client. If there is no channel
+ found as in the query, then only RPL_ENDOFNAMES is
+
+
+
+Kalt Informational [Page 47]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ returned. The exception to this is when a NAMES
+ message is sent with no parameters and all visible
+ channels and contents are sent back in a series of
+ RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark
+ the end.
+
+ 364 RPL_LINKS
+ "<mask> <server> :<hopcount> <server info>"
+ 365 RPL_ENDOFLINKS
+ "<mask> :End of LINKS list"
+
+ - In replying to the LINKS message, a server MUST send
+ replies back using the RPL_LINKS numeric and mark the
+ end of the list using an RPL_ENDOFLINKS reply.
+
+ 367 RPL_BANLIST
+ "<channel> <banmask>"
+ 368 RPL_ENDOFBANLIST
+ "<channel> :End of channel ban list"
+
+ - When listing the active 'bans' for a given channel,
+ a server is required to send the list back using the
+ RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate
+ RPL_BANLIST is sent for each active banmask. After the
+ banmasks have been listed (or if none present) a
+ RPL_ENDOFBANLIST MUST be sent.
+
+ 371 RPL_INFO
+ ":<string>"
+ 374 RPL_ENDOFINFO
+ ":End of INFO list"
+
+ - A server responding to an INFO message is required to
+ send all its 'info' in a series of RPL_INFO messages
+ with a RPL_ENDOFINFO reply to indicate the end of the
+ replies.
+
+ 375 RPL_MOTDSTART
+ ":- <server> Message of the day - "
+ 372 RPL_MOTD
+ ":- <text>"
+ 376 RPL_ENDOFMOTD
+ ":End of MOTD command"
+
+ - When responding to the MOTD message and the MOTD file
+ is found, the file is displayed line by line, with
+ each line no longer than 80 characters, using
+
+
+
+
+Kalt Informational [Page 48]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ RPL_MOTD format replies. These MUST be surrounded
+ by a RPL_MOTDSTART (before the RPL_MOTDs) and an
+ RPL_ENDOFMOTD (after).
+
+ 381 RPL_YOUREOPER
+ ":You are now an IRC operator"
+
+ - RPL_YOUREOPER is sent back to a client which has
+ just successfully issued an OPER message and gained
+ operator status.
+
+ 382 RPL_REHASHING
+ "<config file> :Rehashing"
+
+ - If the REHASH option is used and an operator sends
+ a REHASH message, an RPL_REHASHING is sent back to
+ the operator.
+
+ 383 RPL_YOURESERVICE
+ "You are service <servicename>"
+
+ - Sent by the server to a service upon successful
+ registration.
+
+ 391 RPL_TIME
+ "<server> :<string showing server's local time>"
+
+ - When replying to the TIME message, a server MUST send
+ the reply using the RPL_TIME format above. The string
+ showing the time need only contain the correct day and
+ time there. There is no further requirement for the
+ time string.
+
+ 392 RPL_USERSSTART
+ ":UserID Terminal Host"
+ 393 RPL_USERS
+ ":<username> <ttyline> <hostname>"
+ 394 RPL_ENDOFUSERS
+ ":End of users"
+ 395 RPL_NOUSERS
+ ":Nobody logged in"
+
+ - If the USERS message is handled by a server, the
+ replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and
+ RPL_NOUSERS are used. RPL_USERSSTART MUST be sent
+ first, following by either a sequence of RPL_USERS
+ or a single RPL_NOUSER. Following this is
+ RPL_ENDOFUSERS.
+
+
+
+Kalt Informational [Page 49]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 200 RPL_TRACELINK
+ "Link <version & debug level> <destination>
+ <next server> V<protocol version>
+ <link uptime in seconds> <backstream sendq>
+ <upstream sendq>"
+ 201 RPL_TRACECONNECTING
+ "Try. <class> <server>"
+ 202 RPL_TRACEHANDSHAKE
+ "H.S. <class> <server>"
+ 203 RPL_TRACEUNKNOWN
+ "???? <class> [<client IP address in dot form>]"
+ 204 RPL_TRACEOPERATOR
+ "Oper <class> <nick>"
+ 205 RPL_TRACEUSER
+ "User <class> <nick>"
+ 206 RPL_TRACESERVER
+ "Serv <class> <int>S <int>C <server>
+ <nick!user|*!*>@<host|server> V<protocol version>"
+ 207 RPL_TRACESERVICE
+ "Service <class> <name> <type> <active type>"
+ 208 RPL_TRACENEWTYPE
+ "<newtype> 0 <client name>"
+ 209 RPL_TRACECLASS
+ "Class <class> <count>"
+ 210 RPL_TRACERECONNECT
+ Unused.
+ 261 RPL_TRACELOG
+ "File <logfile> <debug level>"
+ 262 RPL_TRACEEND
+ "<server name> <version & debug level> :End of TRACE"
+
+ - The RPL_TRACE* are all returned by the server in
+ response to the TRACE message. How many are
+ returned is dependent on the TRACE message and
+ whether it was sent by an operator or not. There
+ is no predefined order for which occurs first.
+ Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and
+ RPL_TRACEHANDSHAKE are all used for connections
+ which have not been fully established and are either
+ unknown, still attempting to connect or in the
+ process of completing the 'server handshake'.
+ RPL_TRACELINK is sent by any server which handles
+ a TRACE message and has to pass it on to another
+ server. The list of RPL_TRACELINKs sent in
+ response to a TRACE command traversing the IRC
+ network should reflect the actual connectivity of
+ the servers themselves along that path.
+
+
+
+
+Kalt Informational [Page 50]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ RPL_TRACENEWTYPE is to be used for any connection
+ which does not fit in the other categories but is
+ being displayed anyway.
+ RPL_TRACEEND is sent to indicate the end of the list.
+
+ 211 RPL_STATSLINKINFO
+ "<linkname> <sendq> <sent messages>
+ <sent Kbytes> <received messages>
+ <received Kbytes> <time open>"
+
+ - reports statistics on a connection. <linkname>
+ identifies the particular connection, <sendq> is
+ the amount of data that is queued and waiting to be
+ sent <sent messages> the number of messages sent,
+ and <sent Kbytes> the amount of data sent, in
+ Kbytes. <received messages> and <received Kbytes>
+ are the equivalent of <sent messages> and <sent
+ Kbytes> for received data, respectively. <time
+ open> indicates how long ago the connection was
+ opened, in seconds.
+
+ 212 RPL_STATSCOMMANDS
+ "<command> <count> <byte count> <remote count>"
+
+ - reports statistics on commands usage.
+
+ 219 RPL_ENDOFSTATS
+ "<stats letter> :End of STATS report"
+
+ 242 RPL_STATSUPTIME
+ ":Server Up %d days %d:%02d:%02d"
+
+ - reports the server uptime.
+
+ 243 RPL_STATSOLINE
+ "O <hostmask> * <name>"
+
+ - reports the allowed hosts from where user may become IRC
+ operators.
+
+ 221 RPL_UMODEIS
+ "<user mode string>"
+
+ - To answer a query about a client's own mode,
+ RPL_UMODEIS is sent back.
+
+ 234 RPL_SERVLIST
+ "<name> <server> <mask> <type> <hopcount> <info>"
+
+
+
+Kalt Informational [Page 51]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 235 RPL_SERVLISTEND
+ "<mask> <type> :End of service listing"
+
+ - When listing services in reply to a SERVLIST message,
+ a server is required to send the list back using the
+ RPL_SERVLIST and RPL_SERVLISTEND messages. A separate
+ RPL_SERVLIST is sent for each service. After the
+ services have been listed (or if none present) a
+ RPL_SERVLISTEND MUST be sent.
+
+ 251 RPL_LUSERCLIENT
+ ":There are <integer> users and <integer>
+ services on <integer> servers"
+ 252 RPL_LUSEROP
+ "<integer> :operator(s) online"
+ 253 RPL_LUSERUNKNOWN
+ "<integer> :unknown connection(s)"
+ 254 RPL_LUSERCHANNELS
+ "<integer> :channels formed"
+ 255 RPL_LUSERME
+ ":I have <integer> clients and <integer>
+ servers"
+
+ - In processing an LUSERS message, the server
+ sends a set of replies from RPL_LUSERCLIENT,
+ RPL_LUSEROP, RPL_USERUNKNOWN,
+ RPL_LUSERCHANNELS and RPL_LUSERME. When
+ replying, a server MUST send back
+ RPL_LUSERCLIENT and RPL_LUSERME. The other
+ replies are only sent back if a non-zero count
+ is found for them.
+
+ 256 RPL_ADMINME
+ "<server> :Administrative info"
+ 257 RPL_ADMINLOC1
+ ":<admin info>"
+ 258 RPL_ADMINLOC2
+ ":<admin info>"
+ 259 RPL_ADMINEMAIL
+ ":<admin info>"
+
+ - When replying to an ADMIN message, a server
+ is expected to use replies RPL_ADMINME
+ through to RPL_ADMINEMAIL and provide a text
+ message with each. For RPL_ADMINLOC1 a
+ description of what city, state and country
+ the server is in is expected, followed by
+ details of the institution (RPL_ADMINLOC2)
+
+
+
+Kalt Informational [Page 52]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ and finally the administrative contact for the
+ server (an email address here is REQUIRED)
+ in RPL_ADMINEMAIL.
+
+ 263 RPL_TRYAGAIN
+ "<command> :Please wait a while and try again."
+
+ - When a server drops a command without processing it,
+ it MUST use the reply RPL_TRYAGAIN to inform the
+ originating client.
+
+5.2 Error Replies
+
+ Error replies are found in the range from 400 to 599.
+
+ 401 ERR_NOSUCHNICK
+ "<nickname> :No such nick/channel"
+
+ - Used to indicate the nickname parameter supplied to a
+ command is currently unused.
+
+ 402 ERR_NOSUCHSERVER
+ "<server name> :No such server"
+
+ - Used to indicate the server name given currently
+ does not exist.
+
+ 403 ERR_NOSUCHCHANNEL
+ "<channel name> :No such channel"
+
+ - Used to indicate the given channel name is invalid.
+
+ 404 ERR_CANNOTSENDTOCHAN
+ "<channel name> :Cannot send to channel"
+
+ - Sent to a user who is either (a) not on a channel
+ which is mode +n or (b) not a chanop (or mode +v) on
+ a channel which has mode +m set or where the user is
+ banned and is trying to send a PRIVMSG message to
+ that channel.
+
+ 405 ERR_TOOMANYCHANNELS
+ "<channel name> :You have joined too many channels"
+
+ - Sent to a user when they have joined the maximum
+ number of allowed channels and they try to join
+ another channel.
+
+
+
+
+Kalt Informational [Page 53]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 406 ERR_WASNOSUCHNICK
+ "<nickname> :There was no such nickname"
+
+ - Returned by WHOWAS to indicate there is no history
+ information for that nickname.
+
+ 407 ERR_TOOMANYTARGETS
+ "<target> :<error code> recipients. <abort message>"
+
+ - Returned to a client which is attempting to send a
+ PRIVMSG/NOTICE using the user@host destination format
+ and for a user@host which has several occurrences.
+
+ - Returned to a client which trying to send a
+ PRIVMSG/NOTICE to too many recipients.
+
+ - Returned to a client which is attempting to JOIN a safe
+ channel using the shortname when there are more than one
+ such channel.
+
+ 408 ERR_NOSUCHSERVICE
+ "<service name> :No such service"
+
+ - Returned to a client which is attempting to send a SQUERY
+ to a service which does not exist.
+
+ 409 ERR_NOORIGIN
+ ":No origin specified"
+
+ - PING or PONG message missing the originator parameter.
+
+ 411 ERR_NORECIPIENT
+ ":No recipient given (<command>)"
+ 412 ERR_NOTEXTTOSEND
+ ":No text to send"
+ 413 ERR_NOTOPLEVEL
+ "<mask> :No toplevel domain specified"
+ 414 ERR_WILDTOPLEVEL
+ "<mask> :Wildcard in toplevel domain"
+ 415 ERR_BADMASK
+ "<mask> :Bad Server/host mask"
+
+ - 412 - 415 are returned by PRIVMSG to indicate that
+ the message wasn't delivered for some reason.
+ ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that
+ are returned when an invalid use of
+ "PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted.
+
+
+
+
+Kalt Informational [Page 54]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 421 ERR_UNKNOWNCOMMAND
+ "<command> :Unknown command"
+
+ - Returned to a registered client to indicate that the
+ command sent is unknown by the server.
+
+ 422 ERR_NOMOTD
+ ":MOTD File is missing"
+
+ - Server's MOTD file could not be opened by the server.
+
+ 423 ERR_NOADMININFO
+ "<server> :No administrative info available"
+
+ - Returned by a server in response to an ADMIN message
+ when there is an error in finding the appropriate
+ information.
+
+ 424 ERR_FILEERROR
+ ":File error doing <file op> on <file>"
+
+ - Generic error message used to report a failed file
+ operation during the processing of a message.
+
+ 431 ERR_NONICKNAMEGIVEN
+ ":No nickname given"
+
+ - Returned when a nickname parameter expected for a
+ command and isn't found.
+
+ 432 ERR_ERRONEUSNICKNAME
+ "<nick> :Erroneous nickname"
+
+ - Returned after receiving a NICK message which contains
+ characters which do not fall in the defined set. See
+ section 2.3.1 for details on valid nicknames.
+
+ 433 ERR_NICKNAMEINUSE
+ "<nick> :Nickname is already in use"
+
+ - Returned when a NICK message is processed that results
+ in an attempt to change to a currently existing
+ nickname.
+
+
+
+
+
+
+
+
+Kalt Informational [Page 55]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 436 ERR_NICKCOLLISION
+ "<nick> :Nickname collision KILL from <user>@<host>"
+
+ - Returned by a server to a client when it detects a
+ nickname collision (registered of a NICK that
+ already exists by another server).
+
+ 437 ERR_UNAVAILRESOURCE
+ "<nick/channel> :Nick/channel is temporarily unavailable"
+
+ - Returned by a server to a user trying to join a channel
+ currently blocked by the channel delay mechanism.
+
+ - Returned by a server to a user trying to change nickname
+ when the desired nickname is blocked by the nick delay
+ mechanism.
+
+ 441 ERR_USERNOTINCHANNEL
+ "<nick> <channel> :They aren't on that channel"
+
+ - Returned by the server to indicate that the target
+ user of the command is not on the given channel.
+
+ 442 ERR_NOTONCHANNEL
+ "<channel> :You're not on that channel"
+
+ - Returned by the server whenever a client tries to
+ perform a channel affecting command for which the
+ client isn't a member.
+
+ 443 ERR_USERONCHANNEL
+ "<user> <channel> :is already on channel"
+
+ - Returned when a client tries to invite a user to a
+ channel they are already on.
+
+ 444 ERR_NOLOGIN
+ "<user> :User not logged in"
+
+ - Returned by the summon after a SUMMON command for a
+ user was unable to be performed since they were not
+ logged in.
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 56]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 445 ERR_SUMMONDISABLED
+ ":SUMMON has been disabled"
+
+ - Returned as a response to the SUMMON command. MUST be
+ returned by any server which doesn't implement it.
+
+ 446 ERR_USERSDISABLED
+ ":USERS has been disabled"
+
+ - Returned as a response to the USERS command. MUST be
+ returned by any server which does not implement it.
+
+ 451 ERR_NOTREGISTERED
+ ":You have not registered"
+
+ - Returned by the server to indicate that the client
+ MUST be registered before the server will allow it
+ to be parsed in detail.
+
+ 461 ERR_NEEDMOREPARAMS
+ "<command> :Not enough parameters"
+
+ - Returned by the server by numerous commands to
+ indicate to the client that it didn't supply enough
+ parameters.
+
+ 462 ERR_ALREADYREGISTRED
+ ":Unauthorized command (already registered)"
+
+ - Returned by the server to any link which tries to
+ change part of the registered details (such as
+ password or user details from second USER message).
+
+ 463 ERR_NOPERMFORHOST
+ ":Your host isn't among the privileged"
+
+ - Returned to a client which attempts to register with
+ a server which does not been setup to allow
+ connections from the host the attempted connection
+ is tried.
+
+ 464 ERR_PASSWDMISMATCH
+ ":Password incorrect"
+
+ - Returned to indicate a failed attempt at registering
+ a connection for which a password was required and
+ was either not given or incorrect.
+
+
+
+
+Kalt Informational [Page 57]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 465 ERR_YOUREBANNEDCREEP
+ ":You are banned from this server"
+
+ - Returned after an attempt to connect and register
+ yourself with a server which has been setup to
+ explicitly deny connections to you.
+
+ 466 ERR_YOUWILLBEBANNED
+
+ - Sent by a server to a user to inform that access to the
+ server will soon be denied.
+
+ 467 ERR_KEYSET
+ "<channel> :Channel key already set"
+ 471 ERR_CHANNELISFULL
+ "<channel> :Cannot join channel (+l)"
+ 472 ERR_UNKNOWNMODE
+ "<char> :is unknown mode char to me for <channel>"
+ 473 ERR_INVITEONLYCHAN
+ "<channel> :Cannot join channel (+i)"
+ 474 ERR_BANNEDFROMCHAN
+ "<channel> :Cannot join channel (+b)"
+ 475 ERR_BADCHANNELKEY
+ "<channel> :Cannot join channel (+k)"
+ 476 ERR_BADCHANMASK
+ "<channel> :Bad Channel Mask"
+ 477 ERR_NOCHANMODES
+ "<channel> :Channel doesn't support modes"
+ 478 ERR_BANLISTFULL
+ "<channel> <char> :Channel list is full"
+
+ 481 ERR_NOPRIVILEGES
+ ":Permission Denied- You're not an IRC operator"
+
+ - Any command requiring operator privileges to operate
+ MUST return this error to indicate the attempt was
+ unsuccessful.
+
+ 482 ERR_CHANOPRIVSNEEDED
+ "<channel> :You're not channel operator"
+
+ - Any command requiring 'chanop' privileges (such as
+ MODE messages) MUST return this error if the client
+ making the attempt is not a chanop on the specified
+ channel.
+
+
+
+
+
+
+Kalt Informational [Page 58]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 483 ERR_CANTKILLSERVER
+ ":You can't kill a server!"
+
+ - Any attempts to use the KILL command on a server
+ are to be refused and this error returned directly
+ to the client.
+
+ 484 ERR_RESTRICTED
+ ":Your connection is restricted!"
+
+ - Sent by the server to a user upon connection to indicate
+ the restricted nature of the connection (user mode "+r").
+
+ 485 ERR_UNIQOPPRIVSNEEDED
+ ":You're not the original channel operator"
+
+ - Any MODE requiring "channel creator" privileges MUST
+ return this error if the client making the attempt is not
+ a chanop on the specified channel.
+
+ 491 ERR_NOOPERHOST
+ ":No O-lines for your host"
+
+ - If a client sends an OPER message and the server has
+ not been configured to allow connections from the
+ client's host as an operator, this error MUST be
+ returned.
+
+ 501 ERR_UMODEUNKNOWNFLAG
+ ":Unknown MODE flag"
+
+ - Returned by the server to indicate that a MODE
+ message was sent with a nickname parameter and that
+ the a mode flag sent was not recognized.
+
+ 502 ERR_USERSDONTMATCH
+ ":Cannot change mode for other users"
+
+ - Error sent to any user trying to view or change the
+ user mode for a user other than themselves.
+
+5.3 Reserved numerics
+
+ These numerics are not described above since they fall into one of
+ the following categories:
+
+ 1. no longer in use;
+
+
+
+
+Kalt Informational [Page 59]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+ 2. reserved for future planned use;
+
+ 3. in current use but are part of a non-generic 'feature' of
+ the current IRC server.
+
+ 231 RPL_SERVICEINFO 232 RPL_ENDOFSERVICES
+ 233 RPL_SERVICE
+ 300 RPL_NONE 316 RPL_WHOISCHANOP
+ 361 RPL_KILLDONE 362 RPL_CLOSING
+ 363 RPL_CLOSEEND 373 RPL_INFOSTART
+ 384 RPL_MYPORTIS
+
+ 213 RPL_STATSCLINE 214 RPL_STATSNLINE
+ 215 RPL_STATSILINE 216 RPL_STATSKLINE
+ 217 RPL_STATSQLINE 218 RPL_STATSYLINE
+ 240 RPL_STATSVLINE 241 RPL_STATSLLINE
+ 244 RPL_STATSHLINE 244 RPL_STATSSLINE
+ 246 RPL_STATSPING 247 RPL_STATSBLINE
+ 250 RPL_STATSDLINE
+
+ 492 ERR_NOSERVICEHOST
+
+6. Current implementations
+
+ The IRC software, version 2.10 is the only complete implementation of
+ the IRC protocol (client and server). Because of the small amount of
+ changes in the client protocol since the publication of RFC 1459
+ [IRC], implementations that follow it are likely to be compliant with
+ this protocol or to require a small amount of changes to reach
+ compliance.
+
+7. Current problems
+
+ There are a number of recognized problems with the IRC Client
+ Protocol, and more generally with the IRC Server Protocol. In order
+ to preserve backward compatibility with old clients, this protocol
+ has almost not evolved since the publication of RFC 1459 [IRC].
+
+7.1 Nicknames
+
+ The idea of the nickname on IRC is very convenient for users to use
+ when talking to each other outside of a channel, but there is only a
+ finite nickname space and being what they are, it's not uncommon for
+ several people to want to use the same nick. If a nickname is chosen
+ by two people using this protocol, either one will not succeed or
+ both will removed by use of a server KILL (See Section 3.7.1).
+
+
+
+
+
+Kalt Informational [Page 60]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+7.2 Limitation of wildcards
+
+ There is no way to escape the escape character "\" (%x5C). While
+ this isn't usually a problem, it makes it impossible to form a mask
+ with a backslash character ("\") preceding a wildcard.
+
+7.3 Security considerations
+
+ Security issues related to this protocol are discussed in the "IRC
+ Server Protocol" [IRC-SERVER] as they are mostly an issue for the
+ server side of the connection.
+
+8. Current support and availability
+
+ Mailing lists for IRC related discussion:
+ General discussion: ircd-users@irc.org
+ Protocol development: ircd-dev@irc.org
+
+ Software implementations:
+ ftp://ftp.irc.org/irc/server
+ ftp://ftp.funet.fi/pub/unix/irc
+ ftp://ftp.irc.org/irc/clients
+
+ Newsgroup: alt.irc
+
+9. Acknowledgements
+
+ Parts of this document were copied from the RFC 1459 [IRC] which
+ first formally documented the IRC Protocol. It has also benefited
+ from many rounds of review and comments. In particular, the
+ following people have made significant contributions to this
+ document:
+
+ Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa
+ Ruokonen, Magnus Tjernstrom, Stefan Zehl.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 61]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+10. References
+
+ [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [HNAME] Braden, R., "Requirements for Internet Hosts --
+ Application and Support", STD 3, RFC 1123, October 1989.
+
+ [IRC] Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
+ RFC 1459, May 1993.
+
+ [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
+ April 2000.
+
+ [IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC
+ 2811, April 2000.
+
+ [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
+ 2813, April 2000.
+
+11. Author's Address
+
+ Christophe Kalt
+ 99 Teaneck Rd, Apt #117
+ Ridgefield Park, NJ 07660
+ USA
+
+ EMail: kalt@stealth.net
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 62]
+
+RFC 2812 Internet Relay Chat: Client Protocol April 2000
+
+
+12. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kalt Informational [Page 63]
+
|