<html> <head> <title>OpenChange Property Files 0.9 API Documentation</title> <link href="doxygen.css" rel="stylesheet" type="text/css"/> <link href="apidocs.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="website"> <div class="header"></div> <div id="middle_side"> <div id="right_side_home"> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#define-members">Defines</a> | <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <h1>libocpf/ocpf_public.c File Reference</h1> </div> </div> <div class="contents"> <p>public OCPF API <a href="#_details">More...</a></p> <code>#include "libocpf/ocpf_private.h"</code><br/> <code>#include <<a class="el" href="ocpf_8h.html">libocpf/ocpf.h</a>></code><br/> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="define-members"></a> Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a6a92c281d7a60ee42f44160e14f5aba6">MAX_READ_SIZE</a> 0x1000</td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ struct SPropValue * </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#aad0ea96d742e6a34da9a723a217b4aef">ocpf_get_SPropValue</a> (uint32_t *cValues)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ int </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a3d8b443869a67afd0d70cce08b6f6c3b">ocpf_init</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ enum MAPISTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#ad9917a2b3e74eec7cee6b383e8b73ec3">ocpf_OpenFolder</a> (mapi_object_t *obj_store, mapi_object_t *obj_folder)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ int </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a54e0c768891d33de58c1b2acdc7aec4c">ocpf_parse</a> (const char *filename)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ int </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#adfabda1510aabf612fa5dbe15d489536">ocpf_release</a> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ enum MAPISTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a04db4561147f69b11b1d13f38adb0660">ocpf_set_Recipients</a> (TALLOC_CTX *mem_ctx, mapi_object_t *obj_message)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">_PUBLIC_ enum MAPISTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a1850beb9c9fcec30b9a5c70f83e709ad">ocpf_set_SPropValue</a> (TALLOC_CTX *mem_ctx, mapi_object_t *obj_folder, mapi_object_t *obj_message)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">stat h int </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#ad7a2e8ef89d9221c0bfa4486761ee3b0">ocpf_yyparse</a> (void)</td></tr> <tr><td colspan="2"><h2><a name="var-members"></a> Variables</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#abc22a72d751fd7b9edfd17ce47da5651">error_flag</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="ocpf__public_8c.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">FILE * </td><td class="memItemRight" valign="bottom"><a class="el" href="ocpf__public_8c.html#a46af646807e0797e72b6e8945e7ea88b">yyin</a></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>public OCPF API </p> <hr/><h2>Define Documentation</h2> <a class="anchor" id="a6a92c281d7a60ee42f44160e14f5aba6"></a><!-- doxytag: member="ocpf_public.c::MAX_READ_SIZE" ref="a6a92c281d7a60ee42f44160e14f5aba6" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MAX_READ_SIZE 0x1000</td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="proto_8h.html#a8251ef359d0fa2736e7587a32cffabba">ocpf_set_SPropValue()</a>.</p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="aad0ea96d742e6a34da9a723a217b4aef"></a><!-- doxytag: member="ocpf_public.c::ocpf_get_SPropValue" ref="aad0ea96d742e6a34da9a723a217b4aef" args="(uint32_t *cValues)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ struct SPropValue* ocpf_get_SPropValue </td> <td>(</td> <td class="paramtype">uint32_t * </td> <td class="paramname"> <em>cValues</em></td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the OCPF SPropValue array</p> <p>This function is an accessor designed to return the SPropValue structure created with ocpf_set_SPropValue.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>cValues</em> </td><td>pointer on the number of SPropValue entries</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>NULL on error, otherwise returns an allocated lpProps pointer</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a8251ef359d0fa2736e7587a32cffabba">ocpf_set_SPropValue</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="a3d8b443869a67afd0d70cce08b6f6c3b"></a><!-- doxytag: member="ocpf_public.c::ocpf_init" ref="a3d8b443869a67afd0d70cce08b6f6c3b" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ int ocpf_init </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Initialize OCPF context</p> <p>Initialize ocpf context and allocate memory for internal structures</p> <dl class="return"><dt><b>Returns:</b></dt><dd>OCPF_SUCCESS on success, otherwise OCPF_ERROR</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a67c64196da27ef182d879db7f7eca25c">ocpf_release</a>, <a class="el" href="proto_8h.html#a932df66fbd1bec388b871dd4350f7285">ocpf_parse</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="ad9917a2b3e74eec7cee6b383e8b73ec3"></a><!-- doxytag: member="ocpf_public.c::ocpf_OpenFolder" ref="ad9917a2b3e74eec7cee6b383e8b73ec3" args="(mapi_object_t *obj_store, mapi_object_t *obj_folder)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ enum MAPISTATUS ocpf_OpenFolder </td> <td>(</td> <td class="paramtype">mapi_object_t * </td> <td class="paramname"> <em>obj_store</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">mapi_object_t * </td> <td class="paramname"> <em>obj_folder</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Open OCPF folder</p> <p>This function opens the folder associated with the ocpf folder global context value.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>obj_store</em> </td><td>the store object </td></tr> <tr><td valign="top"></td><td valign="top"><em>obj_folder</em> </td><td>the folder to open</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND.</dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd>Developers should call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:<ul> <li>MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized.</li> <li>MAPI_E_INVALID_PARAMETER: obj_store is undefined</li> <li>MAPI_E_NOT_FOUND: The specified folder could not be found or is not yet supported.</li> </ul> </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a5cef35bf5965c71d9b3b7b34031c6690">ocpf_init</a>, <a class="el" href="proto_8h.html#a932df66fbd1bec388b871dd4350f7285">ocpf_parse</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="a54e0c768891d33de58c1b2acdc7aec4c"></a><!-- doxytag: member="ocpf_public.c::ocpf_parse" ref="a54e0c768891d33de58c1b2acdc7aec4c" args="(const char *filename)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ int ocpf_parse </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>filename</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Parse OCPF file</p> <p>Parse and process the given ocpf file.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>filename</em> </td><td>the file to parse</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>OCPF_SUCCESS on success, otherwise OCPF_ERROR</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a5cef35bf5965c71d9b3b7b34031c6690">ocpf_init</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#a4d5735b84109baf4680511fc3e34e4af">lineno</a>, <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>, <a class="el" href="ocpf__public_8c.html#ad7a2e8ef89d9221c0bfa4486761ee3b0">ocpf_yyparse()</a>, and <a class="el" href="ocpf__public_8c.html#a46af646807e0797e72b6e8945e7ea88b">yyin</a>.</p> </div> </div> <a class="anchor" id="adfabda1510aabf612fa5dbe15d489536"></a><!-- doxytag: member="ocpf_public.c::ocpf_release" ref="adfabda1510aabf612fa5dbe15d489536" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ int ocpf_release </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Uninitialize OCPF context</p> <p>Uninitialize the global OCPF context and release memory.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>OCPF_SUCCESS on success, otherwise OCPF_ERROR</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a5cef35bf5965c71d9b3b7b34031c6690">ocpf_init</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="a04db4561147f69b11b1d13f38adb0660"></a><!-- doxytag: member="ocpf_public.c::ocpf_set_Recipients" ref="a04db4561147f69b11b1d13f38adb0660" args="(TALLOC_CTX *mem_ctx, mapi_object_t *obj_message)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ enum MAPISTATUS ocpf_set_Recipients </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">mapi_object_t * </td> <td class="paramname"> <em>obj_message</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Set the message recipients from ocpf context</p> <p>This function sets the recipient (To, Cc, Bcc) from the ocpf context and information stored.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>the memory context to use for memory allocation </td></tr> <tr><td valign="top"></td><td valign="top"><em>obj_message</em> </td><td>pointer to the message object we use for internal MAPI operations</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>OCPF_SUCCESS on success, otherwise OCPF_ERROR.</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="ocpf__public_8c.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a> </dd></dl> <p>References <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="a1850beb9c9fcec30b9a5c70f83e709ad"></a><!-- doxytag: member="ocpf_public.c::ocpf_set_SPropValue" ref="a1850beb9c9fcec30b9a5c70f83e709ad" args="(TALLOC_CTX *mem_ctx, mapi_object_t *obj_folder, mapi_object_t *obj_message)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ enum MAPISTATUS ocpf_set_SPropValue </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">mapi_object_t * </td> <td class="paramname"> <em>obj_folder</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">mapi_object_t * </td> <td class="paramname"> <em>obj_message</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Build a SPropValue array from ocpf context</p> <p>This function builds a SPropValue array from the ocpf context and information stored.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>the memory context to use for memory allocation </td></tr> <tr><td valign="top"></td><td valign="top"><em>obj_folder</em> </td><td>pointer the folder object we use for internal MAPI operations </td></tr> <tr><td valign="top"></td><td valign="top"><em>obj_message</em> </td><td>pointer to the message object we use for internal MAPI operations</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success, otherwise -1.</dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd>Developers should call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:<ul> <li>MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized</li> </ul> </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="proto_8h.html#a1e6a64ad3406eeb8dfed6d4e2b953fb2">ocpf_get_SPropValue</a> </dd></dl> <p>References <a class="el" href="ocpf__public_8c.html#a6a92c281d7a60ee42f44160e14f5aba6">MAX_READ_SIZE</a>, and <a class="el" href="ocpf_8h.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>.</p> </div> </div> <a class="anchor" id="ad7a2e8ef89d9221c0bfa4486761ee3b0"></a><!-- doxytag: member="ocpf_public.c::ocpf_yyparse" ref="ad7a2e8ef89d9221c0bfa4486761ee3b0" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">stat h int ocpf_yyparse </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="proto_8h.html#a932df66fbd1bec388b871dd4350f7285">ocpf_parse()</a>.</p> </div> </div> <hr/><h2>Variable Documentation</h2> <a class="anchor" id="abc22a72d751fd7b9edfd17ce47da5651"></a><!-- doxytag: member="ocpf_public.c::error_flag" ref="abc22a72d751fd7b9edfd17ce47da5651" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="ocpf__public_8c.html#abc22a72d751fd7b9edfd17ce47da5651">error_flag</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ad2d4839c05f97a79638401a78fa07bf7"></a><!-- doxytag: member="ocpf_public.c::ocpf" ref="ad2d4839c05f97a79638401a78fa07bf7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="ocpf__public_8c.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a>* <a class="el" href="ocpf__public_8c.html#ad2d4839c05f97a79638401a78fa07bf7">ocpf</a></td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="proto_8h.html#ae499f8dbacd1f1c0683c5024a41e014c">ocpf_dump_folder()</a>, <a class="el" href="proto_8h.html#a36e896af93fe3039ab257ecb486f1fb8">ocpf_dump_named_property()</a>, <a class="el" href="proto_8h.html#a278aa1f54ac465ce8ab501412ef45170">ocpf_dump_oleguid()</a>, <a class="el" href="proto_8h.html#a3a8d8e8f032b00b4924047ba8e7f1805">ocpf_dump_property()</a>, <a class="el" href="proto_8h.html#a65b1e863d68aa8fffb477e5c6c64f6cc">ocpf_dump_recipients()</a>, <a class="el" href="proto_8h.html#af98fd7149ec407cff0faff613434f0de">ocpf_dump_type()</a>, <a class="el" href="proto_8h.html#abb50cb36ec43492a6149f81cf4c0d10b">ocpf_dump_variable()</a>, <a class="el" href="proto_8h.html#a1e6a64ad3406eeb8dfed6d4e2b953fb2">ocpf_get_SPropValue()</a>, <a class="el" href="proto_8h.html#a5cef35bf5965c71d9b3b7b34031c6690">ocpf_init()</a>, <a class="el" href="proto_8h.html#a56f8e60fea6226cebee5e902524c6bd2">ocpf_OpenFolder()</a>, <a class="el" href="proto_8h.html#a932df66fbd1bec388b871dd4350f7285">ocpf_parse()</a>, <a class="el" href="proto_8h.html#a67c64196da27ef182d879db7f7eca25c">ocpf_release()</a>, <a class="el" href="proto_8h.html#aa45dd89024f37bbd36af6fed7f00a5c3">ocpf_set_Recipients()</a>, <a class="el" href="proto_8h.html#a8251ef359d0fa2736e7587a32cffabba">ocpf_set_SPropValue()</a>, <a class="el" href="proto_8h.html#a92380028e4063628979a2b964949deeb">ocpf_write_auto()</a>, <a class="el" href="proto_8h.html#a2cef081b58d0fb7cc37beb2ac701476f">ocpf_write_commit()</a>, <a class="el" href="proto_8h.html#a29356f0b1be1837c516bd19deea13376">ocpf_write_init()</a>, <a class="el" href="ocpf__write_8c.html#a22820bcb1344d95d1edb99e8c13752e2">ocpf_write_unescape_string()</a>, and <a class="el" href="ocpf_8tab_8c.html#acd8617a8f2ac0de8bc1cc032cf449e19">yyparse()</a>.</p> </div> </div> <a class="anchor" id="a46af646807e0797e72b6e8945e7ea88b"></a><!-- doxytag: member="ocpf_public.c::yyin" ref="a46af646807e0797e72b6e8945e7ea88b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">FILE* <a class="el" href="ocpf__public_8c.html#a46af646807e0797e72b6e8945e7ea88b">yyin</a></td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="proto_8h.html#a932df66fbd1bec388b871dd4350f7285">ocpf_parse()</a>.</p> </div> </div> </div> </div> <br/> <table style="clear:both; margin: 0.5em auto; width:80%; text-align: center; background-color:#f8f8f8; border:2px solid #e0e0e0; padding:5px;"> <tr> <td> <img alt="Creative Commons License" src="CC_SomeRightsReserved.png" width="90" height="30" border="0" /><br /> <img alt="Creative Commons Attribution icon" src="24px-Cc-by_white.svg.png" width="24" height="24" border="0" /> <img alt="Creative Commons Share Alike icon" src="24px-Cc-sa_white.svg.png" width="24" height="24" border="0" /> </td> <td> <i><strong class="selflink">This content</strong> is licensed under the Creative Commons<br /> Attribution ShareAlike License v. 3.0:<br /> <a href="http://creativecommons.org/licenses/by-sa/3.0/" class="external free" title="http://creativecommons.org/licenses/by-sa/3.0/" rel="nofollow">http://creativecommons.org/licenses/by-sa/3.0/</a></i> </td></tr></table> <br/> </div> </div> </body> </html>