diff options
Diffstat (limited to 'doc/html/classcMediaDatabase.html')
-rw-r--r-- | doc/html/classcMediaDatabase.html | 390 |
1 files changed, 0 insertions, 390 deletions
diff --git a/doc/html/classcMediaDatabase.html b/doc/html/classcMediaDatabase.html deleted file mode 100644 index bb2e160..0000000 --- a/doc/html/classcMediaDatabase.html +++ /dev/null @@ -1,390 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> -<title>UPnP/DLNA plugin for VDR: cMediaDatabase Class Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"> -<link href="doxygen.css" rel="stylesheet" type="text/css"> -</head><body> -<!-- Generated by Doxygen 1.5.8 --> -<div class="navigation" id="top"> - <div class="tabs"> - <ul> - <li><a href="index.html"><span>Main Page</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li><a href="files.html"><span>Files</span></a></li> - </ul> - </div> - <div class="tabs"> - <ul> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -</div> -<div class="contents"> -<h1>cMediaDatabase Class Reference</h1><!-- doxytag: class="cMediaDatabase" --><code>#include <<a class="el" href="metadata_8h-source.html">metadata.h</a>></code> -<p> -<div class="dynheader"> -Collaboration diagram for cMediaDatabase:</div> -<div class="dynsection"> -<p><center><img src="classcMediaDatabase__coll__graph.png" border="0" usemap="#cMediaDatabase__coll__map" alt="Collaboration graph"></center> -<map name="cMediaDatabase__coll__map"> -<area shape="rect" href="classcUPnPObjectFactory.html" title="{cUPnPObjectFactory\n|- mDatabase\l- mMediators\l- mInstance\l|+ registerMediator()\l+ unregisterMediator()\l+ createObject()\l+ getObject()\l+ saveObject()\l+ deleteObject()\l+ clearObject()\l+ getInstance()\l- findMediatorByID()\l- findMediatorByClass()\l- cUPnPObjectFactory()\l}" alt="" coords="120,973,280,1245"><area shape="rect" href="classcSQLiteDatabase.html" title="{cSQLiteDatabase\n|- mAutoCommit\l- mActiveTransaction\l- mLastRow\l- mRows\l- mDatabase\l- mInstance\l|+ ~cSQLiteDatabase()\l+ getResultCount()\l+ getLastInsertRowID()\l+ getResultRows()\l+ execStatement()\l+ startTransaction()\l+ commitTransaction()\l+ rollbackTransaction()\l+ setAutoCommit()\l+ sprintf()\l+ getInstance()\l- cSQLiteDatabase()\l- initialize()\l- initializeTables()\l- initializeTriggers()\l- exec()\l- getResultRow()\l}" alt="" coords="5,437,160,853"><area shape="rect" href="classcRows.html" title="{cRows\n|- mLastRow\l|+ ~cRows()\l+ fetchRow()\l- cRows()\l}" alt="" coords="147,261,243,373"><area shape="rect" href="classcRow.html" title="{cRow\n|- currentCol\l- ColCount\l- Columns\l- Values\l|+ ~cRow()\l+ Count()\l+ fetchColumn()\l+ fetchColumn()\l- cRow()\l}" alt="" coords="48,5,163,197"><area shape="rect" href="structcUPnPObjectID.html" title="{cUPnPObjectID\n|+ _ID\l|+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ cUPnPObjectID()\l+ operator=()\l+ operator=()\l+ operator=()\l+ operator++()\l+ operator++()\l+ operator--()\l+ operator--()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator!=()\l+ operator==()\l+ operator unsigned int()\l+ operator int()\l+ operator long()\l+ operator*()\l}" alt="" coords="389,917,552,1301"></map> -<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div> - -<p> -<a href="classcMediaDatabase-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> -<tr><td></td></tr> -<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#96232caa30b80d4e3ca667c317101fd0">getSystemUpdateID</a> ()</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#dadd330e273e0f354d51b76cee436198">getContainerUpdateIDs</a> ()</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#ace0720fbddbdd7f2e4ca5ad16d5acd2">cMediaDatabase</a> ()</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">addFastFind</a> (<a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> *Object, const char *FastFind)</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#b0fac893d82c29276d68b94569cfef1d">getObjectByFastFind</a> (const char *FastFind)</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#b8da7da9612c64de0ddf88db3c316d5a">getObjectByID</a> (<a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> ID)</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#25ff666113dbe72598e4ef4e23af5d8f">browse</a> (OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")</td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#36bdc240d3fa11d685440d365d9ab8c9">search</a> (OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")</td></tr> - -<tr><td colspan="2"><br><h2>Friends</h2></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="02ebb94fd2cdff4bfb2da3267446d62b"></a><!-- doxytag: member="cMediaDatabase::cUPnPServer" ref="02ebb94fd2cdff4bfb2da3267446d62b" args="" --> -class </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#02ebb94fd2cdff4bfb2da3267446d62b">cUPnPServer</a></td></tr> - -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aefab39434a832c545ac75a79fa81d23"></a><!-- doxytag: member="cMediaDatabase::cUPnPObjectMediator" ref="aefab39434a832c545ac75a79fa81d23" args="" --> -class </td><td class="memItemRight" valign="bottom"><a class="el" href="classcMediaDatabase.html#aefab39434a832c545ac75a79fa81d23">cUPnPObjectMediator</a></td></tr> - -</table> -<hr><a name="_details"></a><h2>Detailed Description</h2> -The media database<p> -This class is the global object manager. It holds every object in a local cache. Only this class is allowed to create new objects.<p> -<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> </dd></dl> -<hr><h2>Constructor & Destructor Documentation</h2> -<a class="anchor" name="ace0720fbddbdd7f2e4ca5ad16d5acd2"></a><!-- doxytag: member="cMediaDatabase::cMediaDatabase" ref="ace0720fbddbdd7f2e4ca5ad16d5acd2" args="()" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">cMediaDatabase::cMediaDatabase </td> - <td>(</td> - <td class="paramname"> </td> - <td> ) </td> - <td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Constructor<p> -This creates an instance of the media database. -</div> -</div><p> -<hr><h2>Member Function Documentation</h2> -<a class="anchor" name="1aec38e63143c7eb26012f1c74fe373d"></a><!-- doxytag: member="cMediaDatabase::addFastFind" ref="1aec38e63143c7eb26012f1c74fe373d" args="(cUPnPClassObject *Object, const char *FastFind)" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int cMediaDatabase::addFastFind </td> - <td>(</td> - <td class="paramtype"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * </td> - <td class="paramname"> <em>Object</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const char * </td> - <td class="paramname"> <em>FastFind</em></td><td> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td><td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Add a Fastfind<p> -This creates a <em>Fastfind</em> entry. It is a string which can be used to relocate a objectID. Usually this is a file name or another ID with which the related object can be found.<p> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns<ul> -<li><b><code>-1</code>,</b> if the creation was successful</li><li><b><code>0</code>,</b> otherwise </li></ul> -</dd></dl> -<dl compact><dt><b>Parameters:</b></dt><dd> - <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>Object</em> </td><td>the object, which should be registered </td></tr> - <tr><td valign="top"></td><td valign="top"><em>FastFind</em> </td><td>the string with which the object shall be relocated </td></tr> - </table> -</dl> - -</div> -</div><p> -<a class="anchor" name="25ff666113dbe72598e4ef4e23af5d8f"></a><!-- doxytag: member="cMediaDatabase::browse" ref="25ff666113dbe72598e4ef4e23af5d8f" args="(OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int cMediaDatabase::browse </td> - <td>(</td> - <td class="paramtype">OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> ** </td> - <td class="paramname"> <em>Results</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>ID</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN bool </td> - <td class="paramname"> <em>BrowseMetadata</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>Filter</em> = <code>"*"</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN unsigned int </td> - <td class="paramname"> <em>Offset</em> = <code>0</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN unsigned int </td> - <td class="paramname"> <em>Count</em> = <code>0</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>SortCriteria</em> = <code>""</code></td><td> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td><td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Performs a browse on the database<p> -This performs a browse request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.<p> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns an integer representing one of the following:<ul> -<li><b><code>UPNP_CDS_E_INVALID_SORT_CRITERIA</code>,</b> when the sort criteria is malformed</li><li><b><code>UPNP_CDS_E_CANT_PROCESS_REQUEST</code>,</b> when there is an internal error while processing the request</li><li><b><code>UPNP_CDS_E_NO_SUCH_OBJECT</code>,</b> when the requested ObjectID does not exist</li><li><b><code>UPNP_SOAP_E_ACTION_FAILED</code>,</b> when the action failed due any reasons</li><li><b><code>UPNP_E_SUCCESS</code>,</b> if the request was successful </li></ul> -</dd></dl> -<dl compact><dt><b>Parameters:</b></dt><dd> - <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>Results</em> </td><td>the result of the request </td></tr> - <tr><td valign="top"></td><td valign="top"><em>ID</em> </td><td>the objectID of the request </td></tr> - <tr><td valign="top"></td><td valign="top"><em>BrowseMetadata</em> </td><td><b>true</b> to browse metadata, <b>false</b> otherwise </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Filter</em> </td><td>the filter applied to the returned metadata </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Offset</em> </td><td>the starting offset </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Count</em> </td><td>maximum count returned </td></tr> - <tr><td valign="top"></td><td valign="top"><em>SortCriteria</em> </td><td>sorts the results before returning them </td></tr> - </table> -</dl> - -</div> -</div><p> -<a class="anchor" name="dadd330e273e0f354d51b76cee436198"></a><!-- doxytag: member="cMediaDatabase::getContainerUpdateIDs" ref="dadd330e273e0f354d51b76cee436198" args="()" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">const char * cMediaDatabase::getContainerUpdateIDs </td> - <td>(</td> - <td class="paramname"> </td> - <td> ) </td> - <td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Returns a CSV list with ContainerUpdateIDs<p> -This list contains an unordered list of ordered pairs of ContainerID and its ContainerUpdateID. It contains only recent changes which are not yet beeing evented. This means that evented updates will be removed from list.<p> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>CSV list of ContainerUpdateIDs </dd></dl> - -</div> -</div><p> -<a class="anchor" name="b0fac893d82c29276d68b94569cfef1d"></a><!-- doxytag: member="cMediaDatabase::getObjectByFastFind" ref="b0fac893d82c29276d68b94569cfef1d" args="(const char *FastFind)" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cMediaDatabase::getObjectByFastFind </td> - <td>(</td> - <td class="paramtype">const char * </td> - <td class="paramname"> <em>FastFind</em> </td> - <td> ) </td> - <td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Finds a object by Fastfind<p> -This returns the object via the <em>Fastfind</em> string. The object must be previosly registered via <code><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase::addFastFind()</a></code>.<p> -It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.<p> -<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classcMediaDatabase.html#1aec38e63143c7eb26012f1c74fe373d">cMediaDatabase::addFastFind</a> </dd></dl> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>The object associated with FastFind </dd></dl> -<dl compact><dt><b>Parameters:</b></dt><dd> - <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>FastFind</em> </td><td>the string with which the object shall be relocated </td></tr> - </table> -</dl> - -</div> -</div><p> -<a class="anchor" name="b8da7da9612c64de0ddf88db3c316d5a"></a><!-- doxytag: member="cMediaDatabase::getObjectByID" ref="b8da7da9612c64de0ddf88db3c316d5a" args="(cUPnPObjectID ID)" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classcUPnPClassObject.html">cUPnPClassObject</a> * cMediaDatabase::getObjectByID </td> - <td>(</td> - <td class="paramtype"><a class="el" href="structcUPnPObjectID.html">cUPnPObjectID</a> </td> - <td class="paramname"> <em>ID</em> </td> - <td> ) </td> - <td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Finds a object by its ObjectID<p> -This returns the object via its <em>ObjectID</em>.<p> -It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.<p> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>The object associated with FastFind </dd></dl> -<dl compact><dt><b>Parameters:</b></dt><dd> - <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>ID</em> </td><td>The ObjectID of the requested object </td></tr> - </table> -</dl> - -</div> -</div><p> -<a class="anchor" name="96232caa30b80d4e3ca667c317101fd0"></a><!-- doxytag: member="cMediaDatabase::getSystemUpdateID" ref="96232caa30b80d4e3ca667c317101fd0" args="()" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">unsigned int cMediaDatabase::getSystemUpdateID </td> - <td>(</td> - <td class="paramname"> </td> - <td> ) </td> - <td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Returns the SystemUpdateID<p> -This returns the <em>SystemUpdateID</em>. This changes whenever anything changed within the content directory. This value will be sent through the UPnP network every 2 seconds.<p> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>the SystemUpdateID </dd></dl> - -</div> -</div><p> -<a class="anchor" name="36bdc240d3fa11d685440d365d9ab8c9"></a><!-- doxytag: member="cMediaDatabase::search" ref="36bdc240d3fa11d685440d365d9ab8c9" args="(OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")" --> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">int cMediaDatabase::search </td> - <td>(</td> - <td class="paramtype">OUT <a class="el" href="structcUPnPResultSet.html">cUPnPResultSet</a> ** </td> - <td class="paramname"> <em>Results</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>ID</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>Search</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>Filter</em> = <code>"*"</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN unsigned int </td> - <td class="paramname"> <em>Offset</em> = <code>0</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN unsigned int </td> - <td class="paramname"> <em>Count</em> = <code>0</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">IN const char * </td> - <td class="paramname"> <em>SortCriteria</em> = <code>""</code></td><td> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td><td></td> - </tr> - </table> -</div> -<div class="memdoc"> - -<p> -Performs a search on the database<p> -This performs a search request on the database and returns a structure containing the matching count and DIDL-Lite fragement which is sent to the control point.<p> -<dl class="note" compact><dt><b>Note:</b></dt><dd>The submitted ID must be a ContainerID. Searches are performed only in this container.</dd></dl> -<dl class="return" compact><dt><b>Returns:</b></dt><dd>returns an integer representing one of the following:<ul> -<li><b><code>UPNP_CDS_E_INVALID_SORT_CRITERIA</code>,</b> when the sort criteria is malformed</li><li><b><code>UPNP_CDS_E_CANT_PROCESS_REQUEST</code>,</b> when there is an internal error while processing the request</li><li><b><code>UPNP_CDS_E_NO_SUCH_OBJECT</code>,</b> when the requested ObjectID does not exist</li><li><b><code>UPNP_SOAP_E_ACTION_FAILED</code>,</b> when the action failed due any reasons</li><li><b><code>UPNP_E_SUCCESS</code>,</b> if the request was successful </li></ul> -</dd></dl> -<dl compact><dt><b>Parameters:</b></dt><dd> - <table border="0" cellspacing="2" cellpadding="0"> - <tr><td valign="top"></td><td valign="top"><em>Results</em> </td><td>the result of the request </td></tr> - <tr><td valign="top"></td><td valign="top"><em>ID</em> </td><td>the ContainerID </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Search</em> </td><td>the search string </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Filter</em> </td><td>the filter applied to the returned metadata </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Offset</em> </td><td>the starting offset </td></tr> - <tr><td valign="top"></td><td valign="top"><em>Count</em> </td><td>maximum count returned </td></tr> - <tr><td valign="top"></td><td valign="top"><em>SortCriteria</em> </td><td>sorts the results before returning them </td></tr> - </table> -</dl> - -</div> -</div><p> -<hr>The documentation for this class was generated from the following files:<ul> -<li>database/<a class="el" href="metadata_8h-source.html">metadata.h</a><li>database/metadata.cpp</ul> -</div> -<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by -<a href="http://www.doxygen.org/index.html"> -<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> -</body> -</html> |