| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 
|---|
| 2 | <html xmlns="http://www.w3.org/1999/xhtml"> | 
|---|
| 3 | <head> | 
|---|
| 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | 
|---|
| 5 | <title>mixpp: bdm::mexlog Class Reference</title> | 
|---|
| 6 | <link href="tabs.css" rel="stylesheet" type="text/css"/> | 
|---|
| 7 | <link href="doxygen.css" rel="stylesheet" type="text/css"/> | 
|---|
| 8 | </head> | 
|---|
| 9 | <body> | 
|---|
| 10 | <!-- Generated by Doxygen 1.6.1 --> | 
|---|
| 11 | <script type="text/javascript"> | 
|---|
| 12 | <!-- | 
|---|
| 13 | function changeDisplayState (e){ | 
|---|
| 14 |   var num=this.id.replace(/[^[0-9]/g,''); | 
|---|
| 15 |   var button=this.firstChild; | 
|---|
| 16 |   var sectionDiv=document.getElementById('dynsection'+num); | 
|---|
| 17 |   if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){ | 
|---|
| 18 |     sectionDiv.style.display='block'; | 
|---|
| 19 |     button.src='open.gif'; | 
|---|
| 20 |   }else{ | 
|---|
| 21 |     sectionDiv.style.display='none'; | 
|---|
| 22 |     button.src='closed.gif'; | 
|---|
| 23 |   } | 
|---|
| 24 | } | 
|---|
| 25 | function initDynSections(){ | 
|---|
| 26 |   var divs=document.getElementsByTagName('div'); | 
|---|
| 27 |   var sectionCounter=1; | 
|---|
| 28 |   for(var i=0;i<divs.length-1;i++){ | 
|---|
| 29 |     if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){ | 
|---|
| 30 |       var header=divs[i]; | 
|---|
| 31 |       var section=divs[i+1]; | 
|---|
| 32 |       var button=header.firstChild; | 
|---|
| 33 |       if (button!='IMG'){ | 
|---|
| 34 |         divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild); | 
|---|
| 35 |         button=document.createElement('img'); | 
|---|
| 36 |         divs[i].insertBefore(button,divs[i].firstChild); | 
|---|
| 37 |       } | 
|---|
| 38 |       header.style.cursor='pointer'; | 
|---|
| 39 |       header.onclick=changeDisplayState; | 
|---|
| 40 |       header.id='dynheader'+sectionCounter; | 
|---|
| 41 |       button.src='closed.gif'; | 
|---|
| 42 |       section.id='dynsection'+sectionCounter; | 
|---|
| 43 |       section.style.display='none'; | 
|---|
| 44 |       section.style.marginLeft='14px'; | 
|---|
| 45 |       sectionCounter++; | 
|---|
| 46 |     } | 
|---|
| 47 |   } | 
|---|
| 48 | } | 
|---|
| 49 | window.onload = initDynSections; | 
|---|
| 50 | --> | 
|---|
| 51 | </script> | 
|---|
| 52 | <div class="navigation" id="top"> | 
|---|
| 53 |   <div class="tabs"> | 
|---|
| 54 |     <ul> | 
|---|
| 55 |       <li><a href="main.html"><span>Main Page</span></a></li> | 
|---|
| 56 |       <li><a href="pages.html"><span>Related Pages</span></a></li> | 
|---|
| 57 |       <li class="current"><a href="annotated.html"><span>Classes</span></a></li> | 
|---|
| 58 |       <li><a href="files.html"><span>Files</span></a></li> | 
|---|
| 59 |     </ul> | 
|---|
| 60 |   </div> | 
|---|
| 61 |   <div class="tabs"> | 
|---|
| 62 |     <ul> | 
|---|
| 63 |       <li><a href="annotated.html"><span>Class List</span></a></li> | 
|---|
| 64 |       <li><a href="classes.html"><span>Class Index</span></a></li> | 
|---|
| 65 |       <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> | 
|---|
| 66 |       <li><a href="functions.html"><span>Class Members</span></a></li> | 
|---|
| 67 |     </ul> | 
|---|
| 68 |   </div> | 
|---|
| 69 |   <div class="navpath"><b>bdm</b>::<a class="el" href="classbdm_1_1mexlog.html">mexlog</a> | 
|---|
| 70 |   </div> | 
|---|
| 71 | </div> | 
|---|
| 72 | <div class="contents"> | 
|---|
| 73 | <h1>bdm::mexlog Class Reference</h1><!-- doxytag: class="bdm::mexlog" --><!-- doxytag: inherits="bdm::memlog" --> | 
|---|
| 74 | <p>Logger storing results into an mxArray.   | 
|---|
| 75 | <a href="#_details">More...</a></p> | 
|---|
| 76 |  | 
|---|
| 77 | <p><code>#include <<a class="el" href="mex__logger_8h_source.html">mex_logger.h</a>></code></p> | 
|---|
| 78 |  | 
|---|
| 79 | <p><a href="classbdm_1_1mexlog-members.html">List of all members.</a></p> | 
|---|
| 80 | <table border="0" cellpadding="0" cellspacing="0"> | 
|---|
| 81 | <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> | 
|---|
| 82 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac458d92bb26518c908521a8c9460a2c1"></a><!-- doxytag: member="bdm::mexlog::mexlog" ref="ac458d92bb26518c908521a8c9460a2c1" args="()" --> | 
|---|
| 83 |  </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1mexlog.html#ac458d92bb26518c908521a8c9460a2c1">mexlog</a> ()</td></tr> | 
|---|
| 84 | <tr><td class="mdescLeft"> </td><td class="mdescRight">constructor <br/></td></tr> | 
|---|
| 85 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a178cb899ae5158c0be059cd0196a83d3"></a><!-- doxytag: member="bdm::mexlog::toCell" ref="a178cb899ae5158c0be059cd0196a83d3" args="()" --> | 
|---|
| 86 | mxArray * </td><td class="memItemRight" valign="bottom"><b>toCell</b> ()</td></tr> | 
|---|
| 87 | <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1mexlog.html#a39c44b30f201091ab3d287fe5741113e">from_setting</a> (const Setting &<a class="el" href="classbdm_1_1root.html">root</a>)</td></tr> | 
|---|
| 88 | <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classbdm_1_1UI.html" title="UI is an abstract class which collects all the auxiliary functions useful to prepare...">UI</a> for <a class="el" href="classbdm_1_1memlog.html">memlog</a>.  <a href="#a39c44b30f201091ab3d287fe5741113e"></a><br/></td></tr> | 
|---|
| 89 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3a8b007f3540523ff3f9910d9089391"></a><!-- doxytag: member="bdm::mexlog::init" ref="ad3a8b007f3540523ff3f9910d9089391" args="()" --> | 
|---|
| 90 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#ad3a8b007f3540523ff3f9910d9089391">init</a> ()</td></tr> | 
|---|
| 91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize storage. <br/></td></tr> | 
|---|
| 92 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69964f0472e53098528ee41507bdfc77"></a><!-- doxytag: member="bdm::mexlog::step" ref="a69964f0472e53098528ee41507bdfc77" args="()" --> | 
|---|
| 93 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a69964f0472e53098528ee41507bdfc77">step</a> ()</td></tr> | 
|---|
| 94 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Shifts storage position for another time step. <br/></td></tr> | 
|---|
| 95 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a364e58c5d7058776c2a9cfa7d58dad6d"></a><!-- doxytag: member="bdm::mexlog::logit" ref="a364e58c5d7058776c2a9cfa7d58dad6d" args="(int id, const vec &v)" --> | 
|---|
| 96 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a364e58c5d7058776c2a9cfa7d58dad6d">logit</a> (int id, const vec &v)</td></tr> | 
|---|
| 97 | <tr><td class="mdescLeft"> </td><td class="mdescRight">log this vector <br/></td></tr> | 
|---|
| 98 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b57dbd3dff49a98c6ce8fccccb170af"></a><!-- doxytag: member="bdm::mexlog::logit" ref="a2b57dbd3dff49a98c6ce8fccccb170af" args="(int id, const double &d)" --> | 
|---|
| 99 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a2b57dbd3dff49a98c6ce8fccccb170af">logit</a> (int id, const double &d)</td></tr> | 
|---|
| 100 | <tr><td class="mdescLeft"> </td><td class="mdescRight">log this double <br/></td></tr> | 
|---|
| 101 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a74b7a3d889607391594279112aef1f"></a><!-- doxytag: member="bdm::mexlog::itsave" ref="a6a74b7a3d889607391594279112aef1f" args="(const char *fname)" --> | 
|---|
| 102 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a6a74b7a3d889607391594279112aef1f">itsave</a> (const char *fname)</td></tr> | 
|---|
| 103 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Save values into an itfile named after <code>fname</code>. <br/></td></tr> | 
|---|
| 104 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39e32f671414c71304e316976ccc37f3"></a><!-- doxytag: member="bdm::mexlog::finalize" ref="a39e32f671414c71304e316976ccc37f3" args="()" --> | 
|---|
| 105 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a39e32f671414c71304e316976ccc37f3">finalize</a> ()</td></tr> | 
|---|
| 106 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Finalize storing information. <br/></td></tr> | 
|---|
| 107 | <tr><td class="memItemLeft" align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1logger.html#a47aa3b098a81d02a8ffaea2c9fa09ac7">add</a> (const <a class="el" href="classbdm_1_1RV.html">RV</a> &rv, string prefix="")</td></tr> | 
|---|
| 108 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf0e6941ba5919cae1bc530e2181b109"></a><!-- doxytag: member="bdm::mexlog::to_string" ref="aaf0e6941ba5919cae1bc530e2181b109" args="()" --> | 
|---|
| 109 | virtual string </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1root.html#aaf0e6941ba5919cae1bc530e2181b109">to_string</a> ()</td></tr> | 
|---|
| 110 | <tr><td class="mdescLeft"> </td><td class="mdescRight">This method returns a basic info about the current instance. <br/></td></tr> | 
|---|
| 111 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67d954d255ede776eade7334d4895790"></a><!-- doxytag: member="bdm::mexlog::to_setting" ref="a67d954d255ede776eade7334d4895790" args="(Setting &set) const " --> | 
|---|
| 112 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1root.html#a67d954d255ede776eade7334d4895790">to_setting</a> (Setting &set) const </td></tr> | 
|---|
| 113 | <tr><td class="mdescLeft"> </td><td class="mdescRight">This method save all the instance properties into the Setting structure. <br/></td></tr> | 
|---|
| 114 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c314bd6d6dacb8ba78ea5eb88fd9516"></a><!-- doxytag: member="bdm::mexlog::validate" ref="a1c314bd6d6dacb8ba78ea5eb88fd9516" args="()" --> | 
|---|
| 115 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1root.html#a1c314bd6d6dacb8ba78ea5eb88fd9516">validate</a> ()</td></tr> | 
|---|
| 116 | <tr><td class="mdescLeft"> </td><td class="mdescRight">This method TODO. <br/></td></tr> | 
|---|
| 117 | <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr> | 
|---|
| 118 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa690ebd91430b5973855c9b4c9cf1b1d"></a><!-- doxytag: member="bdm::mexlog::maxlen" ref="aa690ebd91430b5973855c9b4c9cf1b1d" args="" --> | 
|---|
| 119 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#aa690ebd91430b5973855c9b4c9cf1b1d">maxlen</a></td></tr> | 
|---|
| 120 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum length of vectors stored in memory. <br/></td></tr> | 
|---|
| 121 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70cec1d3549a82796ad7b6f0d07a4570"></a><!-- doxytag: member="bdm::mexlog::ind" ref="a70cec1d3549a82796ad7b6f0d07a4570" args="" --> | 
|---|
| 122 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a70cec1d3549a82796ad7b6f0d07a4570">ind</a></td></tr> | 
|---|
| 123 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Currect record to be written. <br/></td></tr> | 
|---|
| 124 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fed143162f2de6ef1c1b6557964f24e"></a><!-- doxytag: member="bdm::mexlog::vectors" ref="a1fed143162f2de6ef1c1b6557964f24e" args="" --> | 
|---|
| 125 | Array< mat > </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a1fed143162f2de6ef1c1b6557964f24e">vectors</a></td></tr> | 
|---|
| 126 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Storage. <br/></td></tr> | 
|---|
| 127 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11fdf8ffca0f509ff637b0c3ac161c1f"></a><!-- doxytag: member="bdm::mexlog::itfilename" ref="a11fdf8ffca0f509ff637b0c3ac161c1f" args="" --> | 
|---|
| 128 | string </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1memlog.html#a11fdf8ffca0f509ff637b0c3ac161c1f">itfilename</a></td></tr> | 
|---|
| 129 | <tr><td class="mdescLeft"> </td><td class="mdescRight">name of it file to save results <br/></td></tr> | 
|---|
| 130 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac54566a4554089443a20b2a49ed1a61f"></a><!-- doxytag: member="bdm::mexlog::entries" ref="ac54566a4554089443a20b2a49ed1a61f" args="" --> | 
|---|
| 131 | Array< <a class="el" href="classbdm_1_1RV.html">RV</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1logger.html#ac54566a4554089443a20b2a49ed1a61f">entries</a></td></tr> | 
|---|
| 132 | <tr><td class="mdescLeft"> </td><td class="mdescRight">RVs of all logged variables. <br/></td></tr> | 
|---|
| 133 | <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68ca1f05cf3d414ba0f39211977b8d02"></a><!-- doxytag: member="bdm::mexlog::names" ref="a68ca1f05cf3d414ba0f39211977b8d02" args="" --> | 
|---|
| 134 | Array< string > </td><td class="memItemRight" valign="bottom"><a class="el" href="classbdm_1_1logger.html#a68ca1f05cf3d414ba0f39211977b8d02">names</a></td></tr> | 
|---|
| 135 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Names of logged quantities, e.g. names of algorithm variants. <br/></td></tr> | 
|---|
| 136 | </table> | 
|---|
| 137 | <hr/><a name="_details"></a><h2>Detailed Description</h2> | 
|---|
| 138 | <p>Logger storing results into an mxArray. </p> | 
|---|
| 139 | <hr/><h2>Member Function Documentation</h2> | 
|---|
| 140 | <a class="anchor" id="a47aa3b098a81d02a8ffaea2c9fa09ac7"></a><!-- doxytag: member="bdm::mexlog::add" ref="a47aa3b098a81d02a8ffaea2c9fa09ac7" args="(const RV &rv, string prefix="")" --> | 
|---|
| 141 | <div class="memitem"> | 
|---|
| 142 | <div class="memproto"> | 
|---|
| 143 |       <table class="memname"> | 
|---|
| 144 |         <tr> | 
|---|
| 145 |           <td class="memname">virtual int bdm::logger::add </td> | 
|---|
| 146 |           <td>(</td> | 
|---|
| 147 |           <td class="paramtype">const <a class="el" href="classbdm_1_1RV.html">RV</a> & </td> | 
|---|
| 148 |           <td class="paramname"> <em>rv</em>, </td> | 
|---|
| 149 |         </tr> | 
|---|
| 150 |         <tr> | 
|---|
| 151 |           <td class="paramkey"></td> | 
|---|
| 152 |           <td></td> | 
|---|
| 153 |           <td class="paramtype">string </td> | 
|---|
| 154 |           <td class="paramname"> <em>prefix</em> = <code>""</code></td><td> </td> | 
|---|
| 155 |         </tr> | 
|---|
| 156 |         <tr> | 
|---|
| 157 |           <td></td> | 
|---|
| 158 |           <td>)</td> | 
|---|
| 159 |           <td></td><td></td><td><code> [inline, virtual, inherited]</code></td> | 
|---|
| 160 |         </tr> | 
|---|
| 161 |       </table> | 
|---|
| 162 | </div> | 
|---|
| 163 | <div class="memdoc"> | 
|---|
| 164 | <p>returns an identifier which will be later needed for calling the <code><a class="el" href="classbdm_1_1logger.html#ae30f695619931b3c372ab280e452d309" title="log this vector">logit()</a></code> function For empty <a class="el" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> it returns -1, this entry will be ignored by <code><a class="el" href="classbdm_1_1logger.html#ae30f695619931b3c372ab280e452d309" title="log this vector">logit()</a></code>. </p> | 
|---|
| 165 |  | 
|---|
| 166 | <p>References <a class="el" href="bdmbase_8h_source.html#l00670">bdm::logger::entries</a>, and <a class="el" href="bdmbase_8h_source.html#l00672">bdm::logger::names</a>.</p> | 
|---|
| 167 |  | 
|---|
| 168 | <p>Referenced by <a class="el" href="datasources_8h_source.html#l00310">bdm::stateDS::log_add()</a>, <a class="el" href="datasources_8h_source.html#l00203">bdm::ArxDS::log_add()</a>, <a class="el" href="bdmbase_8h_source.html#l00966">bdm::BM::log_add()</a>, and <a class="el" href="bdmbase_8h_source.html#l00790">bdm::DS::log_add()</a>.</p> | 
|---|
| 169 |  | 
|---|
| 170 | </div> | 
|---|
| 171 | </div> | 
|---|
| 172 | <a class="anchor" id="a39c44b30f201091ab3d287fe5741113e"></a><!-- doxytag: member="bdm::mexlog::from_setting" ref="a39c44b30f201091ab3d287fe5741113e" args="(const Setting &root)" --> | 
|---|
| 173 | <div class="memitem"> | 
|---|
| 174 | <div class="memproto"> | 
|---|
| 175 |       <table class="memname"> | 
|---|
| 176 |         <tr> | 
|---|
| 177 |           <td class="memname">void bdm::mexlog::from_setting </td> | 
|---|
| 178 |           <td>(</td> | 
|---|
| 179 |           <td class="paramtype">const Setting & </td> | 
|---|
| 180 |           <td class="paramname"> <em>set</em></td> | 
|---|
| 181 |           <td> ) </td> | 
|---|
| 182 |           <td><code> [inline, virtual]</code></td> | 
|---|
| 183 |         </tr> | 
|---|
| 184 |       </table> | 
|---|
| 185 | </div> | 
|---|
| 186 | <div class="memdoc"> | 
|---|
| 187 |  | 
|---|
| 188 | <p><a class="el" href="classbdm_1_1UI.html" title="UI is an abstract class which collects all the auxiliary functions useful to prepare...">UI</a> for <a class="el" href="classbdm_1_1memlog.html">memlog</a>. </p> | 
|---|
| 189 | <p>TODO dat tam kam patri, a to celej blok</p> | 
|---|
| 190 | <div class="fragment"><pre class="fragment">        <a class="code" href="classbdm_1_1logger.html#af9c2fe7db5ddbda0098a4a5bd2c29fbf" title="Default constructor.">logger</a> = { | 
|---|
| 191 |                 <span class="keyword">class </span>= "<a class="code" href="classbdm_1_1memlog.html#a943e83e297ec3eb878ab12c89a6659f5" title="Default constructor.">memlog</a>"; | 
|---|
| 192 |                 filename = <span class="stringliteral">"file_name.it"</span>; <span class="comment">// resulting filename with results in it format</span> | 
|---|
| 193 |                 <a class="code" href="classbdm_1_1memlog.html#aa690ebd91430b5973855c9b4c9cf1b1d" title="Maximum length of vectors stored in memory.">maxlen</a> = 100;          <span class="comment">// size of memory buffer</span> | 
|---|
| 194 |         } | 
|---|
| 195 | </pre></div>  | 
|---|
| 196 | <p>Reimplemented from <a class="el" href="classbdm_1_1memlog.html#a7352b474bc54c35ab7c9297c5b958629">bdm::memlog</a>.</p> | 
|---|
| 197 |  | 
|---|
| 198 | <p>References <a class="el" href="loggers_8h_source.html#l00029">bdm::memlog::maxlen</a>.</p> | 
|---|
| 199 |  | 
|---|
| 200 | </div> | 
|---|
| 201 | </div> | 
|---|
| 202 | <hr/>The documentation for this class was generated from the following file:<ul> | 
|---|
| 203 | <li><a class="el" href="mex__logger_8h_source.html">mex_logger.h</a></li> | 
|---|
| 204 | </ul> | 
|---|
| 205 | </div> | 
|---|
| 206 | <hr size="1"/><address style="text-align: right;"><small>Generated on Sun Aug 30 22:10:50 2009 for mixpp by  | 
|---|
| 207 | <a href="http://www.doxygen.org/index.html"> | 
|---|
| 208 | <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address> | 
|---|
| 209 | </body> | 
|---|
| 210 | </html> | 
|---|