[6092] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
| 2 | <HTML> |
---|
| 3 | <HEAD> |
---|
| 4 | <script type="text/javascript" src="./libs/jquery.js"></script> |
---|
| 5 | <script type="text/javascript" src="./libs/jsonreport.js"></script> |
---|
| 6 | <script type="text/javascript" src="./libs/Base64.js"></script> |
---|
| 7 | <TITLE>..:: Página de Teste - REST API ::..</TITLE> |
---|
| 8 | <META http-equiv="Content-Type" content="text/html; charset=utf-8"> |
---|
| 9 | <style type="text/css"> |
---|
| 10 | * { |
---|
| 11 | font-family: sans-serif, verdana, arial; |
---|
| 12 | font-size: 12px; |
---|
| 13 | } |
---|
| 14 | table { |
---|
| 15 | background:#ECECEC; |
---|
| 16 | padding:5px; |
---|
| 17 | border:1px solid black |
---|
| 18 | } |
---|
| 19 | |
---|
| 20 | .loader |
---|
| 21 | { |
---|
| 22 | position:absolute; |
---|
| 23 | padding: 5px; |
---|
| 24 | right:10px; |
---|
| 25 | top:10px; |
---|
| 26 | color: black; |
---|
| 27 | text-align:center; |
---|
| 28 | border: solid 1px black; |
---|
| 29 | z-index: 200; |
---|
| 30 | } |
---|
| 31 | </style> |
---|
| 32 | </HEAD> |
---|
| 33 | <BODY> |
---|
| 34 | <DIV style="display:none" class="loader" id="loader"> |
---|
| 35 | <label id="loader_msg"></label><br> |
---|
| 36 | <img src="./images/loader.gif"/> |
---|
| 37 | </DIV> |
---|
| 38 | <TABLE> |
---|
| 39 | <TR><TD><b>Servidor</b></TD> |
---|
| 40 | <TD><select id="server"><option value="">Selecionar ....</option></select> |
---|
| 41 | <input id="bt_servers" type="button" value="Listar Servidores" onclick="javascript:jExecute('AvailableServers')"/> |
---|
| 42 | <input id="bt_version" type="button" value="Versão API" onclick="javascript:jExecute('ExpressoVersion')"/> |
---|
| 43 | <input id="bt_version" type="button" value="Teste Erro" onclick="javascript:jExecute('Teste')"/> |
---|
| 44 | </TD> |
---|
| 45 | </TR> |
---|
[6311] | 46 | <TR><TD><b>Login</b></TD> |
---|
| 47 | <TD> |
---|
| 48 | <input type="text" id="user"/> |
---|
| 49 | <input id="bt_myPicture" type="button" value="Visualizar Foto" onclick="javascript:jExecute('GetMyPicture')"/> |
---|
| 50 | </TD> |
---|
| 51 | </TR> |
---|
[6092] | 52 | <TR><TD><b>Senha</b></TD><TD><input type="password" id="password"/> |
---|
| 53 | <input id="bt_login" type="button" value="Conectar" onclick="javascript:jExecute('Login')"/> |
---|
| 54 | <input id="bt_logout" type="button" value="Desconectar" onclick="javascript:jExecute('Logout')"/> |
---|
| 55 | </TD></TR> |
---|
| 56 | </TABLE> |
---|
| 57 | <BR><BR> |
---|
| 58 | <TABLE> |
---|
| 59 | <TR><TD><b>Esvaziar Lixeira</b></TD> |
---|
| 60 | <TD><input id="bt_esvaziar_lixeira" type="button" value="Esvaziar Lixeira" onclick="javascript:jExecute('CleanTrash')"/></TD> |
---|
| 61 | </TR> |
---|
| 62 | <TR><TD><b>Suporte/Sugestão</b></TD> |
---|
| 63 | <TD><textarea id="text_message">Texto do e-mail de suporte/sugestao!!</textarea></TD> |
---|
| 64 | <TD><input id="bt_sugestao" type="button" value="Enviar Sugestão" onclick="javascript:jExecute('SendSupportFeedback')"/></TD> |
---|
| 65 | </TR> |
---|
| 66 | </TABLE><br><br> |
---|
| 67 | <TABLE> |
---|
| 68 | <TR><TD><b>Pastas IMAP</b></TD> |
---|
[6156] | 69 | <TD><input type="text" id="search_folders"/><input id="bt_listFolders" type="button" value="Pesquisar" onclick="javascript:jExecute('Mail/Folders')"/></TD> |
---|
| 70 | <TD colspan=2><select id="folder_id" onchange="javascript:jExecute('Mail/Messages')"><option value="INBOX">Selecionar pasta</option></select> |
---|
[6092] | 71 | <select id="message_id" onchange="javascript:jExecute('getMessage')"><option value="-1">Selecionar mensagem</option></select> |
---|
| 72 | </TD> |
---|
| 73 | </TR> |
---|
[6156] | 74 | <TR><TD></TD><TD></TD> |
---|
| 75 | <TD colspan=2><input id="bt_del_folder" type="button" value="Apagar Pasta" onclick="javascript:jExecute('DelFolder')"/></TD> |
---|
| 76 | </TR> |
---|
| 77 | <TR><TD></TD><TD></TD> |
---|
| 78 | <TD><input type="text" id="new_folder_name"/></TD> |
---|
| 79 | <TD> |
---|
| 80 | <input id="bt_add_folder" type="button" value="Adicionar Pasta" onclick="javascript:jExecute('AddFolder')"/><br> |
---|
| 81 | <input id="bt_rename_folder" type="button" value="Renomear Pasta" onclick="javascript:jExecute('RenameFolder')"/> |
---|
| 82 | </TD> |
---|
| 83 | </TR> |
---|
[6092] | 84 | <TR><TD><b>Contatos</b></TD> |
---|
[6156] | 85 | <TD colspan=3><input type="text" id="search_contacts"/><input id="bt_contacts" type="button" value="Pesquisar" onclick="javascript:jExecute('getContacts')"/> |
---|
[6092] | 86 | <select id="sel_contacts" onchange="javascript:jExecute('getContactPicture')"><option value="-1">Selecionar contato</option></select> |
---|
| 87 | |
---|
| 88 | </TD> |
---|
| 89 | </TR> |
---|
| 90 | <TR><TD><b>Catalogo</b></TD> |
---|
[6156] | 91 | <TD colspan=3> |
---|
[6092] | 92 | <input type="text" id="search_catalog"/><input id="bt_catalog" type="button" value="Pesquisar" onclick="javascript:jExecute('getCatalog')"/> |
---|
| 93 | <select id="sel_catalog" onchange="javascript:jExecute('getCatalogPicture')"><option value="-1">Selecionar contato</option></select> |
---|
| 94 | </TD> |
---|
| 95 | </TR> |
---|
| 96 | </TABLE> |
---|
| 97 | <BR><BR> |
---|
| 98 | <TABLE> |
---|
| 99 | <TR><TD><b>Resposta JSON-RPC</b> |
---|
| 100 | <input id="bt_clear" type="button" value="Limpar Saída" onclick="javascript:clearOut()"/> |
---|
| 101 | </TD></TR> |
---|
| 102 | <TR><TD style="background:#FFF !important;padding:0px;"> |
---|
| 103 | <img id="img_photo" style="display:none;"/> |
---|
| 104 | <div id="message" class="jsonreport"></div> |
---|
| 105 | </TD></TR> |
---|
| 106 | </TABLE> |
---|
| 107 | </BODY> |
---|
| 108 | <script language="Javascript"> |
---|
| 109 | |
---|
| 110 | function clearOut(){ |
---|
| 111 | $('#message').html(""); |
---|
| 112 | $('#img_photo').hide(); |
---|
| 113 | } |
---|
| 114 | |
---|
| 115 | function dispatch(_action, response, _search){ |
---|
| 116 | var a_response = jQuery.parseJSON(response); |
---|
| 117 | if(a_response){ |
---|
| 118 | |
---|
| 119 | if(a_response.result && a_response.result.auth) { |
---|
| 120 | setCookie ("auth", a_response.result.auth); |
---|
| 121 | setCookie ("server", $('#server').val()); |
---|
| 122 | $('#user').attr("disabled", true); |
---|
| 123 | $('#password').attr("disabled", true); |
---|
| 124 | $('#server').attr("disabled", true); |
---|
| 125 | |
---|
| 126 | $('#bt_servers').attr("disabled", true); |
---|
| 127 | $('#bt_login').attr("disabled", true); |
---|
| 128 | $('#bt_logout').attr("disabled", false); |
---|
| 129 | $('#bt_listFolders').attr("disabled", false); |
---|
| 130 | $('#bt_contacts').attr("disabled", false); |
---|
| 131 | $('#bt_catalog').attr("disabled", false); |
---|
| 132 | $('#sel_contacts').attr("disabled", false); |
---|
| 133 | $('#sel_catalog').attr("disabled", false); |
---|
| 134 | $('#search_contacts').attr("disabled", false); |
---|
| 135 | $('#search_catalog').attr("disabled", false); |
---|
| 136 | $('#search_folders').attr("disabled", false); |
---|
| 137 | |
---|
| 138 | } |
---|
| 139 | else if(_action == 'Logout' || (a_response.error && a_response.error.code == 7 )) { |
---|
| 140 | $('#user').attr("disabled", false); |
---|
| 141 | $('#password').attr("disabled", false); |
---|
| 142 | $('#server').attr("disabled", false); |
---|
| 143 | |
---|
| 144 | $('#bt_servers').attr("disabled", false); |
---|
| 145 | $('#bt_login').attr("disabled", false); |
---|
| 146 | $('#bt_logout').attr("disabled", true); |
---|
| 147 | $('#bt_contacts').attr("disabled", true); |
---|
| 148 | $('#bt_catalog').attr("disabled", true); |
---|
| 149 | $('#bt_listFolders').attr("disabled", true); |
---|
[6156] | 150 | $('#bt_del_folder').attr("disabled", true); |
---|
| 151 | $('#bt_add_folder').attr("disabled", true); |
---|
| 152 | $('#bt_rename_folder').attr("disabled", true); |
---|
[6092] | 153 | |
---|
| 154 | $('#folder_id').attr("disabled", true); |
---|
| 155 | $('#message_id').attr("disabled", true); |
---|
| 156 | $('#sel_contacts').attr("disabled", true); |
---|
| 157 | $('#sel_catalog').attr("disabled", true); |
---|
| 158 | $('#search_contacts').attr("disabled", true); |
---|
| 159 | $('#search_catalog').attr("disabled", true); |
---|
| 160 | $('#search_folders').attr("disabled", true); |
---|
[6156] | 161 | $('#new_folder_name').attr("disabled", true); |
---|
[6092] | 162 | |
---|
| 163 | clearOut(); |
---|
| 164 | setCookie ("auth", ''); |
---|
| 165 | setCookie ("server", ''); |
---|
| 166 | } |
---|
| 167 | } |
---|
| 168 | $('#message').append("<BR>"); |
---|
| 169 | if(a_response.error){ |
---|
| 170 | clearOut(); |
---|
| 171 | $('#message').append("<font color='red'>[erro "+a_response.error.code+"] "+a_response.error.message+"</font>"); |
---|
| 172 | return; |
---|
| 173 | } |
---|
| 174 | if(a_response.result){ |
---|
| 175 | if(typeof(a_response.result) != 'object') { |
---|
| 176 | $('#message').append("<font color='green'>"+a_response.result+"</font>"); |
---|
| 177 | return; |
---|
| 178 | } |
---|
| 179 | if(a_response.result.folders) { |
---|
| 180 | $("#folder_id").find('option').remove().end().append("<option value='-1'>Selecionar Pasta</option>"); |
---|
| 181 | for (var j in a_response.result.folders){ |
---|
| 182 | $("#folder_id").append("<option value='"+a_response.result.folders[j].folderID+"'>"+ |
---|
| 183 | a_response.result.folders[j].folderName+"</option>"); |
---|
| 184 | } |
---|
| 185 | $('#folder_id').attr("disabled", false); |
---|
[6156] | 186 | $('#new_folder_name').attr("disabled", false); |
---|
| 187 | $('#bt_del_folder').attr("disabled", false); |
---|
| 188 | $('#bt_add_folder').attr("disabled", false); |
---|
| 189 | $('#bt_rename_folder').attr("disabled", false); |
---|
[6092] | 190 | } |
---|
| 191 | if(a_response.result.messages && a_response.result.messages.length > 1) { |
---|
| 192 | $("#message_id").find('option').remove().end().append("<option value='-1'>Selecionar Mensagem</option>"); |
---|
| 193 | for (var j in a_response.result.messages){ |
---|
| 194 | var value = a_response.result.messages[j].msgSubject.length > 20 ? |
---|
| 195 | a_response.result.messages[j].msgSubject.substring(0, 20) : a_response.result.messages[j].msgSubject; |
---|
| 196 | |
---|
| 197 | a_response.result.messages[j].msgBodyResume = (a_response.result.messages[j].msgBodyResume); |
---|
| 198 | $("#message_id").append("<option value='"+a_response.result.messages[j].msgID+"'>"+ |
---|
| 199 | value+"</option>"); |
---|
| 200 | } |
---|
| 201 | $('#message_id').attr("disabled", false); |
---|
| 202 | } |
---|
| 203 | |
---|
| 204 | var select_id = (_search == '#search_contacts' ? '#sel_contacts' : (_search == '#search_catalog' ? '#sel_catalog' : '')); |
---|
| 205 | if(select_id) |
---|
| 206 | $(select_id).find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>"); |
---|
| 207 | |
---|
| 208 | if(a_response.result.contacts && a_response.result.contacts.length > 0) { |
---|
| 209 | for (var j in a_response.result.contacts){ |
---|
| 210 | var value = (a_response.result.contacts[j].contactFullName != null ? a_response.result.contacts[j].contactFullName : "Vazio (ID "+a_response.result.contacts[j].contactID+")"); |
---|
| 211 | if(select_id){ |
---|
| 212 | $(select_id).append("<option value='"+a_response.result.contacts[j].contactID+"'>"+ |
---|
| 213 | value+"</option>"); |
---|
| 214 | } |
---|
| 215 | } |
---|
| 216 | if(a_response.result.contacts && a_response.result.contacts.length == 1) { |
---|
| 217 | if(a_response.result.contacts[0].contactImagePicture){ |
---|
| 218 | base64Data = a_response.result.contacts[0].contactImagePicture; |
---|
| 219 | $('#img_photo').attr("src", "data:image/jpg;base64,"+ base64Data); |
---|
| 220 | $('#img_photo').show(); |
---|
| 221 | return; |
---|
| 222 | } |
---|
| 223 | else{ |
---|
| 224 | $('#img_photo').hide(); |
---|
| 225 | } |
---|
| 226 | } |
---|
| 227 | if(select_id){ |
---|
| 228 | $(select_id).attr("disabled", false); |
---|
| 229 | } |
---|
| 230 | } |
---|
| 231 | |
---|
| 232 | if(a_response.result.servers) { |
---|
| 233 | $("#server").find('option').remove().end().append("<option value=''>Selecionar Servidor</option>"); |
---|
| 234 | for (var j in a_response.result.servers){ |
---|
| 235 | $("#server").append("<option value='"+(a_response.result.servers[j].serverUrl+a_response.result.servers[j].serverContext)+"'>"+ |
---|
| 236 | a_response.result.servers[j].serverName+"</option>"); |
---|
| 237 | } |
---|
| 238 | $('#bt_version').attr("disabled", false); |
---|
| 239 | $('#bt_clear').attr("disabled", false); |
---|
| 240 | } |
---|
| 241 | |
---|
| 242 | var html = _.jsonreport(a_response.result); |
---|
| 243 | |
---|
| 244 | $('#message').html(html); |
---|
| 245 | } |
---|
| 246 | } |
---|
| 247 | |
---|
| 248 | function jExecute(_action){ |
---|
| 249 | var _server = getCookie('server') ? getCookie('server') : ($('#server').val() ? $('#server').val() : null); |
---|
| 250 | var _contactType; |
---|
| 251 | var _contactID; |
---|
| 252 | var _search; |
---|
| 253 | var _message; |
---|
| 254 | var _method = "POST"; |
---|
| 255 | |
---|
| 256 | if(_server == null && _action != 'AvailableServers'){ |
---|
| 257 | alert("Nenhum servidor foi definido."); |
---|
| 258 | return; |
---|
| 259 | } |
---|
| 260 | |
---|
| 261 | |
---|
| 262 | switch(_action){ |
---|
| 263 | case 'Mail/Folders': |
---|
| 264 | _search = '#search_folders'; |
---|
| 265 | break; |
---|
[6156] | 266 | case 'AddFolder': |
---|
| 267 | _action = 'Mail/AddFolder'; |
---|
| 268 | break; |
---|
| 269 | case 'DelFolder': |
---|
| 270 | _action = 'Mail/DelFolder'; |
---|
| 271 | break; |
---|
| 272 | case 'RenameFolder': |
---|
| 273 | _action = 'Mail/RenameFolder'; |
---|
| 274 | break; |
---|
[6092] | 275 | case 'getMessages': |
---|
| 276 | _action = 'Mail/Messages'; |
---|
| 277 | $("#message_id").find('option').remove().end().append("<option value='-1'>Selecionar Mensagem</option>"); |
---|
| 278 | break; |
---|
| 279 | case 'getMessage': |
---|
| 280 | _action = 'Mail/Messages'; |
---|
| 281 | break; |
---|
| 282 | case 'CleanTrash': |
---|
| 283 | _action = 'Mail/CleanTrash'; |
---|
| 284 | break; |
---|
| 285 | case 'SendSupportFeedback': |
---|
| 286 | _action = 'Mail/SendSupportFeedback'; |
---|
| 287 | _message = $('#text_message').val(); |
---|
| 288 | break; |
---|
| 289 | case 'getContacts': |
---|
| 290 | _action = 'Catalog/Contacts'; |
---|
| 291 | _search = '#search_contacts'; |
---|
| 292 | _contactType = '1'; |
---|
| 293 | $("#sel_contacts").find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>"); |
---|
| 294 | break; |
---|
| 295 | case 'getCatalog': |
---|
| 296 | _action = 'Catalog/Contacts'; |
---|
| 297 | _search = '#search_catalog'; |
---|
| 298 | _contactType = '2'; |
---|
| 299 | $("#sel_catalog").find('option').remove().end().append("<option value='-1'>Selecionar Contato</option>"); |
---|
| 300 | break; |
---|
| 301 | case 'getContactPicture': |
---|
| 302 | _action = 'Catalog/ContactPicture'; |
---|
| 303 | _contactID = '#sel_contacts'; |
---|
| 304 | _contactType = '1'; |
---|
| 305 | break; |
---|
| 306 | case 'getCatalogPicture': |
---|
| 307 | _action = 'Catalog/ContactPicture'; |
---|
| 308 | _contactID = '#sel_catalog'; |
---|
| 309 | _contactType = '2'; |
---|
| 310 | break; |
---|
[6311] | 311 | case 'GetMyPicture': |
---|
| 312 | _action = 'Catalog/ContactPicture'; |
---|
| 313 | _contactType = '2'; |
---|
| 314 | break; |
---|
[6092] | 315 | |
---|
| 316 | } |
---|
| 317 | |
---|
| 318 | $.ajax({ |
---|
| 319 | type: "POST", |
---|
| 320 | url: "restclient.php", |
---|
| 321 | data: {params: { |
---|
| 322 | user: $('#user').val(), |
---|
| 323 | password: $('#password').val(), |
---|
| 324 | server: _server, |
---|
| 325 | auth: getCookie('auth') != null ? getCookie('auth') : "", |
---|
| 326 | folderID: $('#folder_id').val(), |
---|
| 327 | msgID: $('#message_id').val(), |
---|
[6311] | 328 | contactID: (_contactID ? $(_contactID).val() : ""), |
---|
[6092] | 329 | message: _message, |
---|
| 330 | contactType: _contactType, |
---|
[6156] | 331 | search: $(_search).val(), |
---|
| 332 | newFolderName: $('#new_folder_name').val(), |
---|
[6092] | 333 | method: _method |
---|
| 334 | }, |
---|
| 335 | action: _action |
---|
| 336 | }, |
---|
| 337 | beforeSend: function() { |
---|
| 338 | clearOut(); |
---|
| 339 | $('#loader_msg').html("Aguarde, solicitando informações ..."); |
---|
| 340 | $('#loader').show(); |
---|
| 341 | } |
---|
| 342 | , |
---|
| 343 | success: function(response) { |
---|
| 344 | dispatch(_action, response, _search); |
---|
| 345 | $('#loader').hide(); |
---|
| 346 | } |
---|
| 347 | , |
---|
| 348 | error: function(response) { |
---|
| 349 | alert("Serviço indisponÃvel"); |
---|
| 350 | $('#loader').hide(); |
---|
| 351 | } |
---|
| 352 | |
---|
| 353 | }); |
---|
| 354 | |
---|
| 355 | } |
---|
| 356 | |
---|
| 357 | function getCookie(c_name) |
---|
| 358 | { |
---|
| 359 | var i,x,y,ARRcookies=document.cookie.split(";"); |
---|
| 360 | for (i=0;i<ARRcookies.length;i++) |
---|
| 361 | { |
---|
| 362 | x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); |
---|
| 363 | y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); |
---|
| 364 | x=x.replace(/^\s+|\s+$/g,""); |
---|
| 365 | if (x==c_name) |
---|
| 366 | { |
---|
| 367 | if(y == "") |
---|
| 368 | return null; |
---|
| 369 | else |
---|
| 370 | return unescape(y); |
---|
| 371 | } |
---|
| 372 | } |
---|
| 373 | } |
---|
| 374 | |
---|
| 375 | function setCookie(c_name,value,exdays) |
---|
| 376 | { |
---|
| 377 | var exdate=new Date(); |
---|
| 378 | exdate.setDate(exdate.getDate() + exdays); |
---|
| 379 | var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); |
---|
| 380 | document.cookie=c_name + "=" + c_value; |
---|
| 381 | } |
---|
| 382 | // Reset values |
---|
| 383 | var isLoggedIn = false; |
---|
| 384 | if(getCookie('auth') != null && getCookie('server') != null){ |
---|
| 385 | isLoggedIn = true; |
---|
| 386 | } |
---|
| 387 | |
---|
| 388 | $('#user').attr("disabled", isLoggedIn ? true : false); |
---|
| 389 | $('#password').attr("disabled", isLoggedIn ? true : false); |
---|
| 390 | $('#server').attr("disabled", isLoggedIn ? true : false); |
---|
| 391 | $('#bt_servers').attr("disabled", isLoggedIn ? true : false); |
---|
| 392 | $('#bt_login').attr("disabled", isLoggedIn ? true : false); |
---|
| 393 | $('#bt_logout').attr("disabled", isLoggedIn ? false : true); |
---|
| 394 | $('#bt_listFolders').attr("disabled", isLoggedIn ? false : true); |
---|
| 395 | $('#folder_id').attr("disabled", isLoggedIn ? false : true); |
---|
| 396 | $('#message_id').attr("disabled", isLoggedIn ? false : true); |
---|
| 397 | $('#contact_id').attr("disabled", isLoggedIn ? false : true); |
---|
| 398 | $('#sel_contacts').attr("disabled", isLoggedIn ? false : true); |
---|
| 399 | $('#sel_catalog').attr("disabled", isLoggedIn ? false : true); |
---|
| 400 | $('#search_contacts').attr("disabled", isLoggedIn ? false : true); |
---|
| 401 | $('#search_catalog').attr("disabled", isLoggedIn ? false : true); |
---|
| 402 | $('#search_folders').attr("disabled", isLoggedIn ? false : true); |
---|
[6156] | 403 | $('#new_folder_name').attr("disabled", isLoggedIn ? false : true); |
---|
[6092] | 404 | $('#bt_contacts').attr("disabled", isLoggedIn ? false : true); |
---|
| 405 | $('#bt_catalog').attr("disabled", isLoggedIn ? false : true); |
---|
[6156] | 406 | $('#bt_del_folder').attr("disabled", isLoggedIn ? false : true); |
---|
| 407 | $('#bt_add_folder').attr("disabled", isLoggedIn ? false : true); |
---|
| 408 | $('#bt_rename_folder').attr("disabled", isLoggedIn ? false : true); |
---|
[6092] | 409 | $('#bt_version').attr("disabled", false); |
---|
| 410 | $('#bt_clear').attr("disabled", false); |
---|
| 411 | </script> |
---|
| 412 | </html> |
---|