﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-tambc-文章分类-Java</title><link>http://www.blogjava.net/tambc/category/18607.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 06 Nov 2007 08:12:57 GMT</lastBuildDate><pubDate>Tue, 06 Nov 2007 08:12:57 GMT</pubDate><ttl>60</ttl><item><title>HttpClient和HtmlParser配合实现自动登陆系统抽取页面信息</title><link>http://www.blogjava.net/tambc/articles/95320.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Mon, 22 Jan 2007 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/95320.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/95320.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/95320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/95320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/95320.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /**/										/*																						 * Main.java * * Created on 2007年1月19日, 上午9:14 * * To change this template, choose Tools | Template Manager * and open the template in the editor. 			...&nbsp;&nbsp;<a href='http://www.blogjava.net/tambc/articles/95320.html'>阅读全文</a><img src ="http://www.blogjava.net/tambc/aggbug/95320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2007-01-22 13:42 <a href="http://www.blogjava.net/tambc/articles/95320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Acegi＋hibernate 动态实现基于角色的权限管理</title><link>http://www.blogjava.net/tambc/articles/89905.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Mon, 25 Dec 2006 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89905.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89905.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89905.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近在做项目遇到了权限管理，用户要求可以自己建立不同的角色对系统的资源进行控制， 不同的用户有不同的角色，又恰恰框架中用到了struts＋spring＋hibernate，要求在web层调用 业务逻辑层 时不考虑权限，web层可以控制用户的显示界面，逻辑层处理用户权限问题。 想来想去好像只有spring 的aop 可以做到，在调用到 接口 中的方法时，首先检查用户的权限，如果检查通过则继续执行，否...&nbsp;&nbsp;<a href='http://www.blogjava.net/tambc/articles/89905.html'>阅读全文</a><img src ="http://www.blogjava.net/tambc/aggbug/89905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-25 14:51 <a href="http://www.blogjava.net/tambc/articles/89905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>服务器是怎么要求客户端强行弹出身份验证窗口的</title><link>http://www.blogjava.net/tambc/articles/89889.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Mon, 25 Dec 2006 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89889.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89889.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89889.html</trackback:ping><description><![CDATA[我们访问tomcat服务器的时候如果试图访问Tomcat Manager就会发现浏览器弹出一个登陆对话框，和我们平常的网页对话框不同，而且查看页面的时候查不到生成这个对话框的代码，禁止脚本也毫无作用。手头的资料对这个东西没有任何介绍，它到底是怎么弹出来的呢？<br /><br /><br />用jmeter创建一个http request的sampler，再建一个view result tree的lisenter来看看服务器返回了些什么污七八糟的：<br /><br />HTTP response headers:<br />HTTP/1.1 401 Unauthorized<br />Pragma: No-cache<br />Cache-Control: no-cache<br />Expires: Thu, 01 Jan 1970 08:00:00 CST<br />WWW-Authenticate: Basic realm="Tomcat Manager Application"<br />Content-Type: text/html;charset=utf-8<br />Content-Length: 954<br />Date: Thu, 30 Jun 2005 09:27:26 GMT<br />Server: Apache-Coyote/1.1<br /><br /><br />嘿嘿，原来是一个带WWW-Authenticate的401错误啊。自己写个jsp模拟一下看看怎么样：<br /><br />&lt;%<br />response.addHeader("WWW-Authenticate","Basic realm=\"Tomcat Manager Application\"");<br />response.sendError(401,"Unauthorized");<br />%&gt;<br /><br />果然，一个一模一样的登陆窗口跳出来了。不过身份验证的具体过程要怎么做呢？google了一下，果然看到好东西了： <a href="http://www.chinadata.cn/showContent.asp?projectID=2083">http://www.chinadata.cn/showContent.asp?projectID=2083</a><br /><br /><br /><br />按照说明构造了一个jsp文件：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />sun.misc.BASE64Decoder decoder </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> sun.misc.BASE64Decoder();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> authenticated </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />String authorization </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> request.getHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">authorization</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">authorization:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">authorization);<br /><img id="Codehighlighter1_235_1321_Open_Image" onclick="this.style.display='none'; Codehighlighter1_235_1321_Open_Text.style.display='none'; Codehighlighter1_235_1321_Closed_Image.style.display='inline'; Codehighlighter1_235_1321_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_235_1321_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_235_1321_Closed_Text.style.display='none'; Codehighlighter1_235_1321_Open_Image.style.display='inline'; Codehighlighter1_235_1321_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (authorization </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_235_1321_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_235_1321_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_277_766_Open_Image" onclick="this.style.display='none'; Codehighlighter1_277_766_Open_Text.style.display='none'; Codehighlighter1_277_766_Closed_Image.style.display='inline'; Codehighlighter1_277_766_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_277_766_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_277_766_Closed_Text.style.display='none'; Codehighlighter1_277_766_Open_Image.style.display='inline'; Codehighlighter1_277_766_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (authorization.startsWith(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Basic</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))</span><span id="Codehighlighter1_277_766_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_277_766_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    authorization </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> authorization.substring(authorization.indexOf(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] bytes </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> decoder.decodeBuffer(authorization);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    authorization </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> String(bytes);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String userName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> authorization.substring(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,authorization.indexOf(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> authorization.substring(authorization.indexOf(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">userName:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">userName);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">password:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">password);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    authenticated </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">userName.equals(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> password.equals(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_811_1319_Open_Image" onclick="this.style.display='none'; Codehighlighter1_811_1319_Open_Text.style.display='none'; Codehighlighter1_811_1319_Closed_Image.style.display='inline'; Codehighlighter1_811_1319_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_811_1319_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_811_1319_Closed_Text.style.display='none'; Codehighlighter1_811_1319_Open_Image.style.display='inline'; Codehighlighter1_811_1319_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  }</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (authorization.startsWith(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Digest</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))</span><span id="Codehighlighter1_811_1319_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_811_1319_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String userName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> authorization.substring(authorization.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">username=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    userName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> userName.substring(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">username=\</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">.length());</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    userName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> userName.substring(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,userName.indexOf(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> authorization.substring(authorization.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">response=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> password.substring(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">response=\</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">.length());</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> password.substring(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,password.indexOf(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    authenticated </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">userName.equals(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> password.equals(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3cf1135d3b8e20dd9272d06288569a56</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1342_1570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1342_1570_Open_Text.style.display='none'; Codehighlighter1_1342_1570_Closed_Image.style.display='inline'; Codehighlighter1_1342_1570_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1342_1570_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1342_1570_Closed_Text.style.display='none'; Codehighlighter1_1342_1570_Open_Image.style.display='inline'; Codehighlighter1_1342_1570_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">authenticated)</span><span id="Codehighlighter1_1342_1570_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1342_1570_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">   response.addHeader("WWW-Authenticate","Digest realm=\"Tomcat Manager Application\"");</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">  response.addHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WWW-Authenticate</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Basic realm=\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Tomcat Manager Application\</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  response.sendError(</span><span style="COLOR: #000000">401</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Unauthorized</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1575_1605_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1575_1605_Open_Text.style.display='none'; Codehighlighter1_1575_1605_Closed_Image.style.display='inline'; Codehighlighter1_1575_1605_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1575_1605_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1575_1605_Closed_Text.style.display='none'; Codehighlighter1_1575_1605_Open_Image.style.display='inline'; Codehighlighter1_1575_1605_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />}</span></span><span style="COLOR: #0000ff">else</span><span id="Codehighlighter1_1575_1605_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1575_1605_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">%&gt;</span></div>cool，和tomcat一模一样的登陆页面做出来了。<br /><br />用户名密码均为abc，hard code在代码里面了。不过还没查到Digest方式的情况下是对哪些信息进行MD5的。<img src ="http://www.blogjava.net/tambc/aggbug/89889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-25 14:02 <a href="http://www.blogjava.net/tambc/articles/89889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的ubb类</title><link>http://www.blogjava.net/tambc/articles/89556.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Fri, 22 Dec 2006 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89556.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89556.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89556.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: import				  java.util.regex. 				*				 ; 				//				 导入正则表达式包中的类 																								 				/** */										/**						  *  使网页支持ubbcode. *  						@author						  shanwei...&nbsp;&nbsp;<a href='http://www.blogjava.net/tambc/articles/89556.html'>阅读全文</a><img src ="http://www.blogjava.net/tambc/aggbug/89556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-22 16:22 <a href="http://www.blogjava.net/tambc/articles/89556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java版的escape和unescape</title><link>http://www.blogjava.net/tambc/articles/89555.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Fri, 22 Dec 2006 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89555.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89555.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89555.html</trackback:ping><description><![CDATA[从网上收集了两个.<br /><br />　　/**<br />　　* JavaScript escape/unescape 编码的 Java 实现<br />　　* author jackyz<br />　　* keep this copyright info while using this method by free<br />　　*/<br />　　public class Escape {<br />　　private final static String[] hex = {<br />　　"00","01","02","03","04","05","06","07","08","09","0A","0B","0C","0D","0E","0F",<br />　　"10","11","12","13","14","15","16","17","18","19","1A","1B","1C","1D","1E","1F",<br />　　"20","21","22","23","24","25","26","27","28","29","2A","2B","2C","2D","2E","2F",<br />　　"30","31","32","33","34","35","36","37","38","39","3A","3B","3C","3D","3E","3F",<br />　　"40","41","42","43","44","45","46","47","48","49","4A","4B","4C","4D","4E","4F",<br />　　"50","51","52","53","54","55","56","57","58","59","5A","5B","5C","5D","5E","5F",<br />　　"60","61","62","63","64","65","66","67","68","69","6A","6B","6C","6D","6E","6F",<br />　　"70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E","7F",<br />　　"80","81","82","83","84","85","86","87","88","89","8A","8B","8C","8D","8E","8F",<br />　　"90","91","92","93","94","95","96","97","98","99","9A","9B","9C","9D","9E","9F",<br />　　"A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","AA","AB","AC","AD","AE","AF",<br />　　"B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","BA","BB","BC","BD","BE","BF",<br />　　"C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","CA","CB","CC","CD","CE","CF",<br />　　"D0","D1","D2","D3","D4","D5","D6","D7","D8","D9","DA","DB","DC","DD","DE","DF",<br />　　"E0","E1","E2","E3","E4","E5","E6","E7","E8","E9","EA","EB","EC","ED","EE","EF",<br />　　"F0","F1","F2","F3","F4","F5","F6","F7","F8","F9","FA","FB","FC","FD","FE","FF"<br />　　};<br />　　private final static byte[] val = {<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,<br />　　0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F<br />　　};<br />　　public static String escape(String s) {<br />　　StringBuffer sbuf = new StringBuffer();<br />　　int len = s.length();<br />　　for (int i = 0; i &lt; len; i++) {<br />　　int ch = s.charAt(i);<br />　　if (ch == ' ') {　　　　　　　　　　　　// space : map to '+'<br />　　sbuf.append('+');<br />　　} else if ('A' &lt;= ch &amp;&amp; ch &lt;= 'Z') {　　// 'A'..'Z' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if ('a' &lt;= ch &amp;&amp; ch &lt;= 'z') {　　// 'a'..'z' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if ('0' &lt;= ch &amp;&amp; ch &lt;= '9') {　　// '0'..'9' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if (ch == '-' || ch == '_'　　　 // unreserved : as it was<br />　　|| ch == '.' || ch == '!'<br />　　|| ch == '~' || ch == '*'<br />　　|| ch == '\'' || ch == '('<br />　　|| ch == ')') {<br />　　sbuf.append((char)ch);<br />　　} else if (ch &lt;= 0x007F) {　　　　　　　// other ASCII : map to %XX<br />　　sbuf.append('%');<br />　　sbuf.append(hex[ch]);<br />　　} else {　　　　　　　　　　　　　　　　// unicode : map to %uXXXX<br />　　sbuf.append('%');<br />　　sbuf.append('u');<br />　　sbuf.append(hex[(ch &gt;&gt;&gt; 8)]);<br />　　sbuf.append(hex[(0x00FF &amp; ch)]);<br />　　}<br />　　}<br />　　return sbuf.toString();<br />　　}<br />　　public static String unescape(String s) {<br />　　StringBuffer sbuf = new StringBuffer();<br />　　int i = 0;<br />　　int len = s.length();<br />　　while (i &lt; len) {<br />　　int ch = s.charAt(i);<br />　　if (ch == '+') {　　　　　　　　　　　　// + : map to ' '<br />　　sbuf.append(' ');<br />　　} else if ('A' &lt;= ch &amp;&amp; ch &lt;= 'Z') {　　// 'A'..'Z' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if ('a' &lt;= ch &amp;&amp; ch &lt;= 'z') {　　// 'a'..'z' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if ('0' &lt;= ch &amp;&amp; ch &lt;= '9') {　　// '0'..'9' : as it was<br />　　sbuf.append((char)ch);<br />　　} else if (ch == '-' || ch == '_'　　　 // unreserved : as it was<br />　　|| ch == '.' || ch == '!'<br />　　|| ch == '~' || ch == '*'<br />　　|| ch == '\'' || ch == '('<br />　　|| ch == ')') {<br />　　sbuf.append((char)ch);<br />　　} else if (ch == '%') {<br />　　int cint = 0;<br />　　if ('u' != s.charAt(i+1)) {　　　　 // %XX : map to ascii(XX)<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+1)];<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+2)];<br />　　i+=2;<br />　　} else {　　　　　　　　　　　　　　// %uXXXX : map to unicode(XXXX)<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+2)];<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+3)];<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+4)];<br />　　cint = (cint &lt;&lt; 4) | val[s.charAt(i+5)];<br />　　i+=5;<br />　　}<br />　　sbuf.append((char)cint);<br />　　}<br />　　i++;<br />　　}<br />　　return sbuf.toString();<br />　　}<br />　　public static void main(String[] args) {<br />　　String stest = "中文1234 abcd[]()&lt;+&gt;,.~\\";<br />　　System.out.println(stest);<br />　　System.out.println(escape(stest));<br />　　System.out.println(unescape(escape(stest)));<br />　　}<br />　　}<br /><br /><br /><br /><br />===========================================================================<br /><br /><p>class  EscapeUnescape<br />{<br /> public static String  escape (String src)<br /> {<br />  int i;<br />  char j;<br />  StringBuffer tmp = new StringBuffer();<br />  tmp.ensureCapacity(src.length()*6);</p><p>  for (i=0;i&lt;src.length() ;i++ )<br />  {</p><p>   j = src.charAt(i);</p><p>   if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))<br />    tmp.append(j);<br />   else<br />    if (j&lt;256)<br />    {<br />    tmp.append( "%" );<br />    if (j&lt;16)<br />     tmp.append( "0" );<br />    tmp.append( Integer.toString(j,16) );<br />    }<br />    else<br />    {<br />    tmp.append( "%u" );<br />    tmp.append( Integer.toString(j,16) );<br />    }<br />  }<br />  return tmp.toString();<br /> }</p><p> public static String  unescape (String src)<br /> {<br />  StringBuffer tmp = new StringBuffer();<br />  tmp.ensureCapacity(src.length());<br />  int  lastPos=0,pos=0;<br />  char ch;<br />  while (lastPos&lt;src.length())<br />  {<br />   pos = src.indexOf("%",lastPos);<br />   if (pos == lastPos)<br />    {<br />    if (src.charAt(pos+1)=='u')<br />     {<br />     ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);<br />     tmp.append(ch);<br />     lastPos = pos+6;<br />     }<br />    else<br />     {<br />     ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);<br />     tmp.append(ch);<br />     lastPos = pos+3;<br />     }<br />    }<br />   else<br />    {<br />    if (pos == -1)<br />     {<br />     tmp.append(src.substring(lastPos));<br />     lastPos=src.length();<br />     }<br />    else<br />     {<br />     tmp.append(src.substring(lastPos,pos));<br />     lastPos=pos;<br />     }<br />    }<br />  }<br />  return tmp.toString();<br /> }</p><p> public static void main(String[] args) <br /> {<br />  String tmp="<a href="mailto:~!@#$%^&amp;*()_+|\\=-,./?&gt;&lt;;'][{}\">~!@#$%^&amp;*()_+|\\=-,./?&gt;&lt;;'][{}\</a>"";<br />  System.out.println("testing escape : "+tmp);<br />  tmp =escape(tmp);<br />  System.out.println(tmp);<br />  System.out.println("testing unescape :"+tmp);<br />  System.out.println(unescape(tmp));<br /> }<br />}<br /></p><img src ="http://www.blogjava.net/tambc/aggbug/89555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-22 16:19 <a href="http://www.blogjava.net/tambc/articles/89555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用java实现汉字的笔画数(转贴) </title><link>http://www.blogjava.net/tambc/articles/89251.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Thu, 21 Dec 2006 04:04:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89251.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89251.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89251.html</trackback:ping><description><![CDATA[
		<p>public class CnToStrokeCount {<br /> /**<br />  * 测试<br />  * @param args String[]<br />  */<br /> public static void main(String[] args) {</p>
		<p>  String cnStr = "测试数据";<br />  char[] chars = cnStr.toCharArray();<br />  System.out.print("&lt;" + cnStr + "&gt;的笔画数分别是：");<br />  for (int i = 0; i &lt; chars.length; i++) {<br />   System.out.print("*" + CnToStrokeCount.getStrokeCount(chars[i]));<br />  }<br />  System.out.println("*");</p>
		<p>  cnStr = "CSDN - 专家门诊 - Java";<br />  chars = cnStr.toCharArray();<br />  System.out.print("&lt;" + cnStr + "&gt;的笔画数分别是：");<br />  for (int i = 0; i &lt; chars.length; i++) {<br />   System.out.print("*" + CnToStrokeCount.getStrokeCount(chars[i]));<br />  }<br />  System.out.println("*");</p>
		<p>  cnStr = "=====提问技巧,请大家注意!!=====";<br />  chars = cnStr.toCharArray();<br />  System.out.print("&lt;" + cnStr + "&gt;的笔画数分别是：");<br />  for (int i = 0; i &lt; chars.length; i++) {<br />   System.out.print("*" + CnToStrokeCount.getStrokeCount(chars[i]));<br />  }<br />  System.out.println("*");</p>
		<p> }</p>
		<p> /**<br /> * 根据汉字字符获得笔画数,拼音和非法字符默认为0<br /> * @param charcator char<br /> * @return int<br /> */<br /> public static int getStrokeCount(char charcator) {<br />  byte[] bytes = (String.valueOf(charcator)).getBytes();<br />  if (bytes == null || bytes.length &gt; 2 || bytes.length &lt;= 0) {<br />   //错误引用,非合法字符<br />   return 0;<br />  }<br />  if (bytes.length == 1) {<br />   //英文字符<br />   return 0;<br />  }<br />  if (bytes.length == 2) {<br />   //中文字符<br />   int highByte = 256 + bytes[0];<br />   int lowByte = 256 + bytes[1];<br />   return getStrokeCount(highByte, lowByte);<br />  }</p>
		<p>  //未知错误<br />  return 0;<br /> }</p>
		<p> /**<br /> *<br /> * @param highByte int：高位字节<br /> * @param lowByte int：低位字节<br /> * @return int<br /> */<br /> private static int getStrokeCount(int highByte, int lowByte) {<br />  if (highByte &lt; 0xB0<br />   || highByte &gt; 0xF7<br />   || lowByte &lt; 0xA1<br />   || lowByte &gt; 0xFE) {<br />   //非GB2312合法字符<br />   return -1;<br />  }<br />  int offset = (highByte - 0xB0) * (0xFE - 0xA0) + (lowByte - 0xA1);<br />  return gb2312StrokeCount[offset];<br /> }<br /> </p>
		<p>  //GB2312的字符集的笔划列表，可以参考gb2312字符全集<br />  private static int[] gb2312StrokeCount = {<br />  /* B0 */<br />  10, 7, 10, 10, 8, 10, 9, 11,<br />  17, 14, 13, 5, 13, 10, 12, 15,<br />  10, 6, 10, 9, 13, 8, 10, 10,<br />  8, 8, 10, 5, 10, 14, 16, 9,<br />  12, 12, 15, 15, 7, 10, 5, 5,<br />  7, 10, 2, 9, 4, 8, 12, 13,<br />  7, 10, 7, 21, 10, 8, 5, 9,<br />  6, 13, 8, 8, 9, 13, 12, 10,<br />  13, 7, 10, 10, 8, 8, 7, 8,<br />  7, 19, 5, 4, 8, 5, 9, 10,<br />  14, 14, 9, 12, 15, 10, 15, 12,<br />  12, 8, 9, 5, 15, 10,<br />  /* B1 */<br />  16, 13, 9, 12, 8, 8, 8, 7,<br />  15, 10, 13, 19, 8, 13, 12, 8,<br />  5, 12, 9, 4, 9, 10, 7, 8,<br />  12, 12, 10, 8, 8, 5, 11, 11,<br />  11, 9, 9, 18, 9, 12, 14, 4,<br />  13, 10, 8, 14, 13, 14, 6, 10,<br />  9, 4, 7, 13, 6, 11, 14, 5,<br />  13, 16, 17, 16, 9, 18, 5, 12,<br />  8, 9, 9, 8, 4, 16, 16, 17,<br />  12, 9, 11, 15, 8, 19, 16, 7,<br />  15, 11, 12, 16, 13, 10, 13, 7,<br />  6, 9, 5, 8, 9, 9,<br />  /* B2 */<br />  10, 6, 8, 11, 15, 8, 10, 8,<br />  12, 9, 13, 10, 14, 7, 8, 11,<br />  11, 14, 12, 8, 7, 10, 2, 10,<br />  7, 11, 4, 5, 7, 19, 10, 8,<br />  17, 11, 12, 7, 3, 7, 12, 15,<br />  8, 11, 11, 14, 16, 8, 10, 9,<br />  11, 11, 7, 7, 10, 4, 7, 17,<br />  16, 16, 15, 11, 9, 8, 12, 8,<br />  5, 9, 7, 19, 12, 3, 9, 9,<br />  9, 14, 12, 14, 7, 9, 8, 8,<br />  10, 10, 12, 11, 14, 12, 11, 13,<br />  11, 6, 11, 19, 8, 11,<br />  /* B3 */<br />  6, 9, 11, 4, 11, 7, 2, 12,<br />  8, 11, 10, 12, 7, 9, 12, 15,<br />  15, 11, 7, 8, 4, 7, 15, 12,<br />  7, 15, 10, 6, 7, 6, 11, 7,<br />  7, 7, 12, 8, 15, 10, 9, 16,<br />  6, 7, 10, 12, 12, 15, 8, 8,<br />  10, 10, 10, 6, 13, 9, 11, 6,<br />  7, 6, 6, 10, 8, 8, 4, 7,<br />  10, 5, 9, 6, 6, 6, 11, 8,<br />  8, 13, 12, 14, 13, 13, 13, 4,<br />  11, 14, 4, 10, 7, 5, 16, 12,<br />  18, 12, 13, 12, 9, 13,<br />  /* B4 */<br />  10, 12, 24, 13, 13, 5, 12, 3,<br />  9, 13, 7, 11, 12, 7, 9, 12,<br />  15, 7, 6, 6, 7, 8, 11, 13,<br />  8, 9, 13, 15, 10, 11, 7, 21,<br />  18, 11, 11, 9, 14, 14, 13, 13,<br />  10, 7, 6, 8, 12, 6, 15, 12,<br />  7, 5, 4, 5, 11, 11, 15, 17,<br />  9, 19, 16, 12, 14, 11, 13, 10,<br />  13, 14, 11, 14, 7, 6, 3, 14,<br />  15, 12, 11, 10, 13, 12, 6, 12,<br />  14, 5, 3, 7, 4, 12, 17, 9,<br />  9, 5, 9, 11, 9, 11,<br />  /* B5 */<br />  9, 10, 8, 4, 8, 10, 11, 9,<br />  5, 12, 7, 11, 11, 8, 11, 11,<br />  6, 9, 10, 9, 10, 2, 10, 17,<br />  10, 7, 11, 6, 8, 15, 11, 12,<br />  11, 15, 11, 8, 19, 6, 12, 12,<br />  17, 14, 4, 12, 7, 14, 8, 10,<br />  11, 7, 10, 14, 14, 8, 8, 6,<br />  12, 11, 9, 7, 10, 12, 16, 11,<br />  13, 13, 9, 8, 16, 9, 5, 7,<br />  7, 8, 11, 12, 11, 13, 13, 5,<br />  16, 10, 2, 11, 6, 8, 10, 12,<br />  10, 14, 15, 8, 11, 13,<br />  /* B6 */<br />  2, 7, 5, 7, 8, 12, 13, 8,<br />  4, 6, 5, 5, 12, 15, 6, 9,<br />  8, 9, 7, 9, 11, 7, 4, 9,<br />  7, 10, 12, 10, 13, 9, 12, 9,<br />  10, 11, 13, 12, 7, 14, 7, 9,<br />  12, 7, 14, 12, 14, 9, 11, 12,<br />  11, 7, 4, 5, 15, 7, 19, 12,<br />  10, 7, 9, 9, 12, 11, 9, 6,<br />  6, 9, 13, 6, 13, 11, 8, 12,<br />  11, 13, 10, 12, 9, 15, 6, 10,<br />  10, 4, 7, 12, 11, 10, 10, 6,<br />  2, 6, 5, 9, 9, 2,<br />  /* B7 */<br />  9, 5, 9, 12, 6, 4, 9, 8,<br />  9, 18, 6, 12, 18, 15, 8, 8,<br />  17, 3, 10, 4, 7, 8, 8, 5,<br />  7, 7, 7, 7, 4, 8, 8, 6,<br />  7, 6, 6, 7, 8, 11, 8, 11,<br />  3, 8, 10, 10, 7, 8, 8, 8,<br />  9, 7, 11, 7, 8, 4, 7, 7,<br />  12, 7, 10, 8, 6, 8, 12, 12,<br />  4, 9, 8, 13, 10, 12, 4, 9,<br />  11, 10, 5, 13, 6, 8, 4, 7,<br />  7, 4, 15, 8, 14, 7, 8, 13,<br />  12, 9, 11, 6, 9, 8,<br />  /* B8 */<br />  10, 11, 13, 11, 5, 7, 7, 11,<br />  10, 10, 8, 11, 12, 8, 14, 9,<br />  11, 18, 12, 9, 12, 5, 8, 4,<br />  13, 6, 12, 4, 7, 6, 13, 8,<br />  15, 14, 8, 7, 13, 9, 11, 12,<br />  3, 5, 7, 9, 9, 7, 10, 13,<br />  8, 11, 21, 4, 6, 9, 9, 7,<br />  7, 7, 12, 7, 16, 10, 10, 14,<br />  10, 16, 13, 15, 15, 7, 10, 14,<br />  12, 4, 11, 10, 8, 12, 9, 12,<br />  10, 12, 9, 12, 11, 3, 6, 9,<br />  10, 13, 10, 7, 8, 19,<br />  /* B9 */<br />  10, 10, 11, 3, 7, 5, 10, 11,<br />  8, 10, 4, 9, 3, 6, 7, 9,<br />  7, 6, 9, 4, 7, 8, 8, 9,<br />  8, 8, 11, 12, 11, 8, 14, 7,<br />  8, 8, 8, 13, 5, 11, 9, 7,<br />  8, 9, 10, 8, 12, 8, 5, 9,<br />  14, 9, 13, 8, 8, 8, 12, 6,<br />  8, 9, 6, 14, 11, 23, 12, 20,<br />  8, 6, 3, 10, 13, 8, 6, 11,<br />  5, 7, 9, 6, 9, 8, 9, 10,<br />  8, 13, 9, 8, 12, 13, 12, 12,<br />  10, 8, 8, 14, 6, 9,<br />  15, 9, 10, 10, 6, 10, 9, 12,<br />  14, 7, 12, 7, 11, 12, 8, 12,<br />  7, 16, 16, 10, 7, 16, 10, 11,<br />  6, 5, 5, 8, 10, 17, 17, 14,<br />  11, 9, 6, 10, 5, 10, 8, 12,<br />  10, 11, 10, 5, 8, 7, 6, 11,<br />  13, 9, 8, 11, 14, 14, 15, 9,<br />  15, 12, 11, 9, 9, 9, 10, 7,<br />  15, 16, 9, 8, 9, 10, 9, 11,<br />  9, 7, 5, 6, 12, 9, 12, 7,<br />  9, 10, 6, 8, 5, 8, 13, 10,<br />  12, 9, 15, 8, 15, 12,<br />  /* BB */<br />  8, 8, 11, 7, 4, 7, 4, 7,<br />  9, 6, 12, 12, 8, 6, 4, 8,<br />  13, 9, 7, 11, 7, 6, 8, 10,<br />  7, 12, 10, 11, 10, 12, 13, 11,<br />  10, 9, 4, 9, 12, 11, 16, 15,<br />  17, 9, 11, 12, 13, 10, 13, 9,<br />  11, 6, 9, 12, 17, 9, 12, 6,<br />  13, 10, 15, 5, 12, 11, 10, 11,<br />  6, 10, 5, 6, 9, 9, 9, 8,<br />  11, 13, 9, 11, 17, 9, 6, 4,<br />  10, 8, 12, 16, 8, 11, 5, 6,<br />  11, 6, 13, 15, 10, 14,<br />  /* BC */<br />  6, 5, 9, 16, 4, 7, 10, 11,<br />  12, 6, 7, 12, 13, 20, 12, 3,<br />  9, 10, 6, 7, 13, 6, 9, 2,<br />  10, 3, 13, 7, 16, 8, 6, 11,<br />  8, 11, 9, 11, 11, 4, 5, 9,<br />  7, 7, 7, 10, 6, 14, 9, 6,<br />  8, 10, 5, 9, 12, 10, 5, 10,<br />  11, 15, 6, 9, 8, 13, 7, 10,<br />  7, 6, 11, 7, 13, 10, 8, 8,<br />  6, 12, 9, 11, 9, 14, 12, 8,<br />  10, 13, 9, 11, 11, 9, 14, 13,<br />  12, 9, 4, 13, 15, 6,<br />  /* BD */<br />  10, 10, 9, 8, 11, 12, 10, 8,<br />  15, 9, 9, 10, 6, 19, 12, 10,<br />  9, 6, 6, 13, 8, 15, 12, 17,<br />  12, 10, 6, 8, 9, 9, 9, 20,<br />  12, 11, 11, 8, 11, 9, 7, 9,<br />  16, 9, 13, 11, 14, 10, 10, 5,<br />  12, 12, 11, 9, 11, 12, 6, 14,<br />  7, 5, 10, 8, 11, 13, 14, 9,<br />  9, 13, 8, 7, 17, 7, 9, 10,<br />  4, 9, 9, 8, 3, 12, 4, 8,<br />  4, 9, 18, 10, 13, 4, 13, 7,<br />  13, 10, 13, 7, 10, 10,<br />  /* BE */<br />  6, 7, 9, 14, 8, 13, 12, 16,<br />  8, 11, 14, 13, 8, 4, 19, 12,<br />  11, 14, 14, 12, 16, 8, 10, 13,<br />  11, 10, 8, 9, 12, 12, 7, 5,<br />  7, 9, 3, 7, 2, 10, 11, 11,<br />  5, 6, 13, 8, 12, 8, 17, 8,<br />  8, 10, 8, 8, 11, 7, 8, 9,<br />  9, 8, 14, 7, 11, 4, 8, 11,<br />  15, 13, 10, 5, 11, 8, 10, 10,<br />  12, 10, 10, 11, 8, 10, 15, 23,<br />  7, 11, 10, 17, 9, 6, 6, 9,<br />  7, 11, 9, 6, 7, 10,<br />  /* BF */<br />  9, 12, 10, 9, 10, 12, 8, 5,<br />  9, 4, 12, 13, 8, 12, 5, 12,<br />  11, 7, 9, 9, 11, 14, 17, 6,<br />  7, 4, 8, 6, 9, 10, 15, 8,<br />  8, 9, 12, 15, 14, 9, 7, 9,<br />  5, 12, 7, 8, 9, 10, 8, 11,<br />  9, 10, 7, 7, 8, 10, 4, 11,<br />  7, 3, 6, 11, 9, 10, 13, 8,<br />  14, 7, 12, 6, 9, 9, 13, 10,<br />  7, 13, 8, 7, 10, 12, 6, 12,<br />  7, 10, 8, 11, 7, 7, 3, 11,<br />  8, 13, 12, 9, 13, 11,<br />  /* C0 */<br />  12, 12, 12, 8, 8, 10, 7, 9,<br />  6, 13, 12, 8, 8, 12, 14, 12,<br />  14, 11, 10, 7, 13, 13, 11, 9,<br />  8, 16, 12, 5, 15, 14, 12, 9,<br />  16, 12, 9, 13, 11, 12, 10, 11,<br />  8, 10, 10, 10, 7, 7, 6, 8,<br />  9, 13, 10, 10, 11, 5, 13, 18,<br />  16, 15, 11, 17, 9, 16, 6, 9,<br />  8, 12, 13, 7, 9, 11, 11, 15,<br />  16, 10, 10, 13, 11, 7, 7, 15,<br />  5, 10, 9, 6, 10, 7, 5, 7,<br />  10, 4, 7, 12, 8, 9,<br />  /* C1 */<br />  12, 5, 11, 7, 8, 2, 14, 10,<br />  9, 12, 10, 7, 18, 13, 8, 10,<br />  8, 11, 11, 12, 10, 9, 8, 13,<br />  10, 11, 13, 7, 7, 11, 12, 12,<br />  9, 10, 15, 11, 14, 7, 16, 14,<br />  5, 15, 2, 14, 17, 14, 10, 6,<br />  12, 10, 6, 11, 12, 8, 17, 16,<br />  9, 7, 20, 11, 15, 10, 7, 8,<br />  9, 11, 13, 13, 10, 7, 11, 10,<br />  7, 10, 8, 11, 5, 5, 13, 11,<br />  14, 12, 13, 10, 6, 15, 10, 9,<br />  4, 5, 11, 8, 11, 16,<br />  /* C2 */<br />  11, 8, 8, 7, 13, 9, 12, 15,<br />  14, 8, 7, 5, 11, 7, 8, 11,<br />  7, 8, 12, 19, 13, 21, 13, 10,<br />  11, 16, 12, 8, 7, 15, 7, 6,<br />  11, 8, 10, 15, 12, 12, 10, 12,<br />  9, 11, 13, 11, 9, 10, 9, 13,<br />  7, 7, 11, 11, 7, 8, 6, 4,<br />  7, 7, 6, 11, 17, 8, 11, 13,<br />  14, 14, 13, 12, 9, 9, 9, 6,<br />  11, 7, 8, 9, 3, 9, 14, 6,<br />  10, 6, 7, 8, 6, 9, 15, 14,<br />  12, 13, 14, 11, 14, 14,<br />  /* C3 */<br />  13, 6, 9, 8, 8, 6, 10, 11,<br />  8, 13, 4, 5, 10, 5, 8, 9,<br />  12, 14, 9, 3, 8, 8, 11, 14,<br />  15, 13, 7, 9, 12, 14, 7, 9,<br />  9, 12, 8, 12, 3, 7, 5, 11,<br />  13, 17, 13, 13, 11, 11, 8, 11,<br />  15, 19, 17, 9, 11, 8, 6, 10,<br />  8, 8, 14, 11, 12, 12, 10, 11,<br />  11, 7, 9, 10, 12, 9, 8, 11,<br />  13, 17, 9, 12, 8, 7, 14, 5,<br />  5, 8, 5, 11, 10, 9, 8, 16,<br />  8, 11, 6, 8, 13, 13,<br />  /* C4 */<br />  14, 19, 14, 14, 16, 15, 20, 8,<br />  5, 10, 15, 16, 8, 13, 13, 8,<br />  11, 6, 9, 8, 7, 7, 8, 5,<br />  13, 14, 13, 12, 14, 4, 5, 13,<br />  8, 16, 10, 9, 7, 9, 6, 9,<br />  7, 6, 2, 5, 9, 8, 9, 7,<br />  10, 22, 9, 10, 9, 8, 11, 8,<br />  10, 4, 14, 10, 8, 16, 10, 8,<br />  5, 7, 7, 10, 13, 9, 13, 14,<br />  8, 6, 15, 15, 11, 8, 10, 14,<br />  5, 7, 10, 10, 19, 11, 15, 15,<br />  10, 11, 9, 8, 16, 5,<br />  /* C5 */<br />  8, 8, 4, 7, 9, 7, 10, 9,<br />  6, 7, 5, 7, 9, 3, 13, 9,<br />  8, 9, 17, 20, 10, 10, 8, 9,<br />  8, 18, 7, 11, 7, 11, 9, 8,<br />  8, 8, 12, 8, 11, 12, 11, 12,<br />  9, 19, 15, 11, 15, 9, 10, 7,<br />  9, 6, 8, 10, 16, 9, 7, 8,<br />  7, 9, 10, 12, 8, 8, 9, 11,<br />  14, 12, 10, 10, 8, 7, 12, 9,<br />  10, 8, 11, 15, 12, 13, 12, 13,<br />  16, 16, 8, 13, 11, 13, 8, 9,<br />  21, 7, 8, 15, 12, 9,<br />  /* C6 */<br />  11, 12, 10, 5, 4, 12, 15, 7,<br />  20, 15, 11, 4, 12, 15, 14, 16,<br />  11, 14, 16, 9, 13, 8, 9, 13,<br />  6, 8, 8, 11, 5, 8, 10, 7,<br />  9, 8, 8, 11, 11, 10, 14, 8,<br />  11, 10, 5, 12, 4, 10, 12, 11,<br />  13, 10, 6, 10, 12, 10, 14, 19,<br />  18, 12, 12, 10, 11, 8, 2, 10,<br />  14, 9, 7, 8, 12, 8, 8, 11,<br />  11, 10, 6, 14, 8, 6, 11, 10,<br />  6, 3, 6, 7, 9, 9, 16, 4,<br />  6, 7, 7, 8, 5, 11,<br />  /* C7 */<br />  9, 9, 9, 6, 8, 10, 3, 6,<br />  13, 5, 12, 11, 16, 10, 10, 9,<br />  15, 13, 8, 15, 11, 12, 4, 14,<br />  8, 7, 12, 7, 14, 14, 12, 7,<br />  16, 14, 14, 10, 10, 17, 6, 8,<br />  5, 16, 15, 12, 10, 9, 10, 4,<br />  8, 5, 8, 9, 9, 9, 9, 10,<br />  12, 13, 7, 15, 12, 13, 7, 8,<br />  9, 9, 10, 10, 11, 16, 12, 12,<br />  11, 8, 10, 6, 12, 7, 9, 5,<br />  7, 11, 7, 5, 9, 8, 12, 4,<br />  11, 6, 11, 8, 7, 11,<br />  /* C8 */<br />  8, 11, 17, 15, 5, 11, 23, 6,<br />  16, 10, 6, 11, 10, 4, 8, 4,<br />  10, 8, 16, 7, 13, 14, 12, 11,<br />  12, 13, 12, 16, 5, 9, 22, 20,<br />  20, 20, 5, 9, 7, 9, 12, 10,<br />  4, 4, 2, 7, 7, 6, 4, 3,<br />  7, 6, 5, 4, 4, 6, 9, 13,<br />  9, 16, 14, 13, 10, 9, 4, 12,<br />  9, 6, 9, 20, 16, 17, 6, 10,<br />  8, 6, 2, 15, 8, 6, 15, 13,<br />  12, 7, 10, 8, 10, 15, 9, 11,<br />  13, 17, 13, 14, 3, 8,<br />  /* C9 */<br />  6, 12, 10, 13, 8, 12, 12, 6,<br />  12, 13, 6, 10, 12, 14, 10, 9,<br />  6, 8, 7, 7, 13, 11, 13, 12,<br />  10, 9, 8, 7, 3, 7, 14, 8,<br />  5, 8, 16, 17, 16, 12, 6, 10,<br />  15, 14, 6, 11, 12, 10, 3, 8,<br />  14, 11, 10, 12, 10, 6, 3, 14,<br />  4, 10, 7, 8, 11, 11, 11, 6,<br />  8, 11, 13, 10, 13, 10, 7, 6,<br />  10, 5, 8, 7, 7, 11, 10, 8,<br />  9, 7, 8, 11, 9, 8, 13, 11,<br />  7, 5, 12, 9, 4, 11,<br />  /* CA */<br />  9, 11, 12, 9, 5, 6, 5, 9,<br />  9, 12, 8, 3, 8, 2, 5, 9,<br />  7, 4, 9, 9, 8, 7, 5, 5,<br />  8, 9, 8, 8, 6, 5, 3, 5,<br />  9, 8, 9, 14, 10, 8, 9, 13,<br />  16, 9, 5, 8, 12, 8, 4, 5,<br />  9, 9, 8, 8, 6, 4, 9, 6,<br />  7, 11, 11, 8, 14, 11, 15, 8,<br />  11, 10, 7, 13, 8, 12, 11, 12,<br />  4, 12, 11, 15, 16, 12, 17, 13,<br />  13, 12, 13, 12, 5, 8, 9, 7,<br />  6, 9, 14, 11, 13, 14,<br />  /* CB */<br />  10, 8, 9, 14, 10, 5, 5, 10,<br />  9, 17, 4, 11, 10, 4, 13, 12,<br />  7, 17, 9, 12, 9, 11, 10, 9,<br />  12, 15, 15, 9, 7, 5, 5, 6,<br />  13, 6, 13, 5, 7, 6, 8, 3,<br />  8, 10, 8, 10, 9, 7, 6, 9,<br />  12, 15, 16, 14, 7, 12, 9, 10,<br />  10, 12, 14, 13, 13, 11, 7, 8,<br />  14, 13, 14, 9, 11, 11, 10, 21,<br />  13, 6, 17, 12, 14, 10, 6, 10,<br />  10, 13, 11, 10, 14, 11, 10, 12,<br />  8, 13, 5, 5, 6, 12,<br />  /* CC */<br />  16, 9, 17, 15, 9, 8, 8, 5,<br />  10, 11, 4, 8, 7, 7, 13, 8,<br />  15, 13, 7, 17, 13, 15, 14, 10,<br />  8, 12, 10, 14, 11, 5, 9, 6,<br />  13, 13, 11, 12, 15, 10, 16, 10,<br />  15, 11, 15, 10, 11, 10, 13, 10,<br />  11, 10, 9, 11, 10, 5, 10, 10,<br />  18, 13, 10, 13, 11, 10, 15, 12,<br />  12, 15, 16, 12, 7, 12, 17, 11,<br />  10, 9, 8, 4, 11, 13, 5, 11,<br />  9, 14, 12, 9, 7, 8, 11, 13,<br />  9, 10, 8, 4, 7, 9,<br />  /* CD */<br />  5, 6, 11, 9, 9, 9, 12, 10,<br />  10, 13, 17, 6, 11, 7, 12, 11,<br />  10, 12, 9, 12, 11, 7, 5, 10,<br />  5, 7, 9, 8, 10, 10, 10, 11,<br />  3, 6, 8, 12, 6, 11, 13, 13,<br />  13, 14, 9, 7, 4, 17, 8, 6,<br />  11, 10, 7, 6, 8, 12, 7, 8,<br />  12, 9, 9, 12, 9, 9, 4, 10,<br />  9, 5, 15, 9, 12, 8, 10, 3,<br />  11, 7, 13, 10, 11, 12, 11, 8,<br />  11, 3, 12, 7, 4, 3, 8, 6,<br />  8, 8, 11, 7, 6, 9,<br />  /* CE */<br />  20, 13, 6, 4, 7, 10, 7, 11,<br />  11, 4, 14, 11, 7, 11, 8, 6,<br />  6, 7, 7, 5, 14, 8, 9, 9,<br />  12, 17, 7, 12, 11, 11, 15, 3,<br />  14, 12, 10, 4, 9, 7, 7, 14,<br />  10, 6, 13, 10, 8, 9, 13, 10,<br />  12, 7, 14, 8, 12, 7, 7, 7,<br />  9, 4, 6, 9, 9, 4, 7, 11,<br />  7, 7, 4, 8, 4, 10, 4, 14,<br />  6, 9, 7, 5, 13, 11, 8, 4,<br />  5, 10, 9, 8, 14, 8, 6, 11,<br />  8, 12, 15, 6, 13, 10,<br />  /* CF */<br />  12, 10, 7, 11, 15, 3, 11, 14,<br />  11, 13, 6, 12, 17, 11, 10, 3,<br />  13, 12, 11, 9, 7, 12, 6, 8,<br />  15, 9, 7, 17, 14, 13, 9, 8,<br />  9, 3, 12, 10, 6, 11, 13, 6,<br />  5, 14, 6, 9, 8, 11, 11, 7,<br />  9, 8, 13, 9, 9, 8, 13, 7,<br />  13, 11, 12, 9, 10, 8, 8, 9,<br />  11, 22, 9, 15, 17, 12, 3, 12,<br />  10, 8, 13, 9, 8, 9, 9, 15,<br />  13, 6, 11, 11, 12, 15, 9, 10,<br />  18, 12, 10, 10, 11, 10,<br />  /* D0 */<br />  3, 7, 10, 7, 11, 10, 10, 13,<br />  8, 13, 15, 15, 6, 9, 13, 6,<br />  11, 8, 11, 5, 11, 9, 19, 16,<br />  8, 8, 12, 10, 16, 7, 12, 8,<br />  7, 13, 7, 4, 9, 11, 9, 13,<br />  12, 12, 6, 6, 9, 7, 6, 6,<br />  16, 8, 7, 8, 8, 5, 4, 10,<br />  6, 7, 12, 14, 6, 9, 10, 6,<br />  13, 12, 7, 10, 10, 14, 6, 14,<br />  11, 14, 9, 10, 6, 13, 11, 9,<br />  6, 7, 10, 9, 12, 12, 11, 11,<br />  7, 12, 9, 11, 11, 5,<br />  /* D1 */<br />  9, 19, 10, 9, 13, 16, 8, 5,<br />  11, 6, 9, 14, 12, 6, 8, 6,<br />  6, 6, 10, 6, 5, 5, 9, 6,<br />  6, 8, 9, 10, 7, 3, 7, 4,<br />  10, 11, 13, 11, 12, 9, 6, 6,<br />  11, 9, 11, 10, 11, 10, 7, 9,<br />  12, 8, 7, 7, 15, 11, 8, 8,<br />  8, 11, 11, 9, 14, 10, 12, 16,<br />  6, 9, 12, 10, 9, 12, 10, 11,<br />  10, 9, 5, 10, 10, 7, 6, 8,<br />  8, 6, 9, 6, 10, 6, 11, 9,<br />  10, 14, 16, 13, 7, 14,<br />  /* D2 */<br />  13, 6, 13, 11, 12, 9, 9, 10,<br />  9, 9, 20, 12, 15, 8, 6, 11,<br />  7, 3, 6, 11, 5, 5, 6, 12,<br />  8, 11, 1, 12, 7, 12, 11, 8,<br />  6, 6, 13, 6, 12, 11, 5, 10,<br />  14, 7, 8, 9, 18, 12, 9, 10,<br />  3, 1, 7, 4, 4, 7, 8, 7,<br />  6, 3, 7, 17, 11, 13, 9, 6,<br />  13, 13, 15, 4, 3, 10, 13, 8,<br />  5, 10, 7, 6, 17, 11, 8, 9,<br />  9, 6, 10, 9, 6, 8, 7, 11,<br />  11, 11, 7, 4, 4, 11,<br />  /* D3 */<br />  5, 8, 15, 11, 18, 7, 14, 10,<br />  11, 11, 9, 14, 7, 17, 9, 15,<br />  13, 12, 9, 9, 8, 7, 17, 10,<br />  11, 13, 14, 13, 8, 8, 10, 5,<br />  11, 9, 5, 9, 6, 11, 7, 4,<br />  5, 7, 10, 7, 8, 12, 7, 6,<br />  4, 5, 7, 12, 9, 2, 5, 6,<br />  11, 3, 8, 13, 13, 13, 14, 7,<br />  9, 12, 8, 12, 12, 11, 11, 4,<br />  10, 8, 3, 6, 9, 6, 9, 6,<br />  5, 11, 6, 8, 6, 12, 12, 10,<br />  12, 13, 11, 9, 8, 13,<br />  /* D4 */<br />  10, 12, 12, 10, 15, 5, 10, 11,<br />  10, 4, 9, 10, 10, 12, 14, 7,<br />  7, 10, 13, 13, 12, 7, 8, 14,<br />  9, 9, 4, 6, 12, 11, 9, 8,<br />  12, 4, 10, 10, 10, 4, 9, 4,<br />  9, 4, 7, 15, 11, 10, 13, 5,<br />  5, 10, 6, 10, 9, 7, 10, 10,<br />  6, 6, 9, 19, 12, 16, 10, 10,<br />  12, 14, 17, 12, 19, 8, 6, 16,<br />  9, 20, 16, 10, 7, 7, 17, 8,<br />  8, 6, 8, 10, 9, 15, 15, 12,<br />  16, 4, 12, 12, 5, 5,<br />  /* D5 */<br />  11, 8, 9, 9, 14, 8, 5, 9,<br />  7, 14, 10, 6, 10, 10, 14, 18,<br />  9, 13, 11, 8, 10, 8, 14, 11,<br />  10, 22, 9, 5, 9, 10, 12, 11,<br />  15, 11, 14, 14, 7, 12, 10, 7,<br />  3, 7, 8, 5, 8, 16, 13, 8,<br />  9, 7, 8, 9, 13, 13, 6, 14,<br />  5, 14, 7, 10, 12, 16, 8, 13,<br />  14, 7, 10, 9, 13, 10, 13, 10,<br />  16, 6, 7, 8, 8, 10, 7, 15,<br />  10, 15, 6, 13, 9, 11, 8, 9,<br />  6, 8, 16, 9, 5, 9,<br />  /* D6 */<br />  9, 10, 8, 7, 6, 8, 4, 7,<br />  14, 8, 8, 10, 5, 3, 8, 11,<br />  8, 12, 12, 6, 10, 8, 7, 9,<br />  4, 11, 5, 6, 7, 7, 10, 11,<br />  6, 10, 13, 8, 9, 8, 12, 10,<br />  13, 8, 8, 11, 12, 8, 11, 4,<br />  9, 8, 9, 10, 8, 9, 8, 9,<br />  6, 6, 6, 8, 6, 9, 7, 12,<br />  9, 7, 8, 8, 10, 8, 9, 17,<br />  10, 10, 12, 6, 11, 10, 8, 10,<br />  6, 10, 12, 8, 17, 15, 5, 11,<br />  9, 7, 11, 8, 12, 12,<br />  /* D7 */<br />  7, 8, 9, 8, 7, 4, 9, 4,<br />  9, 8, 15, 14, 15, 10, 6, 12,<br />  6, 15, 6, 7, 12, 13, 9, 14,<br />  7, 11, 10, 10, 10, 8, 8, 10,<br />  12, 8, 10, 11, 11, 7, 9, 9,<br />  9, 10, 9, 12, 11, 7, 12, 5,<br />  9, 13, 3, 6, 11, 6, 18, 12,<br />  15, 8, 11, 9, 7, 7, 7, 9,<br />  12, 10, 7, 8, 11, 9, 7, 7,<br />  8, 10, 20, 16, 15, 12, 13, 12,<br />  15, 9, 5, 7, 9, 11, 7, 7,<br />  10, 0, 0, 0, 0, 0,<br />  /* D8 */<br />  3, 3, 3, 4, 4, 4, 5, 6,<br />  6, 10, 10, 16, 1, 8, 1, 2,<br />  3, 4, 4, 5, 5, 6, 9, 11,<br />  14, 14, 19, 1, 8, 14, 2, 6,<br />  4, 7, 7, 11, 14, 4, 6, 10,<br />  11, 12, 14, 15, 16, 2, 5, 8,<br />  11, 11, 15, 8, 7, 2, 4, 6,<br />  7, 8, 8, 8, 9, 10, 10, 10,<br />  13, 13, 14, 14, 15, 16, 2, 8,<br />  2, 4, 4, 4, 5, 5, 5, 5,<br />  6, 6, 6, 6, 6, 6, 6, 6,<br />  6, 7, 7, 7, 7, 7,<br />  /* D9 */<br />  7, 7, 7, 7, 8, 8, 8, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 10, 11, 11,<br />  11, 11, 11, 11, 11, 12, 12, 12,<br />  13, 14, 14, 14, 14, 14, 14, 15,<br />  15, 5, 6, 7, 7, 9, 17, 6,<br />  8, 4, 12, 16, 17, 18, 21, 2,<br />  9, 9, 11, 6, 6, 7, 2, 8,<br />  10, 10, 11, 12, 12, 12, 13, 16,<br />  19, 19, 2, 6, 8, 8,<br />  /* DA */<br />  10, 2, 10, 10, 2, 5, 5, 5,<br />  6, 6, 6, 7, 7, 7, 7, 7,<br />  7, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 8, 8, 9, 9, 9, 9,<br />  10, 10, 10, 10, 10, 10, 10, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 12, 12, 12, 12, 12, 13,<br />  13, 14, 14, 14, 15, 15, 19, 2,<br />  8, 2, 5, 5, 6, 6, 7, 7,<br />  7, 7, 8, 9, 9, 10, 10, 10,<br />  11, 11, 11, 16, 5, 5, 5, 5,<br />  6, 6, 7, 7, 7, 7,<br />  /* DB */<br />  7, 7, 8, 8, 8, 8, 8, 8,<br />  8, 9, 9, 9, 9, 9, 10, 10,<br />  11, 11, 13, 13, 13, 14, 14, 16,<br />  19, 17, 5, 7, 5, 7, 7, 8,<br />  10, 10, 11, 15, 9, 17, 20, 2,<br />  2, 6, 10, 2, 5, 10, 12, 7,<br />  9, 9, 14, 16, 16, 17, 6, 6,<br />  6, 6, 6, 6, 6, 7, 7, 7,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 10, 10, 10, 10, 10,<br />  10, 11, 11, 11, 11, 11,<br />  /* DC */<br />  11, 11, 11, 11, 11, 12, 12, 12,<br />  12, 13, 13, 14, 14, 14, 15, 20,<br />  21, 22, 3, 5, 5, 6, 6, 6,<br />  6, 6, 6, 6, 7, 7, 7, 7,<br />  7, 7, 7, 7, 7, 7, 7, 7,<br />  7, 7, 7, 7, 7, 7, 7, 7,<br />  7, 7, 7, 8, 8, 8, 8, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 8, 8, 8, 8, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9,<br />  /* DD */<br />  9, 9, 9, 9, 9, 9, 9, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 12, 13,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 13, 13, 14,<br />  14, 14, 14, 14, 14, 14,<br />  /* DE */<br />  14, 14, 14, 14, 15, 15, 15, 15,<br />  15, 15, 15, 15, 15, 16, 16, 16,<br />  16, 16, 16, 16, 16, 16, 17, 17,<br />  17, 17, 17, 18, 19, 19, 19, 20,<br />  20, 22, 3, 9, 6, 7, 9, 9,<br />  10, 10, 11, 3, 5, 5, 12, 3,<br />  6, 7, 8, 8, 8, 8, 9, 9,<br />  9, 10, 10, 10, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 12, 13, 13, 13, 13, 13, 13,<br />  13, 13, 14, 14, 14, 14,<br />  /* DF */<br />  14, 15, 15, 15, 15, 16, 16, 16,<br />  17, 17, 19, 23, 25, 3, 7, 8,<br />  12, 5, 5, 5, 5, 5, 5, 6,<br />  6, 6, 7, 7, 7, 7, 7, 7,<br />  7, 7, 7, 7, 7, 8, 8, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11,<br />  /* E0 */<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 13, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 15,<br />  15, 15, 15, 15, 15, 15, 15, 15,<br />  15, 15, 16, 16, 16, 16, 16, 16,<br />  17, 17, 19, 25, 3, 6, 6, 7,<br />  7, 8, 9, 10, 11, 11, 16, 7,<br />  8, 8, 8, 10, 11, 11,<br />  /* E1 */<br />  11, 12, 14, 14, 15, 15, 6, 6,<br />  7, 7, 7, 7, 7, 7, 7, 7,<br />  7, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 8, 9, 9, 9, 9, 10,<br />  10, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 12, 13, 13, 13, 14, 15, 15,<br />  17, 17, 19, 3, 7, 8, 9, 9,<br />  9, 10, 11, 11, 12, 13, 15, 16,<br />  24, 3, 3, 5, 6, 6, 6, 7,<br />  7, 8, 8, 8, 9, 9, 9, 9,<br />  10, 10, 10, 10, 10, 10,<br />  /* E2 */<br />  10, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 12, 12, 14, 14,<br />  15, 15, 16, 17, 20, 6, 14, 12,<br />  14, 3, 3, 6, 7, 7, 7, 7,<br />  7, 8, 9, 10, 10, 11, 12, 12,<br />  13, 13, 14, 15, 15, 25, 5, 7,<br />  7, 8, 9, 9, 11, 11, 11, 11,<br />  12, 13, 14, 15, 16, 16, 17, 3,<br />  5, 6, 6, 7, 7, 7, 7, 7,<br />  7, 7, 7, 7, 7, 7, 8, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  8, 9, 9, 9, 9, 9,<br />  /* E3 */<br />  9, 9, 10, 10, 10, 10, 10, 10,<br />  10, 10, 11, 11, 11, 11, 11, 11,<br />  11, 11, 12, 12, 12, 12, 12, 12,<br />  12, 13, 13, 14, 15, 15, 15, 16,<br />  16, 18, 8, 17, 4, 6, 7, 7,<br />  7, 7, 9, 9, 10, 10, 10, 11,<br />  11, 11, 11, 11, 11, 12, 12, 13,<br />  13, 13, 14, 3, 4, 8, 3, 6,<br />  6, 6, 7, 7, 7, 7, 7, 7,<br />  7, 7, 7, 7, 7, 7, 8, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 8, 8, 8, 8,<br />  /* E4 */<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 14, 14, 14, 14, 14, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 15,<br />  15, 15, 15, 15, 15, 16,<br />  /* E5 */<br />  16, 16, 16, 16, 16, 17, 17, 17,<br />  17, 17, 19, 19, 19, 20, 20, 21,<br />  24, 3, 5, 8, 8, 9, 10, 12,<br />  13, 14, 14, 15, 16, 16, 17, 17,<br />  3, 7, 7, 8, 8, 8, 8, 8,<br />  8, 8, 9, 9, 10, 10, 10, 10,<br />  10, 10, 11, 11, 11, 11, 12, 12,<br />  12, 12, 13, 13, 13, 13, 15, 15,<br />  16, 16, 17, 17, 18, 3, 11, 9,<br />  12, 5, 9, 10, 10, 12, 14, 15,<br />  21, 8, 8, 9, 11, 12, 22, 3,<br />  6, 6, 7, 7, 7, 7,<br />  /* E6 */<br />  7, 7, 7, 7, 7, 7, 8, 8,<br />  8, 8, 9, 9, 9, 9, 9, 9,<br />  9, 10, 10, 10, 10, 10, 10, 10,<br />  10, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 13, 13, 13, 13,<br />  13, 13, 14, 14, 14, 14, 14, 14,<br />  14, 15, 16, 16, 17, 17, 20, 5,<br />  9, 7, 8, 12, 3, 3, 8, 8,<br />  8, 8, 8, 8, 8, 8, 9, 9,<br />  9, 10, 11, 11, 11, 11, 12, 12,<br />  13, 13, 13, 14, 14, 15, 19, 20,<br />  3, 6, 6, 6, 6, 6,<br />  /* E7 */<br />  7, 7, 7, 8, 8, 8, 8, 8,<br />  8, 8, 9, 9, 9, 10, 10, 10,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 11, 12, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 13, 13, 13,<br />  13, 13, 13, 13, 13, 14, 14, 14,<br />  14, 14, 15, 15, 15, 16, 16, 16,<br />  16, 19, 3, 15, 3, 8, 10, 6,<br />  6, 8, 8, 8, 9, 9, 9, 9,<br />  9, 9, 9, 9, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 11, 12, 12,<br />  12, 12, 12, 12, 12, 12,<br />  /* E8 */<br />  12, 12, 13, 13, 13, 13, 13, 14,<br />  14, 15, 15, 15, 15, 15, 15, 15,<br />  16, 17, 17, 17, 18, 20, 20, 13,<br />  13, 14, 7, 7, 7, 7, 7, 8,<br />  8, 8, 8, 8, 8, 8, 8, 8,<br />  8, 8, 8, 8, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 11, 11, 11, 11, 11, 11,<br />  11, 12, 12, 12, 12, 12,<br />  /* E9 */<br />  12, 12, 12, 12, 12, 12, 12, 13,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 14, 14, 14, 14, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 15,<br />  15, 15, 15, 15, 15, 15, 15, 16,<br />  16, 16, 16, 16, 16, 16, 16, 16,<br />  16, 16, 17, 17, 17, 17, 18, 13,<br />  14, 8, 9, 9, 9, 11, 11, 11,<br />  12, 12, 14, 16, 7, 8, 9, 9,<br />  9, 9, 9, 9, 9, 9, 9, 10,<br />  10, 10, 10, 11, 12, 12,<br />  /* EA */<br />  12, 12, 13, 15, 16, 10, 5, 8,<br />  11, 12, 12, 13, 13, 13, 14, 14,<br />  8, 9, 12, 16, 16, 17, 4, 6,<br />  6, 7, 8, 8, 8, 8, 8, 8,<br />  8, 9, 9, 9, 9, 9, 9, 10,<br />  10, 10, 10, 10, 10, 11, 11, 12,<br />  13, 13, 14, 14, 16, 18, 18, 20,<br />  21, 9, 9, 9, 9, 10, 10, 10,<br />  10, 11, 11, 11, 12, 12, 14, 9,<br />  10, 11, 12, 13, 14, 15, 15, 9,<br />  13, 6, 8, 9, 11, 11, 12, 12,<br />  12, 13, 14, 10, 11, 12,<br />  /* EB */<br />  14, 17, 10, 10, 12, 12, 12, 13,<br />  15, 16, 16, 22, 5, 6, 7, 7,<br />  9, 10, 10, 11, 13, 4, 11, 13,<br />  12, 13, 15, 9, 15, 6, 7, 7,<br />  7, 8, 8, 8, 8, 8, 8, 8,<br />  8, 9, 9, 9, 9, 9, 9, 9,<br />  9, 9, 9, 9, 9, 9, 10, 10,<br />  10, 10, 10, 10, 10, 10, 10, 11,<br />  11, 11, 11, 11, 11, 12, 12, 12,<br />  12, 12, 12, 12, 13, 13, 13, 13,<br />  13, 13, 13, 13, 14, 14, 14, 15,<br />  15, 16, 17, 17, 17, 17,<br />  /* EC */<br />  17, 16, 7, 11, 12, 13, 13, 16,<br />  9, 9, 12, 13, 16, 16, 4, 13,<br />  13, 17, 12, 15, 16, 8, 10, 10,<br />  10, 11, 11, 13, 14, 7, 8, 8,<br />  8, 9, 9, 9, 9, 9, 10, 10,<br />  11, 11, 11, 12, 12, 13, 13, 13,<br />  13, 13, 13, 13, 13, 14, 15, 15,<br />  15, 15, 16, 16, 16, 18, 21, 30,<br />  4, 11, 13, 16, 8, 8, 9, 11,<br />  12, 4, 7, 8, 8, 9, 9, 9,<br />  9, 9, 9, 9, 10, 10, 12, 12,<br />  13, 14, 16, 21, 7, 7,<br />  /* ED */<br />  9, 10, 10, 10, 10, 10, 10, 11,<br />  13, 13, 14, 16, 16, 17, 17, 24,<br />  4, 6, 8, 9, 12, 7, 8, 8,<br />  9, 9, 9, 9, 9, 9, 9, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 11, 11, 11, 11, 11, 11, 11,<br />  11, 12, 13, 13, 13, 13, 13, 14,<br />  14, 14, 14, 14, 15, 15, 15, 16,<br />  16, 17, 17, 18, 19, 18, 21, 11,<br />  12, 17, 19, 8, 9, 9, 9, 9,<br />  9, 10, 10, 10, 11, 11, 11, 11,<br />  12, 12, 12, 12, 13, 13,<br />  /* EE */<br />  13, 13, 14, 14, 14, 14, 15, 15,<br />  16, 16, 16, 17, 18, 7, 8, 9,<br />  9, 9, 10, 12, 13, 17, 9, 10,<br />  10, 12, 13, 14, 14, 16, 17, 17,<br />  10, 16, 23, 5, 6, 6, 7, 7,<br />  7, 8, 8, 8, 8, 8, 8, 9,<br />  9, 9, 9, 9, 9, 9, 9, 9,<br />  9, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  10, 10, 10, 10, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11,<br />  /* EF */<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 12, 12,<br />  12, 13, 13, 13, 13, 13, 13, 13,<br />  13, 13, 13, 13, 13, 14, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 14,<br />  14, 15, 15, 15, 15, 15, 15, 15,<br />  15, 16, 16, 16, 16, 16, 16, 16,<br />  16, 17, 17, 17, 17, 17, 17, 17,<br />  17, 17, 17, 18, 18, 18, 19, 20,<br />  14, 9, 12, 13, 9, 9, 10, 10,<br />  11, 12, 12, 12, 13, 13,<br />  /* F0 */<br />  15, 15, 16, 17, 18, 22, 9, 11,<br />  12, 13, 17, 10, 11, 7, 7, 8,<br />  9, 9, 10, 10, 10, 10, 10, 10,<br />  11, 11, 11, 11, 11, 12, 12, 12,<br />  12, 12, 12, 13, 13, 13, 13, 13,<br />  14, 14, 14, 14, 14, 15, 15, 16,<br />  16, 16, 17, 17, 17, 17, 18, 18,<br />  22, 5, 7, 7, 8, 8, 9, 9,<br />  10, 10, 10, 10, 10, 10, 10, 10,<br />  11, 11, 12, 12, 12, 12, 12, 12,<br />  13, 13, 13, 13, 13, 13, 13, 14,<br />  14, 14, 14, 14, 14, 14,<br />  /* F1 */<br />  15, 15, 15, 15, 16, 16, 16, 16,<br />  16, 16, 16, 16, 17, 18, 18, 18,<br />  18, 21, 23, 11, 12, 8, 8, 9,<br />  9, 10, 11, 13, 13, 14, 14, 14,<br />  15, 5, 8, 9, 9, 9, 9, 10,<br />  11, 11, 11, 11, 12, 12, 12, 12,<br />  13, 13, 13, 13, 13, 13, 14, 14,<br />  14, 14, 14, 15, 15, 16, 17, 19,<br />  24, 5, 9, 11, 12, 9, 6, 9,<br />  10, 12, 12, 13, 14, 15, 15, 16,<br />  16, 22, 12, 8, 11, 11, 11, 12,<br />  15, 16, 12, 9, 10, 10,<br />  /* F2 */<br />  12, 12, 12, 12, 13, 15, 15, 16,<br />  16, 16, 18, 20, 21, 6, 10, 7,<br />  8, 9, 9, 9, 9, 10, 10, 10,<br />  10, 10, 10, 10, 10, 10, 10, 11,<br />  11, 11, 11, 11, 11, 11, 11, 11,<br />  11, 11, 12, 12, 12, 12, 12, 12,<br />  12, 12, 12, 12, 12, 12, 13, 13,<br />  13, 13, 13, 13, 13, 13, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 14,<br />  14, 14, 14, 14, 15, 15, 15, 15,<br />  15, 15, 15, 15, 15, 15, 15, 15,<br />  15, 15, 16, 16, 16, 16,<br />  /* F3 */<br />  16, 16, 16, 16, 16, 16, 17, 17,<br />  17, 17, 17, 17, 17, 17, 17, 17,<br />  17, 18, 18, 18, 18, 19, 19, 19,<br />  19, 20, 21, 24, 26, 6, 14, 17,<br />  17, 10, 8, 9, 9, 9, 10, 10,<br />  10, 10, 10, 11, 11, 11, 11, 11,<br />  11, 11, 11, 11, 11, 11, 11, 12,<br />  12, 12, 12, 12, 12, 13, 13, 13,<br />  13, 13, 13, 14, 14, 14, 14, 14,<br />  14, 14, 14, 14, 14, 14, 14, 15,<br />  15, 15, 15, 16, 16, 16, 16, 16,<br />  17, 17, 17, 17, 17, 17,<br />  /* F4 */<br />  18, 18, 18, 19, 19, 19, 8, 9,<br />  11, 12, 10, 10, 9, 9, 9, 10,<br />  10, 10, 10, 11, 11, 11, 11, 12,<br />  13, 13, 14, 15, 17, 18, 19, 10,<br />  10, 11, 13, 13, 19, 11, 11, 13,<br />  15, 15, 16, 9, 10, 10, 11, 11,<br />  12, 12, 13, 14, 14, 14, 15, 15,<br />  15, 15, 15, 16, 18, 6, 15, 9,<br />  11, 12, 14, 14, 15, 15, 16, 17,<br />  6, 12, 14, 14, 17, 25, 11, 19,<br />  9, 12, 13, 13, 23, 11, 15, 10,<br />  11, 9, 10, 10, 10, 12,<br />  /* F5 */<br />  12, 12, 13, 13, 13, 14, 14, 14,<br />  14, 14, 15, 15, 16, 16, 16, 17,<br />  17, 18, 19, 19, 19, 20, 20, 21,<br />  7, 16, 10, 13, 14, 18, 18, 10,<br />  10, 11, 11, 11, 12, 12, 12, 12,<br />  12, 12, 12, 12, 13, 13, 13, 13,<br />  13, 13, 13, 14, 14, 15, 15, 15,<br />  15, 15, 15, 15, 15, 16, 16, 16,<br />  16, 16, 16, 16, 16, 17, 17, 17,<br />  19, 19, 19, 19, 19, 20, 21, 22,<br />  22, 23, 24, 7, 12, 13, 13, 17,<br />  17, 11, 11, 12, 12, 13,<br />  /* F6 */<br />  13, 14, 15, 13, 18, 12, 11, 12,<br />  12, 14, 14, 16, 16, 16, 19, 19,<br />  20, 22, 10, 13, 13, 13, 14, 14,<br />  15, 15, 17, 8, 12, 20, 8, 10,<br />  10, 13, 14, 18, 18, 14, 14, 15,<br />  16, 17, 18, 18, 21, 24, 12, 12,<br />  13, 13, 13, 13, 13, 13, 13, 13,<br />  14, 14, 14, 14, 14, 14, 14, 14,<br />  15, 15, 15, 15, 15, 15, 15, 15,<br />  15, 15, 16, 16, 16, 16, 16, 16,<br />  16, 16, 16, 16, 16, 16, 17, 17,<br />  17, 17, 17, 17, 17, 17,<br />  /* F7 */<br />  18, 18, 18, 18, 18, 19, 19, 19,<br />  19, 19, 19, 20, 20, 20, 21, 14,<br />  14, 15, 15, 16, 18, 18, 18, 19,<br />  19, 13, 13, 14, 14, 14, 15, 15,<br />  17, 17, 18, 18, 19, 19, 22, 14,<br />  14, 15, 16, 16, 17, 19, 12, 15,<br />  18, 22, 22, 10, 13, 14, 15, 15,<br />  16, 16, 16, 18, 19, 20, 23, 25,<br />  14, 15, 17, 13, 16, 16, 17, 19,<br />  19, 21, 23, 17, 17, 17, 18, 18,<br />  19, 20, 20, 20, 20, 21, 17, 18,<br />  20, 23, 23, 16, 17, 23,<br />  /* F8 */<br />  }<br />}</p>
<img src ="http://www.blogjava.net/tambc/aggbug/89251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-21 12:04 <a href="http://www.blogjava.net/tambc/articles/89251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Yale CAS Server 来实现单点登陆(SSO)</title><link>http://www.blogjava.net/tambc/articles/89243.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Thu, 21 Dec 2006 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89243.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89243.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89243.html</trackback:ping><description><![CDATA[CAS (Central Authentication Service)是Yale大学的ITS开发的一套JAVA实现的开源 <br />的SSO(single sign-on)的服务。 <br /><br />这里用一个简单的例子来说明用CAS来实现单点登陆(SSO)。 <br /><br />Yale CAS Server 的配置过程 <br /><br />CAS (Central Authentication Service)是Yale大学的ITS开发的一套JAVA实现的开源 <br />的SSO(single sign-on)的服务。该服务是以一个java web app(eg:cas.war)来进行服务的， <br />使用时需要将cas.war发布到一个servlet2.3兼容的服务器上，并且服务器需要支持SSL， <br />在需要使用该服务的其他服务器（客户），只要进行简单的配置就可以实现SSO了。 <br /><br />CAS 的客户端可以有很多种，因为验证的结果是以XML的格式返回的，CAS的客户端已 <br />打包进去的有java,perl,python,asp,apache module等好几种客户端示例，你还可以根据 <br />需要实现一个自己的客户端，非常简单!~ <br /><br />下面我们以tomcat 5.0 作为CAS Server(server1)，另外一台tomcat5.0 为client(client1) <br />为例进行说明。 <br /><br />1.下载cas-server和cas-client(可选，建议使用） <br /><img src="http://yourblog.blogbus.com/images/url.gif" align="absMiddle" /><a href="http://www.yale.edu/tp/cas/cas-server-2.0.12.zip" target="_blank">http://www.yale.edu/tp/cas/cas-server-2.0.12.zip</a><br /><img src="http://yourblog.blogbus.com/images/url.gif" align="absMiddle" /><a href="http://www.yale.edu/tp/cas/cas-client-2.0.11.zip" target="_blank">http://www.yale.edu/tp/cas/cas-client-2.0.11.zip</a><br /><br />2.将cas-server-2.0.12.zip解压，并将lib/cas.war拷贝到server1的webapps下 <br /><br />3.产生SERVER的证书 <br />keytool -genkey -alias my-alias-name -keyalg RSA -keystore keystore-file <br /><br />4.在server1配置tomcat使用HTTPS <br /><br />$CATALINA_HOME/conf/server.xml里 <br /><br />&lt;Connector className="org.apache.coyote.tomcat5.CoyoteConnector" <br />port="8443" minProcessors="5" maxProcessors="75" <br />enableLookups="true" disableUploadTimeout="true" <br />acceptCount="100" debug="0" scheme="https" <br />secure="true"&gt; <br />&lt;Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory" <br />keystoreFile="/path/to/your/keystore-file" <br />keystorePass="your-password" clientAuth="false" protocol="TLS" /&gt; <br />&lt;/Connector&gt; <br /><br />5.在要使用CAS的客户端client1里设置（以servlets-examples这个APP为例），我们使用 <br />ServletFilter(CAS client里提供的)来实现SSO的检查。 <br /><br />修改servlets-examples/WEB-INF/web.xml <br /><br />&lt;filter&gt; <br />&lt;filter-name&gt;CASFilter&lt;/filter-name&gt; <br />&lt;filter-class&gt;edu.yale.its.tp.cas.client.filter.CASFilter&lt;/filter-class&gt; <br />&lt;init-param&gt; <br />&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.loginUrl&lt;/param-name&gt; <br />&lt;param-value&gt;https://your.cas.server.name(eg:server1):port/cas/login&lt;/param-value&gt; <br />&lt;/init-param&gt; <br />&lt;init-param&gt; <br />&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.validateUrl&lt;/param-name&gt; <br />&lt;param-value&gt;https://your.cas.server.name(eg:server1):port/cas/proxyValidate&lt;/param-value&gt; <br />&lt;/init-param&gt; <br /><br />&lt;init-param&gt; <br />&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.serverName&lt;/param-name&gt; <br />&lt;param-value&gt;your.client.server.name(eg:client1):port&lt;/param-value&gt; <br />&lt;/init-param&gt; <br /><br />&lt;/filter&gt; <br /><br />&lt;filter-mapping&gt; <br />&lt;filter-name&gt;CASFilter&lt;/filter-name&gt; <br />&lt;url-pattern&gt;/servlet/*&lt;/url-pattern&gt; <br />&lt;/filter-mapping&gt; <br /><br />6.将cas-client-2.0.11.zip解压，把java/lib/casclient.jar拷贝到client1服务器上的 <br />webapps/servlets-examples/WEB-INF/lib目录下（如果没有就建一个） <br /><br />7.导出SERVER的证书，用来给所有需要用到的客户端导入 <br />keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file <br /><br />8.在客户端的JVM里导入信任的SERVER的证书(根据情况有可能需要管理员权限) <br />keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name <br /><br />9.test &amp; done. <br />把server1和client1分别起来，检查启动的LOG是否正常，如果一切OK，就访问 <br /><img src="http://yourblog.blogbus.com/images/url.gif" align="absMiddle" /><a href="http://client1:8080/servlets-examples/servlet/HelloWorldExample" target="_blank">http://client1:8080/servlets-examples/servlet/HelloWorldExample</a><br />系统会自动跳转到一个验证页面，随便输入一个相同的账号,密码，严正通过之后就会访问 <br />到真正的HelloWorldExample这个servlet了 <br /><br />更多信息请参考 <br /><img src="http://yourblog.blogbus.com/images/url.gif" align="absMiddle" /><a href="http://www.yale.edu/tp/cas/" target="_blank">http://www.yale.edu/tp/cas/</a><br /><img src="http://yourblog.blogbus.com/images/url.gif" align="absMiddle" /><a href="http://www-106.ibm.com/developerworks/web/library/wa-singlesign/" target="_blank">http://www-106.ibm.com/developerworks/web/library/wa-singlesign/</a><br /><img src ="http://www.blogjava.net/tambc/aggbug/89243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-21 11:47 <a href="http://www.blogjava.net/tambc/articles/89243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现HTTP长连接（服务器推）</title><link>http://www.blogjava.net/tambc/articles/89240.html</link><dc:creator>tambc</dc:creator><author>tambc</author><pubDate>Thu, 21 Dec 2006 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/tambc/articles/89240.html</guid><wfw:comment>http://www.blogjava.net/tambc/comments/89240.html</wfw:comment><comments>http://www.blogjava.net/tambc/articles/89240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tambc/comments/commentRss/89240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tambc/services/trackbacks/89240.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">response.setContentType(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">); <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  ServletOutputStream os </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> response.getOutputStream(); <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  SimpleDateFormat format </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> SimpleDateFormat(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">yyyy-MM-dd HH:mm:ss</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">); <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_184_651_Open_Image" onclick="this.style.display='none'; Codehighlighter1_184_651_Open_Text.style.display='none'; Codehighlighter1_184_651_Closed_Image.style.display='inline'; Codehighlighter1_184_651_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_184_651_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_184_651_Closed_Text.style.display='none'; Codehighlighter1_184_651_Open_Image.style.display='inline'; Codehighlighter1_184_651_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000"> (</span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">) </span>
				<span id="Codehighlighter1_184_651_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_184_651_Open_Text">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_194_524_Open_Image" onclick="this.style.display='none'; Codehighlighter1_194_524_Open_Text.style.display='none'; Codehighlighter1_194_524_Closed_Image.style.display='inline'; Codehighlighter1_194_524_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_194_524_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_194_524_Closed_Text.style.display='none'; Codehighlighter1_194_524_Open_Image.style.display='inline'; Codehighlighter1_194_524_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">try</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_194_524_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_194_524_Open_Text">
								<span style="COLOR: #000000">{ <br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String str </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> format.format(</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> java.util.Date()); <br /></span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    str </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">服务器当前时间：</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> str </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">&lt;BR&gt;</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">; <br /></span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">byte</span>
								<span style="COLOR: #000000">[] pdu </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> str.getBytes(); <br /></span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    os.write(pdu); <br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    os.flush(); <br /></span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    System.out.println(Thread.currentThread().getName() </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">  发送 </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> str); <br /></span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_444_477_Open_Image" onclick="this.style.display='none'; Codehighlighter1_444_477_Open_Text.style.display='none'; Codehighlighter1_444_477_Closed_Image.style.display='inline'; Codehighlighter1_444_477_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_444_477_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_444_477_Closed_Text.style.display='none'; Codehighlighter1_444_477_Open_Image.style.display='inline'; Codehighlighter1_444_477_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">try</span>
								<span style="COLOR: #000000"> </span>
								<span id="Codehighlighter1_444_477_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_444_477_Open_Text">
										<span style="COLOR: #000000">{ <br /></span>
										<span style="COLOR: #008080">13</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     Thread.sleep(</span>
										<span style="COLOR: #000000">3000</span>
										<span style="COLOR: #000000">); <br /></span>
										<span style="COLOR: #008080">14</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_511_518_Open_Image" onclick="this.style.display='none'; Codehighlighter1_511_518_Open_Text.style.display='none'; Codehighlighter1_511_518_Closed_Image.style.display='inline'; Codehighlighter1_511_518_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_511_518_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_511_518_Closed_Text.style.display='none'; Codehighlighter1_511_518_Open_Image.style.display='inline'; Codehighlighter1_511_518_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span>
								</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (InterruptedException ex) </span>
								<span id="Codehighlighter1_511_518_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_511_518_Open_Text">
										<span style="COLOR: #000000">{ <br /></span>
										<span style="COLOR: #008080">15</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
								</span>
								<span style="COLOR: #000000"> <br /></span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_548_646_Open_Image" onclick="this.style.display='none'; Codehighlighter1_548_646_Open_Text.style.display='none'; Codehighlighter1_548_646_Closed_Image.style.display='inline'; Codehighlighter1_548_646_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_548_646_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_548_646_Closed_Text.style.display='none'; Codehighlighter1_548_646_Open_Image.style.display='inline'; Codehighlighter1_548_646_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">catch</span>
						<span style="COLOR: #000000"> (IOException e) </span>
						<span id="Codehighlighter1_548_646_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_548_646_Open_Text">
								<span style="COLOR: #000000">{ <br /></span>
								<span style="COLOR: #008080">17</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    System.out.println( <br /></span>
								<span style="COLOR: #008080">18</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     Thread.currentThread().getName() </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">  客户端断开连接</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">); <br /></span>
								<span style="COLOR: #008080">19</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">break</span>
								<span style="COLOR: #000000">; <br /></span>
								<span style="COLOR: #008080">20</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span>
						</span>
						<span style="COLOR: #000000"> <br /></span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span>
				</span>
		</div>
<img src ="http://www.blogjava.net/tambc/aggbug/89240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tambc/" target="_blank">tambc</a> 2006-12-21 11:40 <a href="http://www.blogjava.net/tambc/articles/89240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>