PageRenderTime 107ms CodeModel.GetById 20ms app.highlight 43ms RepoModel.GetById 37ms app.codeStats 1ms

/modules/visitstat/details_robot.php

https://bitbucket.org/meianki/voguersurlavague
PHP | 428 lines | 338 code | 37 blank | 53 comment | 90 complexity | 56aeefe059534dc35a9caa36984ac0d2 MD5 | raw file
  1<?
  2/*
  3 -------------------------------------------------------------------------
  4 AllMyStats V1.39 - Statistiques de fr�quentation visiteurs et robots
  5 -------------------------------------------------------------------------
  6 Copyright (C) 2000 - C�dric TATANGELO (Cedstat)
  7 Copyright (C) 2008 - Herve Seywert
  8 -------------------------------------------------------------------------
  9 Web:   http://www.wertronic.com
 10 -------------------------------------------------------------------------
 11 Ce programme est libre, vous pouvez le redistribuer et/ou le modifier
 12 selon les termes de la Licence Publique G�nrale GNU publi�e par la Free
 13 Software Foundation .
 14 -------------------------------------------------------------------------
 15*/
 16
 17if($when==""){
 18	$when = date('d/m/Y',strtotime($UTC." hours", strtotime(date("Y-m-d H:i:s"))));
 19}
 20
 21		//-----------------------------------------------------------------------------
 22		//Mise en en forme ($AllBots) pour preg_match des bot connus (dans la table + bot en g�n�ral (bot, spider , etc)
 23		$result1=mysql_query("select bot_name, org_name, crawler_url, crawler_info from ".TABLE_CRAWLER.""); 
 24		$AllBots = '/Bot|Slurp|Scooter|Spider|crawl|';
 25		while($row=mysql_fetch_array($result1)){
 26			$Form_chaine = str_replace('/','\/',$row['bot_name']);
 27			$Form_chaine = str_replace('+','\+',$Form_chaine);
 28			$Form_chaine = str_replace('(','\(',$Form_chaine);
 29			$Form_chaine = str_replace(')','\)',$Form_chaine);
 30			$AllBots .= $Form_chaine.'|';
 31		}
 32		$AllBots = substr($AllBots,0,strlen($AllBots)-1); //delete last "|"
 33		$AllBots .= '/i';
 34		//echo $AllBots;
 35		//------------------------ Mise en tableau de la table bad user agent ---------
 36		unset($Matrice_bad_user_agent);
 37		$Bad_User_Agent=mysql_query("select * from ".TABLE_BAD_USER_AGENT.""); //
 38		while($bad_agents=mysql_fetch_array($Bad_User_Agent)){ // Mise en tableau des bad agents
 39			$Matrice_bad_user_agent[] = array($bad_agents['user_agent'], $bad_agents['info'],$bad_agents['type']);
 40		}
 41		//-----------------------------------------------------------------------------
 42
 43?>
 44<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
 45  <TBODY>
 46  <TR>
 47    <TD><!-- Data BEGIN -->
 48      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
 49        <TBODY>
 50        <TR>
 51          <TH align="center" valign="middle" class=TABLETITLE>
 52			<form name="form1" method="post" action="<? $PHP_SELF; ?>">
 53				<input type="hidden" name="type"  value="DetailsRobot">
 54				<input type="hidden" name="when"  value="<? echo $when; ?>">
 55			    <input class="submit" name="refresh" type="submit" value="<? echo $MSG_REFRESH; ?>" alt="<? echo $MSG_REFRESH; ?>" title="<? echo $MSG_REFRESH; ?>">
 56			</form>
 57			&nbsp;&nbsp;<? echo $MSG_STATISTIQUE_DATE.$when; ?>
 58		 </TH>
 59		</TR>
 60</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
 61<?
 62
 63		//#########################################################################################
 64		//------------------------- Include tableau details robots ------------------------------
 65		$result=mysql_query("select * from ".TABLE_VISITEUR." where date='$when'");
 66		$nbr_result=mysql_num_rows($result);
 67
 68		$AfficheOS=false;
 69		$AfficheNav=false;
 70		$AfficheRobots=true;
 71		include('tab_os_nav_robots.php');
 72
 73		//########################################################################################
 74								//ROBOTS Visites par plage horaire
 75		//-----------------------------------------------------------------------------------------
 76
 77		for($i=1;$i<=24;$i++){
 78			$hour="heure$i";
 79			$var="v_heure$i";
 80			$$var=0;
 81			$$hour=0;
 82		}
 83
 84		//recup des donn�es
 85		$result=mysql_query("select v.code, v.agent, p.nb_visite, p.heure, p.page from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where v.date like '$when' and v.code=p.code order by p.heure ASC");
 86
 87// Pour comptabilise les visiteurs simultan�s par heure ##
 88$code_unique_hre1 = array();
 89$code_unique_hre2 = array();
 90$code_unique_hre3 = array();
 91$code_unique_hre4 = array();
 92$code_unique_hre5 = array();
 93$code_unique_hre6 = array();
 94$code_unique_hre7 = array();
 95$code_unique_hre8 = array();
 96$code_unique_hre9 = array();
 97$code_unique_hre10 = array();
 98$code_unique_hre11 = array();
 99$code_unique_hre12 = array();
