etk/etk__Buffer.html

435 lines
24 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>etk Library</title>
<link rel="stylesheet" href="base.css">
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container">
<h1>etk Library</h1>
<li>etk</li>
<ul>
<li><a href="etk__Archive.html">Archive</a></li>
<li><a href="etk__Archive__Content.html">Archive::Content</a></li>
<li><a href="etk__BaseNoise.html">BaseNoise</a></li>
<li><a href="etk__Buffer.html">Buffer</a></li>
<li><a href="etk__CCout.html">CCout</a></li>
<li><a href="etk__CEndl.html">CEndl</a></li>
<li><a href="etk__CStart.html">CStart</a></li>
<li><a href="etk__Color.html">Color</a></li>
<li><a href="etk__FSNode.html">FSNode</a></li>
<li><a href="etk__FSNodeRight.html">FSNodeRight</a></li>
<li><a href="etk__Hash.html">Hash</a></li>
<li><a href="etk__HashData.html">HashData</a></li>
<li><a href="etk__Matrix4.html">Matrix4</a></li>
<li><a href="etk__MessageFifo.html">MessageFifo</a></li>
<li><a href="etk__Mutex.html">Mutex</a></li>
<li><a href="etk__Noise.html">Noise</a></li>
<li><a href="etk__Plane.html">Plane</a></li>
<li><a href="etk__RegExp.html">RegExp</a></li>
<li><a href="etk__RegExpNode.html">RegExpNode</a></li>
<li><a href="etk__RegExpNodeBracket.html">RegExpNodeBracket</a></li>
<li><a href="etk__RegExpNodeDigit.html">RegExpNodeDigit</a></li>
<li><a href="etk__RegExpNodeDigitNot.html">RegExpNodeDigitNot</a></li>
<li><a href="etk__RegExpNodeDot.html">RegExpNodeDot</a></li>
<li><a href="etk__RegExpNodeEOL.html">RegExpNodeEOL</a></li>
<li><a href="etk__RegExpNodeLetter.html">RegExpNodeLetter</a></li>
<li><a href="etk__RegExpNodeLetterNot.html">RegExpNodeLetterNot</a></li>
<li><a href="etk__RegExpNodePThese.html">RegExpNodePThese</a></li>
<li><a href="etk__RegExpNodePTheseElem.html">RegExpNodePTheseElem</a></li>
<li><a href="etk__RegExpNodeSOL.html">RegExpNodeSOL</a></li>
<li><a href="etk__RegExpNodeValue.html">RegExpNodeValue</a></li>
<li><a href="etk__RegExpNodeWhiteSpace.html">RegExpNodeWhiteSpace</a></li>
<li><a href="etk__RegExpNodeWhiteSpaceNot.html">RegExpNodeWhiteSpaceNot</a></li>
<li><a href="etk__RegExpNodeWordChar.html">RegExpNodeWordChar</a></li>
<li><a href="etk__RegExpNodeWordCharNot.html">RegExpNodeWordCharNot</a></li>
<li><a href="etk__Semaphore.html">Semaphore</a></li>
<li><a href="etk__UChar.html">UChar</a></li>
<li><a href="etk__Vector2D.html">Vector2D</a></li>
<li><a href="etk__Vector3D.html">Vector3D</a></li>
<li><a href="etk__Vector4D.html">Vector4D</a></li>
<li><a href="etk__archive__Zip.html">archive::Zip</a></li>
<li><a href="etk__elementPos_ts.html">elementPos_ts</a></li>
</ul>
<li><a href="etk__FSNType.html">FSNType</a></li>
<li><a href="etk__logLevel.html">logLevel</a></li>
<li><a href="etk__regExpPrivateSection.html">regExpPrivateSection</a></li>
<li><a href="etk__seekNode.html">seekNode</a></li>
<li><a href="etk__typeNode.html">typeNode</a></li>
</ul>
<li>unicode</li>
<ul>
<li><a href="unicode__charset.html">charset</a></li>
</ul>
</div>
</div>
<div class="container" id="content">
<h1>Class: etk::Buffer</h1>
<br/>
<h2>Synopsis:</h2>
<pre>
+ <a class="code-function" href="#Buffer">Buffer</a> (<span class="code-type">int32_t</span> <span class="code-argument">_count</span>);<br>+ <a class="code-function" href="#Buffer">Buffer</a> (<span class="code-storage-keyword">const</span> <a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <span class="code-argument">_obj</span>);<br>+ ~<a class="code-function" href="#Buffer">Buffer</a> (<span class="code-type">void</span>);<br>+ <span class="code-type">bool</span> <a class="code-function" href="#dumpIn">dumpIn</a> (<a href="etk__FSNode.html" class="code-type">etk::FSNode</a> & <span class="code-argument">_file</span>);<br>+ <span class="code-type">bool</span> <a class="code-function" href="#dumpFrom">dumpFrom</a> (<a href="etk__FSNode.html" class="code-type">etk::FSNode</a> & <span class="code-argument">_file</span>);<br>+ <a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <a class="code-function" href="#operator=">operator=</a> (<span class="code-storage-keyword">const</span> <a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <span class="code-argument">_obj</span>);<br>+ <span class="code-type">int8_t</span> <a class="code-function" href="#operator[]">operator[]</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);<br>+ <span class="code-type">int8_t</span> & <a class="code-function" href="#get">get</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);<br>+ <span class="code-type">int32_t</span> <a class="code-function" href="#get">get</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> UChar & <span class="code-argument">_value</span>,<br/> <span class="code-type">char</span>set_te <span class="code-argument">_charset</span>);<br>+ std::vector<<span class="code-type">int8_t</span>> <a class="code-function" href="#get">get</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#push_back">push_back</a> (<span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#insert">insert</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#insert">insert</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> std::vector<<span class="code-type">int8_t</span>> & <span class="code-argument">_items</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#insert">insert</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int8_t</span> * <span class="code-argument">_items</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#replace">replace</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#replace">replace</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>,<br/> std::vector<<span class="code-type">int8_t</span>> & <span class="code-argument">_items</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#replace">replace</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>,<br/> <span class="code-type">int8_t</span> * <span class="code-argument">_items</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#remove">remove</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#pop_back">pop_back</a> (<span class="code-type">void</span>);<br>+ <span class="code-type">void</span> <a class="code-function" href="#clear">clear</a> (<span class="code-type">void</span>);<br>+ <span class="code-type">int8_t</span> & <a class="code-function" href="#getDirect">getDirect</a> (<span class="code-type">int32_t</span> <span class="code-argument">_realElementPosition</span>);<br>+ <span class="code-type">int32_t</span> <a class="code-function" href="#size">size</a> (<span class="code-type">void</span>);<br>- <span class="code-type">void</span> <a class="code-function" href="#changeAllocation">changeAllocation</a> (<span class="code-type">int32_t</span> <span class="code-argument">_newSize</span>);<br>- <span class="code-type">bool</span> <a class="code-function" href="#gapMove">gapMove</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);<br>- <span class="code-type">bool</span> <a class="code-function" href="#gapResize">gapResize</a> (<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,<br/> <span class="code-type">int32_t</span> <span class="code-argument">_newGapLen</span>);<br>- <span class="code-type">int32_t</span> <a class="code-function" href="#gapSize">gapSize</a> (<span class="code-type">void</span>);<br>- <span class="code-type">void</span> <a class="code-function" href="#gapCheckMaxSize">gapCheckMaxSize</a> (<span class="code-type">void</span>);<br></pre>
<h2>Description:</h2>
/**
* @brief Buffer classes. Designed for access o
*/<h2>Detail:<h2>
<h3>etk::<a id="Buffer">Buffer</a> ()</h3>
<pre>
<span class="code-function">Buffer</span>(<span class="code-type">int32_t</span> <span class="code-argument">_count</span>);</pre>
<br/>
Create an empty vector
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_count</span> Minimum request size of the Buffer
<br/></ul>
<br/>
<hr/>
<h3>etk::<a id="Buffer">Buffer</a> ()</h3>
<pre>
<span class="code-function">Buffer</span>(<span class="code-storage-keyword">const</span> <a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <span class="code-argument">_obj</span>);</pre>
<br/>
Re-copy constructor (copy all needed data)
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_obj</span> Buffer that might be copy
<br/></ul>
<br/>
<hr/>
<h3>etk::~<a id="Buffer">Buffer</a> ()</h3>
<pre>
~<span class="code-function">Buffer</span>(<span class="code-type">void</span>);</pre>
<br/>
Destructor of the current Class
<br/><br/>
<hr/>
<h3><a id="dumpIn">dumpIn</a> ()</h3>
<pre>
<span class="code-type">bool</span> <span class="code-function">dumpIn</span>(<a href="etk__FSNode.html" class="code-type">etk::FSNode</a> & <span class="code-argument">_file</span>);</pre>
<br/>
Save in the current file open
<br/><ul>
<b>Parameter [input] [output]:</b> <span class="code-argument">_file</span> Pointer on the file where data might be writed
<br/><b>Return:</b> true if OK / false if an error occured
<br/></ul>
<br/>
<hr/>
<h3><a id="dumpFrom">dumpFrom</a> ()</h3>
<pre>
<span class="code-type">bool</span> <span class="code-function">dumpFrom</span>(<a href="etk__FSNode.html" class="code-type">etk::FSNode</a> & <span class="code-argument">_file</span>);</pre>
<br/>
Load in the current file open
<br/><ul>
<b>Parameter [input] [output]:</b> <span class="code-argument">_myFile</span> Pointer on the file where data might be read
<br/><b>Return:</b> true if OK / false if an error occured
<br/></ul>
<br/>
<hr/>
<h3><a id="operator=">operator=</a> ()</h3>
<pre>
<a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <span class="code-function">operator=</span>(<span class="code-storage-keyword">const</span> <a href="etk__Buffer.html" class="code-type">etk::Buffer</a> & <span class="code-argument">_obj</span>);</pre>
<br/>
Re-copy operator
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_obj</span> Buffer that might be copy
<br/><b>Return:</b> reference on the curent re-copy vector
<br/></ul>
<br/>
<hr/>
<h3><a id="operator[]">operator[]</a> ()</h3>
<pre>
<span class="code-type">int8_t</span> <span class="code-function">operator[]</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);</pre>
<br/>
Operator [] : Get the data at the requested position (gap abstraction done).
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position in the buffer.
<br/><b>Return:</b> Element at the request pos.
<br/></ul>
<br/>
<hr/>
<h3><a id="get">get</a> ()</h3>
<pre>
<span class="code-type">int8_t</span> & <span class="code-function">get</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);</pre>
<br/>
Get a current element in the vector
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Desired position read
<br/><b>Return:</b> Reference on the Element
<br/></ul>
<br/>
<hr/>
<h3><a id="get">get</a> ()</h3>
<pre>
<span class="code-type">int32_t</span> <span class="code-function">get</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
UChar & <span class="code-argument">_value</span>,
<span class="code-type">char</span>set_te <span class="code-argument">_charset</span>);</pre>
<br/>
Get a current element in the vector
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Desired position read
<br/><b>Return:</b> Reference on the Element
<br/></ul>
<br/>
<hr/>
<h3><a id="get">get</a> ()</h3>
<pre>
std::vector<<span class="code-type">int8_t</span>> <span class="code-function">get</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);</pre>
<br/>
Get elements from a specific position.
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position of the first element.
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbElement</span> Number of element needed.
<br/><b>Return:</b> The data requested
<br/></ul>
<br/>
<hr/>
<h3><a id="push_back">push_back</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">push_back</span>(<span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);</pre>
<br/>
Add at the Last position of the Vector
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_item</span> Element to add at the end of vector
<br/></ul>
<br/>
<hr/>
<h3><a id="insert">insert</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">insert</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);</pre>
<br/>
Insert One item at the specify position.
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position where data might be inserted
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted.
<br/></ul>
<br/>
<hr/>
<h3><a id="insert">insert</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">insert</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
std::vector<<span class="code-type">int8_t</span>> & <span class="code-argument">_items</span>);</pre>
<br/>
Insert data in the buffer
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position where data might be inserted
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted.
<br/></ul>
<br/>
<hr/>
<h3><a id="insert">insert</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">insert</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int8_t</span> * <span class="code-argument">_items</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);</pre>
<br/>
Insert data in the buffer
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position where data might be inserted
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted. (no need of '\0')
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbElement</span> number of element to insert
<br/></ul>
<br/>
<hr/>
<h3><a id="replace">replace</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">replace</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-storage-keyword">const</span> <span class="code-type">int8_t</span> & <span class="code-argument">_item</span>);</pre>
<br/>
Replace one element in the buffer
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> The first element to remove.
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted.
<br/></ul>
<br/>
<hr/>
<h3><a id="replace">replace</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">replace</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>,
std::vector<<span class="code-type">int8_t</span>> & <span class="code-argument">_items</span>);</pre>
<br/>
Replace specified data.
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> The first element to remove.
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbRemoveElement</span> number of element to remove.
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted.
<br/></ul>
<br/>
<hr/>
<h3><a id="replace">replace</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">replace</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>,
<span class="code-type">int8_t</span> * <span class="code-argument">_items</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbElement</span>);</pre>
<br/>
Replace specified data.
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> The first element to remove.
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbRemoveElement</span> number of element to remove.
<br/><b>Parameter [input]:</b> <span class="code-argument">_items</span> Data that might be inserted.
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbElement</span> Number of element that might be added.
<br/></ul>
<br/>
<hr/>
<h3><a id="remove">remove</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">remove</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_nbRemoveElement</span>);</pre>
<br/>
Remove specific data in the buffer.
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> The first element to remove
<br/><b>Parameter [input]:</b> <span class="code-argument">_nbRemoveElement</span> number of element to remove
<br/></ul>
<br/>
<hr/>
<h3><a id="pop_back">pop_back</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">pop_back</span>(<span class="code-type">void</span>);</pre>
<br/>
Remove the last element of the Buffer.
<br/><br/>
<hr/>
<h3><a id="clear">clear</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">clear</span>(<span class="code-type">void</span>);</pre>
<br/>
Clean all the data in the buffer.
<br/><br/>
<hr/>
<h3><a id="getDirect">getDirect</a> ()</h3>
<pre>
<span class="code-type">int8_t</span> & <span class="code-function">getDirect</span>(<span class="code-type">int32_t</span> <span class="code-argument">_realElementPosition</span>);</pre>
<br/>
Get a current element in the vector (iterator system)
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_realElementPosition</span> Real position in the buffer (only use in the ITERATOR)
<br/><b>Return:</b> Reference on the Element
<br/></ul>
<br/>
<hr/>
<h3><a id="size">size</a> ()</h3>
<pre>
<span class="code-type">int32_t</span> <span class="code-function">size</span>(<span class="code-type">void</span>);</pre>
<br/>
Get the number of element in the vector
<br/><ul>
<b>Return:</b> The number requested
<br/></ul>
<br/>
<hr/>
<h3><a id="changeAllocation">changeAllocation</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">changeAllocation</span>(<span class="code-type">int32_t</span> <span class="code-argument">_newSize</span>);</pre>
<br/>
Change the current allocation to the corect one (depend on the current size)
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_newSize</span> Minimum number of element needed
<br/></ul>
<br/>
<hr/>
<h3><a id="gapMove">gapMove</a> ()</h3>
<pre>
<span class="code-type">bool</span> <span class="code-function">gapMove</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>);</pre>
<br/>
Move the current gap at an other position
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position of the new Gap.
<br/><b>Return:</b> false The operation can not be proccesed.
<br/><b>Return:</b> true The operation done correctly.
<br/></ul>
<br/>
<hr/>
<h3><a id="gapResize">gapResize</a> ()</h3>
<pre>
<span class="code-type">bool</span> <span class="code-function">gapResize</span>(<span class="code-type">int32_t</span> <span class="code-argument">_pos</span>,
<span class="code-type">int32_t</span> <span class="code-argument">_newGapLen</span>);</pre>
<br/>
Change The gap position and size
<br/><ul>
<b>Parameter [input]:</b> <span class="code-argument">_pos</span> Position of the new Gap.
<br/><b>Parameter [input]:</b> <span class="code-argument">_newGapLen</span> Size of the new gap (can be bigger than GAP_SIZE_MAX).
<br/><b>Return:</b> false The operation can not be proccesed.
<br/><b>Return:</b> true The operation done correctly.
<br/></ul>
<br/>
<hr/>
<h3><a id="gapSize">gapSize</a> ()</h3>
<pre>
<span class="code-type">int32_t</span> <span class="code-function">gapSize</span>(<span class="code-type">void</span>);</pre>
<br/>
Get the current gap size.
<br/><ul>
<b>Return:</b> The number of element in the gap
<br/></ul>
<br/>
<hr/>
<h3><a id="gapCheckMaxSize">gapCheckMaxSize</a> ()</h3>
<pre>
<span class="code-type">void</span> <span class="code-function">gapCheckMaxSize</span>(<span class="code-type">void</span>);</pre>
<br/>
Control if the writing gap is not too big (automatic resize the buffer).
<br/><br/>
<hr/>
</div>
</body>
</html>