100$code_unique_hre13 = array();
101$code_unique_hre14 = array();
102$code_unique_hre15 = array();
103$code_unique_hre16 = array();
104$code_unique_hre17 = array();
105$code_unique_hre18 = array();
106$code_unique_hre19 = array();
107$code_unique_hre20 = array();
108$code_unique_hre21 = array();
109$code_unique_hre22 = array();
110$code_unique_hre23 = array();
111$code_unique_hre24 = array();
112#############################################################
113
114		$code_unique = array();
115		while($row=mysql_fetch_array($result)){
116			//---------------------------------------
117			//-- Exclusion des Bad user agent reconnus (non compt� comme visiteur) ----
118			$User_Agent=$row[agent];
119			$trash=false;
120			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
121				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
122					$trash=true;
123				}
124			}
125			//---------------------------------------
126			//Visistes et pages vues par les robots, hors bad user agent
127			//Note: les barres visiteurs sont incr�ment� de 1 pour l'heure de la 1ere visite
128			//		les barres "pages visit�es" sont incr�ment�es par heure 
129			//		(si une m?me page est visit�e par un m?me visiteur la barre est incr�ment�e sur l'heure de la 1ere visite) pour eviter de remplir la table si spam
130
131			if(preg_match($AllBots, $row[agent]) && $trash==false) {		
132				################################ Pour comptabilise les visiteurs simultan�s par heure ################################################
133				$heure=$row[heure];
134				if(($heure>=0)&($heure<1)){	$heure1=$heure1+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre1)) {$v_heure1++; $code_unique_hre1[] = $row[code]; }}
135				if(($heure>=1)&($heure<2)){	$heure2=$heure2+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre2)) { $v_heure2++; $code_unique_hre2[] = $row[code]; }}
136				if(($heure>=2)&($heure<3)){	$heure3=$heure3+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre3)) { $v_heure3++; $code_unique_hre3[] = $row[code]; }}
137				if(($heure>=3)&($heure<4)){	$heure4=$heure4+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre4)) { $v_heure4++; $code_unique_hre4[] = $row[code]; }}
138				if(($heure>=4)&($heure<5)){	$heure5=$heure5+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre5)) { $v_heure5++; $code_unique_hre5[] = $row[code]; }}
139				if(($heure>=5)&($heure<6)){	$heure6=$heure6+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre6)) { $v_heure6++; $code_unique_hre6[] = $row[code]; }}
140				if(($heure>=6)&($heure<7)){	$heure7=$heure7+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre7)) { $v_heure7++; $code_unique_hre7[] = $row[code]; }}
141				if(($heure>=7)&($heure<8)){	$heure8=$heure8+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre8)) { $v_heure8++; $code_unique_hre8[] = $row[code]; }}
142				if(($heure>=8)&($heure<9)){	$heure9=$heure9+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre9)) { $v_heure9++; $code_unique_hre9[] = $row[code]; }}
143				if(($heure>=9)&($heure<10)){ $heure10=$heure10+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre10)) { $v_heure10++; $code_unique_hre10[] = $row[code]; }}
144				if(($heure>=10)&($heure<11)){ $heure11=$heure11+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre11)) { $v_heure11++; $code_unique_hre11[] = $row[code]; }}
145				if(($heure>=11)&($heure<12)){ $heure12=$heure12+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre12)) { $v_heure12++; $code_unique_hre12[] = $row[code]; }}
146				if(($heure>=12)&($heure<13)){ $heure13=$heure13+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre13)) { $v_heure13++; $code_unique_hre13[] = $row[code]; }}
147				if(($heure>=13)&($heure<14)){ $heure14=$heure14+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre14)) { $v_heure14++; $code_unique_hre14[] = $row[code]; }}
148				if(($heure>=14)&($heure<15)){ $heure15=$heure15+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre15)) { $v_heure15++; $code_unique_hre15[] = $row[code]; }}
149				if(($heure>=15)&($heure<16)){ $heure16=$heure16+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre16)) { $v_heure16++; $code_unique_hre16[] = $row[code]; }}
150				if(($heure>=16)&($heure<17)){ $heure17=$heure17+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre17)) { $v_heure17++; $code_unique_hre17[] = $row[code]; }}
151				if(($heure>=17)&($heure<18)){ $heure18=$heure18+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre18)) { $v_heure18++; $code_unique_hre18[] = $row[code]; }}
152				if(($heure>=18)&($heure<19)){ $heure19=$heure19+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre19)) { $v_heure19++; $code_unique_hre19[] = $row[code]; }}
153				if(($heure>=19)&($heure<20)){ $heure20=$heure20+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre20)) { $v_heure20++; $code_unique_hre20[] = $row[code]; }}
154				if(($heure>=20)&($heure<21)){ $heure21=$heure21+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre21)) { $v_heure21++; $code_unique_hre21[] = $row[code]; }}
155				if(($heure>=21)&($heure<22)){ $heure22=$heure22+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre22)) { $v_heure22++; $code_unique_hre22[] = $row[code]; }}
156				if(($heure>=22)&($heure<23)){ $heure23=$heure23+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre23)) { $v_heure23++; $code_unique_hre23[] = $row[code]; }}
157				if(($heure>=23)&($heure<24)){ $heure24=$heure24+$row[nb_visite]; if (!in_array($row[code], $code_unique_hre24)) { $v_heure24++; $code_unique_hre24[] = $row[code]; }}
158
159				###########################################################################################################################################
160			}
161		}// End while
162		unset($code_unique);
163
164		$max=0;
165		$i=1;
166		while($i<=24){
167			$heure="heure$i";
168			if($$heure>$max){
169				$max=$$heure;
170			}
171			$i++;
172		}
173?>
174<br>
175<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
176  <TBODY>
177  <TR>
178    <TD><!-- Data BEGIN -->
179      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
180        <TBODY>
181        <TR>
182          <TH class=TABLETITLE><? echo $MSG_ROBOTS_STAT_GRAF_TITRE; ?></TH>
183          </TR>
184        <TR>
185          <TD colSpan=2><!-- Rows BEGIN -->
186            <TABLE border=0 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
187              <TBODY>
188              <TR>
189          <td rowspan="2"><B><SPAN class=PAGESVUES><? echo $MSG_PAGESVISITES; ?></SPAN><BR>& 
190		  	<SPAN class=VISITES><? echo $MSG_VISITE; ?></SPAN></B>
191		  </TD>
192          <?
193
194			//Pour affichage echelle
195			$EchyMin = '0';
196			if($max!=0) {
197			  for($i=1;$i<=24;$i++){
198				$hour="heure$i";
199				$indice=@bcdiv($$hour,$max,2); $hauteur=bcmul($indice,120.00,2);
200				if ($MaxHauteur <= $hauteur) { $MaxHauteur = $hauteur; }
201			  }
202			} else {// pour ne pas afficher les 0 si $max = 0
203				$EchyMin  = '';	
204		  		$max = ''; 
205			}
206
207		  echo "<td nowrap=nowrap valign=\"top\">".$max."</td>";
208		  echo "<td rowspan=\"2\" valign=\"bottom\">
209			<img src=\"images/histo-v.gif\" height=\"".$MaxHauteur."\" width=\"1\" alt=\"\" title=\"\">
210		  </td>";
211
212          for($i=1;$i<=24;$i++){
213          	$hour="heure$i";
214          	$v_hour="v_heure$i";
215          	echo "<td rowspan=\"2\" valign=\"bottom\">";
216          	if($max!=0) {
217         		$indice=@bcdiv($$hour,$max,2); $hauteur=bcmul($indice,120.00,2);
218        	}
219          	echo "<img src=\"images/histo-v.gif\" height=\"".$hauteur."\" width=\"8\" alt=\"".$$hour."\" title=\"".$$hour."\"><img src=\"images/histo-vv.gif\" height=\"";
220          	if($max!=0){
221          		$indice=@bcdiv($$v_hour,$max,2); $hauteur=bcmul($indice,120.00,2);  
222          	}
223          	echo $hauteur;
224          	echo "\" width=\"8\" alt=\"".$$v_hour."\" title=\"".$$v_hour."\"></td>";
225          }
226
227		?>
228  		  </TR>
229		  <tr>
230			 <td align="right" valign="bottom"><?php echo $EchyMin; ?></td>
231		  </tr>
232
233              <TR>
234                <TD><B><? echo $MSG_GRAF_HEURE; ?></B></TD>
235         <?
236 	     echo "<td align=center>&nbsp;</td><td align=center>&nbsp;</td>"; // Pour echelle
237         for($i=0;$i<24;$i++){
238	         if ($horloge==12 && $i>12){ 
239	         	$num=$i-12; 
240	         } else {
241	         	$num=$i;
242	         }
243	         echo "<td align=center>".$num."</td>";
244         }
245         if ($horloge==12){
246         	echo "<tr><td></td><td align=center colspan=12>AM</td><td align=center colspan=12>PM</td></tr>";
247         }
248         ?>
249</TR></TBODY></TABLE><!-- Rows END --></TD></TR><!-- footer -->
250        <TR>
251		  </TR></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
252
253<?
254//##############################################################################################
255	//--------------------------- Pages vues par les robots --------------------------
256
257	$result=mysql_query("select * from ".TABLE_VISITEUR." v, ".TABLE_PAGE." p where v.date like '$when' and v.code=p.code order by page");
258	$row=mysql_fetch_array($result);
259
260	$url_robots=$row[page];
261	$nb_url_robots=0;
262	$nb_vis_robots=0;
263	
264	while($row=mysql_fetch_array($result)){
265			//---------------------------------------
266		$User_Agent=$row[agent];
267		$trash=false;
268		for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
269			if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
270				$trash=true;
271			}
272		}
273			//---------------------------------------
274
275		if(preg_match($AllBots, $row[agent]) && $trash==false) {
276	
277			$page_robot=$row[page];
278			if($url_robots==$page_robot){
279				$nb_url_robots=$nb_url_robots+$row[nb_visite];
280				$nb_vis_robots++;	
281			} else {
282				$nb_robot=$nb_url_robots*100; 
283				if($max_visite!=0){
284					$pourcent_robot=@bcdiv($nb_robot,$max_visite,2);
285				}
286				$page_vue_robots[]= array($url_robots,$nb_vis_robots, $nb_url_robots, $pourcent_robot);
287				$url_robots=$page_robot;
288				$nb_url_robots=$row[nb_visite];
289				$nb_vis_robots=1;
290			}
291		}
292
293	} // Fin while
294	//---------------------------------------------------------------------------------------
295	//------------ Affichage page visit�s par les robots ------------------------------------
296?>
297<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
298  <TBODY>
299  <TR>
300    <TD><!-- Data BEGIN -->
301
302      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
303        <TBODY>
304        <TR>
305          <TH class=TABLETITLE><? echo $MSG_ROBOTS_PAGES_VISITES; ?></TH>
306          </TR>
307        <TR>
308          <TD colSpan=2><!-- Rows BEGIN -->
309            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
310              <TBODY>
311              <TR>
312                <TH><? echo $MSG_PAGE; ?></TH>
313                <TH><? echo $MSG_VISITE; ?></TH>
314                <TH><? echo $MSG_PAGESVISITES; ?></TH>
315                <TH><? echo $MSG_PAGES_POURCENTAGE; ?></TH></TR>
316<?
317
318	//----------------------------------------
319	$nb_robot=$nb_url_robots*100; 
320    if($max_visite!=0){
321    	$pourcent_robot=@bcdiv($nb_robot,$max_visite,2);
322    }
323	$page_vue_robots[]= array($url_robots,$nb_vis_robots, $nb_url_robots, $pourcent_robot);
324
325	@usort($page_vue_robots, "CompareValeurs");
326	$cpt=0;
327
328	while ($page_vue_robots[$cpt][0]<>""){
329		echo "<tr><td>".utf8_decode($page_vue_robots[$cpt][0])."</td><td align=center>".$page_vue_robots[$cpt][1]."</td><td align=center>".$page_vue_robots[$cpt][2]."</td><td align=center>".$page_vue_robots[$cpt][3]."%</td></tr>";
330		$cpt++;
331	}
332?>      
333 </TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
334<?
335	//------------ Affichage Origine g�ographique des robots ----------------------
336?>
337<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
338  <TBODY>
339  <TR>
340    <TD><!-- Data BEGIN -->
341      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
342        <TBODY>
343        <TR>
344          <TH class=TABLETITLE><? echo $MSG_ROBOTS_ORG_GEO; ?></TH>
345          </TR>
346        <TR>
347          <TD colSpan=2><!-- Rows BEGIN -->
348            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
349              <TBODY>
350              <TR>
351                <TH><? echo $MSG_DOMAIN; ?></TH>
352                <TH><? echo $MSG_NB_VISITEURS; ?></TH>
353                <TH><? echo $MSG_PAGESVISITES; ?></TH>
354			  </TR>
355      <?
356
357		$result=mysql_query("select agent, nb_visite ,domaine from ".TABLE_VISITEUR." where date='$when'");
358		while($row=mysql_fetch_array($result)){
359			$Country[] .= $row['domaine'];
360		}
361		$Country=@array_unique($Country);
362		@array_multisort ($Country, SORT_ASC); 
363
364		//----------------------------------
365		//Important mise ? 0 des variables
366		unset($Tab_country_pages_visiteurs);
367		for($i=0;$i<count($Country);$i++){ //Comment faire autrement
368			$Nb_visites = 'Nb_'.$Country[$i];
369			$$Nb_visites = 0;
370	
371			$Nb_pages_visites = $Country[$i];
372			$$Nb_pages_visites = 0;
373		}
374		//-----------------------------------
375
376		$result=mysql_query("select * from ".TABLE_VISITEUR." where date='$when'");
377		while($row=mysql_fetch_array($result)){
378			//---------------------------------------
379			$User_Agent=$row[agent];
380			$trash=false;
381			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
382				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
383					$trash=true;
384				}
385			}
386				//---------------------------------------
387			if(preg_match($AllBots, $row[agent]) && $trash==false) {
388				for($i=0;$i<count($Country);$i++){
389					if($row[domaine]==$Country[$i]) {
390						//echo $row[domaine].'<br>';
391						$Nb_visites = 'Nb_'.$Country[$i];
392						$$Nb_visites = $$Nb_visites + 1;
393	
394						$Nb_pages_visites = $Country[$i];
395						$$Nb_pages_visites = $$Nb_pages_visites + $row['nb_visite'];
396	
397						$Tab_country_pages_visiteurs[$i] = array($Country[$i],$$Nb_pages_visites,$$Nb_visites);
398					}
399				}
400			}
401		}
402		//--------- Affichage des r�sultats --------------------------
403		@usort($Tab_country_pages_visiteurs,"CompareValeurs");
404		//array_multisort($Tab_country_pages_visiteurs, SORT_ASC);
405		$indice = @bcdiv(1,($Tab_country_pages_visiteurs[0][1]/300),2); //proportion en rapport au plus grand nb de pages visit�s
406
407		for($i=0;$i<count($Tab_country_pages_visiteurs);$i++){
408			if ($Tab_country_pages_visiteurs[$i][0]=='') { $Tab_country_pages_visiteurs[$i][0] = $MSG_ORIGIN_UNKNOWN;}
409			echo "<tr>
410			<td> 
411			<b>".$Tab_country_pages_visiteurs[$i][0]."</b>
412			</td>
413			<td align=\"left\">
414			<img src=\"images/histo-h.gif\" width=\""; 
415			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][2],$indice,2);  
416			echo $hauteur; 
417			echo"\" height=\"8\">".$Tab_country_pages_visiteurs[$i][2].
418			"</td>
419			<td align=\"left\">
420			<img src=\"images/histo-h.gif\" width=\""; 
421			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][1],$indice,2);  
422			echo $hauteur; 
423			echo"\" height=\"8\">".$Tab_country_pages_visiteurs[$i][1].
424			"</td>";	
425		}
426
427?>    
428</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><br>