<收藏>Character Converter

 
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">

<style type=text/css>
td,body {  font-size: 13px;}
</style>

<script language="JavaScript">
<!--
function copy(ob) {
	var obj=findObj(ob); if (obj) { 
	obj.select();js=obj.createTextRange();js.execCommand("Copy");}
}

function paste(ob) {
	var obj=findObj(ob); if (obj) { 
	obj.select();js=obj.createTextRange();js.execCommand("Paste");}
}

function cut(ob) {
	var obj=findObj(ob); if (obj) { 
	obj.select();js=obj.createTextRange();js.execCommand("Cut");}
}

function findObj(n, d) { //v4.0
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
	if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function charPYStr(){
	return SC;
}

function ftPYStr(){
	return TC;
}

function traditionalized(cc){
	var str='';
	for(var i=0;i<cc.length;i++){
		if(charPYStr().indexOf(cc.charAt(i))!=-1)
			str+=ftPYStr().charAt(charPYStr().indexOf(cc.charAt(i)));
		else
			str+=cc.charAt(i);
	}
	return str;
}

function simplized(cc){
	var str='';
	for(var i=0;i<cc.length;i++){
		if(ftPYStr().indexOf(cc.charAt(i))!=-1)
			str+=charPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
		else
			str+=cc.charAt(i);
	}
	return str;
}

function convert(nOption){
	if(nOption==0)
		txt.value=simplized(txt.value);
	else
		txt.value=traditionalized(txt.value);
}

function toUnicode(){
		var cc=unHtmlFormat();
		var str='';
	for(var i=0;i<cc.length;i++){
		if(cc.charCodeAt(i)>255)
			str+=escape(cc.charAt(i)).replace('%u','\\u');
		else
			str+=cc.charAt(i);
	}
	txt.value=str;
}
function unUnicode(){
		var cc=unHtmlFormat();
		var re = /\\u([0-9|a-f|A-F]{4})/g;
		cc=cc.replace(re, "%u$1");
		re = /%u([0-9|a-f|A-F]{4})/g;
		cc=cc.replace(re, function($1){return unescape($1);});
		txt.value=cc;
}

function htmlFormat(){
		toUnicode();
		var cc=txt.value;
		var re = /\\u([0-9|a-f|A-F]{4})/g;
		cc=cc.replace(re, "&#x$1;");
		txt.value=cc;
}

function unHtmlFormat(){
		var cc=txt.value;
		var re = /&#x([0-9|a-f|A-F]{4});/g;
		cc=cc.replace(re, "\\u$1");
		return cc;
}

function utf16to8(str) {
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
        c = str.charCodeAt(i);
        if ((c >= 0x0001) && (c <= 0x007F)) {
            out += str.charAt(i);
        } else if (c > 0x07FF) {
            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
            out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
        } else {
            out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
        }
    }
    return out;
}

function utf8to16(str) {
    var out, i, len, c;
    var char2, char3;

    out = "";
    len = str.length;
    i = 0;
    while(i < len) {
        c = str.charCodeAt(i++);
        switch(c >> 4)
        { 
          case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
            // 0xxxxxxx
            out += str.charAt(i-1);
            break;
          case 12: case 13:
            // 110x xxxx   10xx xxxx
            char2 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
            break;
          case 14:
            // 1110 xxxx  10xx xxxx  10xx xxxx
            char2 = str.charCodeAt(i++);
            char3 = str.charCodeAt(i++);
            out += String.fromCharCode(((c & 0x0F) << 12) |
                                           ((char2 & 0x3F) << 6) |
                                           ((char3 & 0x3F) << 0));
            break;
        }
    }

    return out;
}

var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);

function base64encode(str) {
    var out, i, len;
    var c1, c2, c3;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
        c1 = str.charCodeAt(i++) & 0xff;
        if(i == len)
        {
            out += base64EncodeChars.charAt(c1 >> 2);
            out += base64EncodeChars.charAt((c1 & 0x3) << 4);
            out += "==";
            break;
        }
        c2 = str.charCodeAt(i++);
        if(i == len)
        {
            out += base64EncodeChars.charAt(c1 >> 2);
            out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
            out += base64EncodeChars.charAt((c2 & 0xF) << 2);
            out += "=";
            break;
        }
        c3 = str.charCodeAt(i++);
        out += base64EncodeChars.charAt(c1 >> 2);
        out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
        out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}

function base64decode(str) {
    var c1, c2, c3, c4;
    var i, len, out;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
        /* c1 */
        do {
            c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c1 == -1);
        if(c1 == -1)
            break;

        /* c2 */
        do {
            c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c2 == -1);
        if(c2 == -1)
            break;

        out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

        /* c3 */
        do {
            c3 = str.charCodeAt(i++) & 0xff;
            if(c3 == 61)
                return out;
            c3 = base64DecodeChars[c3];
        } while(i < len && c3 == -1);
        if(c3 == -1)
            break;

        out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

        /* c4 */
        do {
            c4 = str.charCodeAt(i++) & 0xff;
            if(c4 == 61)
                return out;
            c4 = base64DecodeChars[c4];
        } while(i < len && c4 == -1);
        if(c4 == -1)
            break;
        out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}

var SC=utf8to16(base64decode('6ZSV55qR6JS856KN54ix5Zez5auS55G35pqn6Zyt6LCZ6ZO16bmM6IKu6KKE5aWl5aqq6aqc6bOM5Z2d572i6ZKv5pGG6LSl5ZGX6aKB5Yqe57uK6ZKj5biu57uR6ZWR6LCk5Yml6aWx5a6d5oql6bKN6bio6b6F6L6I6LSd6ZKh54uI5aSH5oOr6bmO6LSy6ZSb57u356yU5q+V5q+Z5biB6Zet6I2c5ZOU5ruX6ZOL562a6Le46L6557yW6LSs5Y+Y6L6p6L6r6IuE57yP56y+5qCH6aqg6aOR6aOZ6ZWW6ZWz6bOU6bOW5Yir55iq5r+S5ruo5a6+5pGI5YKn57yk5qef5q6h6IaR6ZWU6auM6ayT6aW856aA5ouo6ZK16ZOC6amz6aW96ZK56bmB6KGl6ZK46LSi5Y+C6JqV5q6L5oOt5oOo54G/6aqW6buq6IuN6Iix5LuT5rKn5Y6V5L6n5YaM5rWL5oG75bGC6K+n6ZS45L6q6ZKX5pCA5o666J2J6aaL6LCX57yg6ZOy5Lqn6ZiQ6aKk5YaB6LCE6LC26JKH5b+P5am16aqj6KeH56aF6ZWh5Zy65bCd6ZW/5YG/6IKg5Y6C55WF5Lyl6IuM5oCF6ZiK6bKz6ZKe6L2m5b2756CX5bCY6ZmI6KGs5Lyn6LCM5qaH56Kc6b6A5pKR56ew5oOp6K+a6aqL5p6o5p+96ZOW6ZOb55e06L+f6amw6IC76b2/54K96aWs6bix5Yay5Yay6Jmr5a6g6ZOz55W06LiM562557u45L+m5bix6Zug5qmx5Y6o6ZSE6ZuP56GA5YKo6Kem5aSE5YiN57uM6Lmw5Lyg6ZKP55au6Zev5Yib5oCG6ZSk57yN57qv6bmR57uw6L6N6b6K6L6e6K+N6LWQ6bma6IGq6JGx5Zux5LuO5Lib6IuB6aqi5p6e5YeR6L6P6Lm/56qc5pK66ZSZ6ZSJ6bm+6L6+5ZOS6Z6R5bim6LS36aqA57uQ5ouF5Y2V6YO45o646IOG5oOu6K+e5by55q6a6LWV55iF566q5b2T5oyh5YWa6I2h5qGj6LCg56CA6KOG5o2j5bKb56W35a+855uX54SY54Gv6YKT6ZWr5pWM5rak6YCS57yU57G06K+L6LCb57uo6KeM6ZWd6aKg54K55Z6r55S15beF6ZK/55mr6ZKT6LCD6ZOr6bK36LCN5Y+g6bK96ZKJ6aG26ZSt6K6i6ZOk5Lii6ZOl5Lic5Yqo5qCL5Ya75bK96bir56qm54qK54us6K+76LWM6ZWA5riO5qSf54mN56yD6bup6ZS75pat57yO57CW5YWR6Zif5a+55oC86ZWm5ZCo6aG/6ZKd54KW6La45aS65aCV6ZOO6bmF6aKd6K655oG26aW/6LCU5Z6p6ZiP6L2t6ZSH6ZS36bmX6aKa6aKb6bOE6K+25YS/5bCU6aW16LSw6L+p6ZOS6bi46bKV5Y+R572a6ZiA54+Q55++6ZKS54Om6LSp6aWt6K6/57q66ZKr6bKC6aOe6K+95bqf6LS557uv6ZWE6bKx57q35Z2f5aWL5oSk57Kq5YG+5Liw5p6r6ZSL6aOO55av5Yav57yd6K695Yek5rKj6IKk6L6Q5oqa6L6F6LWL5aSN6LSf6K6j5aaH57ya5Yer6am457uC57uL6LWZ6bq46bKL6bOG6ZKG6K+l6ZKZ55uW6LWF5p2G6LW256eG6LWj5bC05pOA57uA5YaI5Yia6ZKi57qy5bKX5oiG6ZWQ552+6K+w57yf6ZSG5pCB6bi96ZiB6ZOs5Liq57ql6ZWJ6aKN57uZ5LqY6LWT57ug6bKg6b6a5a6r5bep6LSh6ZKp5rKf6Iuf5p6E6LSt5aSf6K+f57yR6KeP6JuK6aG+6K+C5q+C6ZK06ZSi6biq6bmE6bmY5YmQ5oyC6bi55o605YWz6KeC6aaG5oOv6LSv6K+W5o686bmz6bOP5bm/54q36KeE5b2S6b6f6Ze66L2o6K+h6LS15Yi95Yym5Yi/5aar5qGn6bKR6bOc6L6K5rua6KGu57uy6bKn6ZSF5Zu96L+H5Z+a5ZGZ5bi85qSB6J2I6ZOq6aqH6Z+p5rGJ6Zia57uX6aKJ5Y+354GP6aKi6ZiC6bmk6LS66K+D6ZiW6JuO5qiq6L2w6bi/57qi6buJ6K6n6I2t6Zez6bKO5aO25oqk5rKq5oi35rWS6bmV5ZOX5Y2O55S75YiS6K+d6aqF5qGm6ZOn5oCA5Z2P5qyi546v6L+Y57yT5o2i5ZSk55eq54SV5raj5aWC57yz6ZS+6bKp6buE6LCO6bOH5oyl6L6J5q+B6LS/56e95Lya54Op5rGH6K6z6K+y57uY6K+Z6I2f5ZOV5rWN57yL54+y5pmW6I2k5rWR6K+o6aaE6ZiN6I636LSn56W46ZKs6ZWs5Ye75py656ev6aWl6L+56K6l6bih57up57yJ5p6B6L6R57qn5oyk5Yeg6JOf5YmC5rWO6K6h6K6w6ZmF57un57qq6K6m6K+Y6I2g5Y+95ZOc6aql546R6KeK6b2R55+2576B6Jm/6Le76ZyB6bKa6bKr5aS56I2a6aKK6LS+6ZK+5Lu36am+6YOP5rWD6ZOX6ZWT6Juy5q2855uR5Z2a56y66Ze06Imw57yE6Iyn5qOA56Kx56G35ouj5o2h566A5L+t5YeP6I2Q5qeb6Ym06Le16LSx6KeB6ZSu6Iiw5YmR6aWv5riQ5rqF5ran6LCP57yj5oiL5ois552R6bmj56yV6bKj6Z6v5bCG5rWG6JKL5qGo5aWW6K6y6YWx57ub57yw6IO25rWH6aqE5aiH5pCF6ZOw55+r5L6l6ISa6aW657y057ue6L2/6L6D5oyi5bOk6bmq6bKb6Zi26IqC5rSB57uT6K+r5bGK55aW6aKM6bKS57Sn6ZSm5LuF6LCo6L+b5pmL54Os5bC95Yqy6I2G6IyO5Y266I2p6aaR57yZ6LWG6KeQ6bK45oOK57uP6aKI6Z2Z6ZWc5b6E55eJ56ue5YeA5Yit5rO+6L+z5byq6IOr6Z2T57qg5Y6p5pen6ZiE6big6bmr6am55Li+5o2u6ZSv5oOn5Ymn6K615bGm5qaJ6aOT6ZKc6ZSU56qt6b6D6bmD57ui6ZSp6ZWM6Zq96KeJ5Yaz57ud6LCy54+P6ZKn5Yab6aqP55qy5byA5Yev5YmA5Z6y5b++5oG66ZOg6ZS06b6b6Ze26ZKq6ZOQ6aKX5aOz6K++6aqS57yC6L2y6ZK26ZSe6aKU5Z6m5oGz6b6I6ZO/5oqg5bqT6KOk5Za+5Z2X5L6p6YOQ5ZOZ6ISN5a6954uv6auL55+/5pe35Ya16K+T6K+z6YKd5Zy557qp6LS25LqP5bK/56ql6aaI5rqD5Yyu6JKJ5oSm6IGp56+R6ZiD6ZSf6bKy5omp6ZiU6Ju06Jyh6IWK6I6x5p2l6LWW5bSD5b6V5rae5r+R6LWJ552Q6ZO855me57GB6JOd5qCP5oum56+u6ZiR5YWw5r6c6LCw5o+96KeI5oeS57yG54OC5rul5bKa5qaE5paT6ZWn6KS055CF6ZiG6ZSS5o2e5Yqz5rad5ZSg5bSC6ZOR6ZO555eo5LmQ6bOT6ZWt5Z6S57G75rOq6K+U57yn56+x54u456a76bKk56S85Li95Y6J5Yqx56C+5Y6G5rKl6Zq25L+q6YOm5Z2c6IuI6I6F6JOg5ZGW6YCm6aqK57yh5p6l5qCO6L2556C66ZSC6bmC55ag57Kd6Lee6Zuz6bKh6bOi5L+p6IGU6I6y6L+e6ZWw5oCc5raf5biY5pWb6IS46ZO+5oGL54K857uD6JS55aWB5r2L55CP5q6T6KOi6KOj6bKi57Ku5YeJ5Lik6L6G6LCF6a2J55aX6L696ZWj57yt6ZKM6bmp54yO5Li06YK76bOe5Yeb6LWB6JS65buq5qqp6L6a6LqP6b6E6ZOD54G15bKt6aKG57ur5qOC6JuP6bKu6aaP5YiY5rWP6aqd57u66ZWP6bmo6b6Z6IGL5ZKZ56y85Z6E5oui6ZmH6IyP5rO354+R5qCK6IOn56C75qW85aiE5pCC56+T5YG76JKM5Za95bWd6ZWC55iY6ICn6J286auF6Iqm5Y2i6aKF5bqQ54KJ5o6z5Y2k6JmP6bKB6LWC56aE5b2V6ZmG5Z6G5pK45Zmc6Ze+5rO45riM5qCM5qm56L2z6L6C6L6Y5rCH6IOq6bis6bmt6Ii76bKI5bOm5oyb5a2q5rum5Lmx6ISU5aiI5qC+6bi+6Yqu5oqh6L2u5Lym5LuR5rKm57q26K665Zu16JCd572X6YC76ZSj566p6aqh6aqG57uc6I2m54yh5rO65qSk6IS26ZWZ6am05ZCV6ZOd5L6j5bGh57yV6JmR5ruk57u/5qaI6KSb6ZSK5ZGS5aaI546b56CB6JqC6ams6aqC5ZCX5ZSb5ay35p2p5Lmw6bqm5Y2W6L+I6ISJ5Yqi556S6aaS6Juu5ruh6LCp57ym6ZWY6aKh6bOX54yr6ZSa6ZOG6LS46bq95rKh6ZWB6Zeo6Ze35Lus5omq54SW5oeR6ZKU6ZSw5qKm55yv6LCc5byl6KeF5bmC6IqI6LCn54yV56Wi57u157yF5riR6IW86bu+5bqZ57yI57yq54Gt5oKv6Ze96Ze157yX6bij6ZOt6LCs6LCf6JOm6aaN5q6B6ZWG6LCL5Lqp6ZK85ZGQ6ZKg57qz6Zq+5oyg6ISR5oG86Ze56ZOZ6K636aaB5YaF5ouf6IW76ZOM6bK15pK16L6H6bK26YW/6bif6IyR6KKF6IGC5ZWu6ZWK6ZWN6Zmn6JiW5Zer6aKf6LmR5p+g54ue5a6B5oun5rOe6IuO5ZKb6IGN6ZKu57q96IST5rWT5Yac5L6s5ZOd6am96ZKV6K+65YKp55af5qyn6bil5q605ZGV5rKk6K605oCE55Ov55uY6LmS5bqe5oqb55ax6LWU6L6U5Za36bmP57qw57206ZON6aqX6LCd6aqI6aOY57yl6aKR6LSr5auU6Iu55Yet6K+E5rO86aKH6ZKL5omR6ZO65py06LCx6ZWk6ZWo5qCW6ISQ6b2Q6aqR5bKC5ZCv5rCU5byD6K6r6JWy6aqQ57uu5qGk56Kb6aKA6aKD6bON54m16ZKO6ZOF6L+B562+6LCm6ZKx6ZKz5r2c5rWF6LC05aCR5L2l6I2o5oKt6aqe57yx5qSg6ZKk5p6q5ZGb5aKZ6JS35by65oqi5aux5qiv5oiX54Kd6ZSW6ZS16ZWq576f6LeE6ZS55qGl5LmU5L6o57+Y56qN6K+u6LCv6I2e57yy56GX6Le356qD5oOs6ZSy566n6ZKm5Lqy5a+d6ZST6L275rCi5YC+6aG36K+35bqG5o+/6bKt55C856m36IyV6Jux5bev6LWH6Jmu6bOF6LaL5Yy66Lqv6amx6b6L6K+O5bKW6ZiS6KeR6biy6aKn5p2D5Yqd6K+g57u76L6B6ZOo5Y206bmK56Gu6ZiV6ZiZ5oKr6K6p6aW25omw57uV6I2b5aiG5qGh54Ot6Z+n6K6k57qr6aWq6L2r6I2j57uS5bWY6J2+57yb6ZO36aKm6L2v6ZSQ6Jqs6Zew5ram5rSS6JCo6aOS6bOD6LWb5Lye5q+157OB5Lin6aqa5omr57yr5rap5ZWs6ZOv56mR5p2A5Yi557qx6ZOp6bKo562b5pmS6YW+5Yig6Zeq6ZmV6LWh57yu6K6q5aeX6aqf6ZKQ6bOd5aKS5Lyk6LWP5Z6n5q6H6Kee54On57uN6LWK5pGE5oWR6K6+5Y6N5rug55Wy57uF5a6h5am26IK+5riX6K+c6LCC5riW5aOw57uz6IOc5biI54uu5rm/6K+X5pe26JqA5a6e6K+G6am25Yq/6YCC6YeK6aWw6KeG6K+V6LCl5Z+Y6I6z5byR6L286LSz6ZOI6bKl5a+/5YW957u25p6i6L6T5Lmm6LWO5bGe5pyv5qCR56uW5pWw5pGF57q+5biF6Zep5Y+M6LCB56iO6aG66K+056GV54OB6ZOE5Lid6aWy5Y6u6am357yM6ZS26bi26IC45oCC6aKC6K686K+15pOe6Jau6aaK6aOV6ZS86IuP6K+J6IKD6LCh56ij6Jm96ZqP57ul5bKB6LCH5a2Z5o2f56yL6I2q54uy57yp55CQ6ZSB5ZSi552D542t5oye6Ze86ZOK6bOO5Y+w5oCB6ZKb6bKQ5pGK6LSq55ir5rup5Z2b6LCt6LCI5Y+55piZ6ZK96ZSs6aG45rGk54Or5YKl6aWn6ZO06ZWX5rab57um6K6o6Z+s6ZO96IW+6KqK6ZSR6aKY5L2T5bGJ57yH6bmI6ZiX5p2h57Kc6b6G6bKm6LS06ZOB5Y6F5ZCs54OD6ZOc57uf5oG45aS06ZKt56eD5Zu+6ZKN5Zui5oqf6aKT6JyV6aWo6ISx6bi16amu6am85qSt566o6byN6KKc5aiy6IW95byv5rm+6aG95LiH57qo57u+572R6L6L6Z+m6L+d5Zu05Li65r2N57u06IuH5Lyf5Lyq57qs6LCT5Y2r6K+/5biP6Zex5rKp5rag546u6Z+q54Kc6bKU5rip6Ze757q556iz6Zeu6ZiM55Ou5oyd6JyX5rah56qd5Y2n6I606b6M5ZGc6ZKo5LmM6K+s5peg6Iqc5ZC05Z2e6Zu+5Yqh6K+v6YKs5bqR5oCD5aap6aqb6bmJ6bmc6ZSh54m66KKt5Lmg6ZOj5oiP57uG6aWp6ZiL54666KeL6Jm+6L6W5bOh5L6g54ut5Y6m5ZCT56GW6bKc57qk6LSk6KGU6Zey5pi+6Zmp546w54yu5Y6/6aaF576h5a6q57q/6IuL6I626JeT5bKY54yD5ai06bmH55er6Jqd57G86Le55Y6i6ZW25Lmh6K+m5ZON6aG56IqX6aW36aqn57yD6aOo6JCn5Zqj6ZSA5pmT5ZW45ZOT5r2H6aqB57uh5p6t566r5Y2P5oyf5pC66IOB6LCQ5YaZ5rO76LCi5Lq15pK357uB57ys6ZSM6KGF5YW06ZmJ6I2l5Ye25rG56ZSI57uj6aaQ6bi66Jma5ZiY6aG76K645Y+Z57uq57ut6K+p6aG86L2p5oKs6YCJ55mj57ua6LCW6ZOJ6ZWf5a2m6LCR5rO26bOV5YuL6K+i5a+76amv6K6t6K6v6YCK5Z+Z5rWU6bKf5Y6L6bim6bit5ZOR5Lqa6K625Z6t5aiF5qGg5rCp6ZiJ54Of55uQ5Lil5bKp6aKc6ZiO6Imz5Y6M56Ca5b2m6LCa6aqM5Y6j6LWd5L+o5YWW6LCz5oG56Zer6YW96a2H6aSN6by56biv5p2o5oms55ah6Ziz55eS5YW75qC354KA55G25pGH5bCn6YGl56qR6LCj6I2v6L266bme6bOQ54i36aG15Lia5Y+26Z2l6LCS6YK65pmU54Oo5Yy76ZOx6aKQ6YGX5Luq6JqB6Im65Lq/5b+G5LmJ6K+j6K6u6LCK6K+R5byC57uO6K+S5ZGT5bOE6aW05oC/6am/57yi6L226LS76ZKH6ZWS6ZWx55iX6Iij6I2r6Zi06ZO26aWu6ZqQ6ZOf55i+5qix5am06bmw5bqU57yo6I656JCk6JCl6I2n6J2H6LWi6aKW6IyU6I666JCm6JOl5pKE5Zik5rui5r2G55KO6bmm55i/6aKP572C5ZOf5oul5L2j55eI6LiK5ZKP6ZWb5LyY5b+n6YKu6ZOA54q56K+x6I646ZOV6bG/6IiG6bG85riU5aix5LiO5bG/6K+t54ux6KqJ6aKE6amt5Lyb5L+j6LCA6LCV6JOj5bWb6aWr6ZiI5aaq57qh6KeO5qyk6ZKw6bmG6bms6b6J6biz5riK6L6V5Zut5ZGY5ZyG57yY6L+c5qm86bii6byL57qm6LeD6ZKl57Kk5oKm6ZiF6ZK66YOn5YyA6Zmo6L+Q6JW06YWd5pmV6Z+16YOT6Iq45oG95oSg57qt6Z+r5q6S5rCy5p2C54G+6L295pSS5pqC6LWe55OS6Lax6Yy+6LWD6ISP6am15Ye/5p6j6LSj5oup5YiZ5rO96LWc5ZWn5bi7566m6LS86LCu6LWg57u857yv6L2n6ZOh6Ze45qCF6K+I5paL5YC65q+h55uP5pap6L6X5bSt5qCI5oiY57u96LC15byg5rao5biQ6LSm6IOA6LW16K+P6ZKK6Juw6L6Z6ZSX6L+Z6LCq6L6E6bmn6LSe6ZKI5L6m6K+K6ZWH6Zi15rWI57yc5qGi6L246LWI56Wv6bip5oyj552B54uw5LqJ5bin55eH6YOR6K+B6K+k5bOl6ZKy6ZOu562d57uH6IGM5omn57q45oya5o635bic6LSo5rue6aqY5qCJ5qCA6L216L2+6LS96bi36Juz57W36Lis6Liv6Kev6ZKf57uI56eN6IK/5LyX6ZS66K+M6L2055qx5pi86aqk57qj57uJ54yq6K+46K+b54Ob556p5Zix6LSu6ZO46am75Lyr5qeg6ZOi5LiT56CW6L2s6LWa5ZWt6aaU6aKe5qGp5bqE6KOF5aaG5aOu54q26ZSl6LWY5Z2g57yA6aqT57yS6LCG5YeG552A5rWK6K+86ZWv5YW56LWE5riN6LCY57yB6L6O6LWA55ym6ZSx6b6H6bK76Liq5oC757q15YGs6YK56K+56am66bKw6K+F57uE6ZWe6ZK757y16Lqc6bOf57+x5bm25Y2c5rKJ5LiR5reA6L+t5paX6IyD5bmy55qL56GF5p+c5ZCO5LyZ56e45p2w6K+A5aS46YeM5YeM5LmI6ZyJ5o275YeE5omm5Zyj5bC45oqs5raC5rS85ZaC5rGh6ZSo5ZK46J2O5b2d5raM5ri45ZCB5b6h5oS/5bKz5LqR54G25omO5pyt562R5LqO5b+X5rOo5YeL6K6g6LCr6YOE5YuQ5Ye85Z2C5Z6F5Z605Z+v5Z+d6IuY6I2s6I2u6I6c6I686I+w6JeB5o+45ZCS5ZCj5ZKU5ZKd5ZK05ZmY5Zm85Zqv5bme5bKZ5bW05b235b6854q454uN6aaA6aaH6aaT6aaV5oSj5oa35oeU5Lis5rqG5ruf5rq35ryk5r205r6555Sv57qf57uU57ux54+J5p6n5qGK5qGJ5qeU5qml6L2x6L236LWN6IK36IOo6aOa54Wz54WF54aY5oSN5re856Cc56OZ55yN6ZKa6ZK36ZOY6ZOe6ZSD6ZSN6ZSO6ZSP6ZSY6ZSd6ZSq6ZSr6ZS/6ZWF6ZWO6ZWi6ZWl6ZWp6ZWy56iG6bmL6bmb6bmx55as55a055eW55mv6KOl6KWB6ICi6aKl6J6o6bq06bKF6bKG6bKH6bKe6bK06bK66bK86bOK6bOL6bOY6bOZ6Z6S6Z606b2E5rGH'));

var TC=utf8to16(base64decode('6YyS55qa6Je556SZ5oSb5Zmv5ayh55Km5puW6Z2E6Kuz6Yqo6bWq6aqv6KWW5aWn5aq86amB6bCy5aOp57236YiA5pO65pWX5ZSE6aCS6L6m57WG6YiR5bmr57aB6Y6K6KyX5Ymd6aO95a+25aCx6a6R6bSH6b2Z6Lyp6LKd6YuH54u95YKZ5oaK6bWv6LOB6Yyb57mD562G55Wi5paD5bmj6ZaJ6JO95Ze25r236YmN56+z6LmV6YKK57eo6LK26K6K6L6v6L6u6IqQ57e257Gp5qiZ6amD6aKu6aOG6Y+i6ZGj6bC+6bGJ5Yil55mf54CV5r+x6LOT5pOv5YSQ57m95qqz5q6v6IeP6ZGM6auV6ayi6aSF56if5pKl57y96YmR6aeB6aSR6Yi46bWT6KOc6Yi96LKh5Y+D6KC25q6Y5oWa5oWY54em6amC6buy6JK86ImZ5YCJ5ruE5buB5YG05YaK5ris5oO75bGk6Kmr6Y2k5YSV6Ye15pSZ5pG76J+s6aWe6K6S57qP6Y+f55Si6Zeh6aGr5ZuF6KuC6K6W6JWG5oe65ayL6amP6KaY56aq6ZCU5aC05ZiX6ZW35YSf6IW45bug5pqi5YCA6JCH5oK16Za26a+n6YiU6LuK5b6556Go5aG16Zmz6KWv5YKW6Ku25qus56Oj6b2U5pKQ56ix5oey6Kqg6aiB5qOW5qqJ6Yuu6ZC655mh6YGy6aaz5oGl6b2S54a+6aOt6bSf5rKW6KGd6J+y5a+16YqD55aH6LqK57GM57ai5YSU5bms6K6O5qul5bua6Yuk6Zub56SO5YSy6Ke46JmV6Iq757WA6LqV5YKz6Yen55ih6ZeW5Ym15oS06YyY57ae57SU6baJ57a96Lyf6b2q6L6t6Kme6LOc6ba/6IGw6JSl5Zuq5b6e5Y+i6JOv6amE5qiF5rmK6Lyz6Lql56uE5pSb6Yyv6Yq86bm66YGU5Zmg6Z+D5bi26LK46aeY57S/5pOU5Zau6YSy5pKj6Ia95oaa6KqV5b2I5q6r6LOn55mJ57Ce55W25pOL6buo6JWp5qqU6K6c56Kt6KWg5pCX5bO256ax5bCO55uc54e+54eI6YSn6ZCZ5pW15ruM6YGe57eg57O06KmG6Kum57aI6Ka/6Y+R6aGb6bue5aKK6Zu75beU6Yi/55my6Yej6Kq/6Yqa6a+b6Kuc55aK6bCI6YeY6aCC6Yyg6KiC6YuM5Lif6Yqp5p2x5YuV5qOf5YeN5bSg6baH56uH54qi542o6K6A6LOt6Y2N54CG5qud54mY56+k6bu36Y2b5pa357ee57Gq5YWM6ZqK5bCN5oef6ZCT5Zm46aCT6YiN54eJ6LqJ5aWq5aKu6ZC46bWd6aGN6Kib5oOh6aST6Kuk5aCK6Za86Lub6Yuo6Y2U6baa6aGO6aGT6bG36KqS5YWS54i+6aSM6LKz6YKH6Ym66bSv6a6e55m8572w6Zal55C656Ss6Yep54Wp6LKp6aOv6Kiq57Sh6YiB6a206aOb6Kq55bui6LK757eL6ZCo6a+h57Sb5aKz5aWu5oak57Oe5YOo6LGQ5qWT6YuS6aKo55iL6aau57ir6Ku36bOz54GD6Iaa6Ly75pKr6LyU6LOm5b6p6LKg6KiD5amm57ib6bOn6aeZ57Sx57S86LO76bqp6a6S6bCS6YeT6Kmy6Yij6JOL6LOF5qG/6LaV56iI6LSb5bC35pCf57S65bKh5Ymb6Yu857ax5bSX5oiH6Y6s552q6Kql57ie6Yuv5pOx6bS/6Zaj6Ym75YCL57SH6Y6Y5r2B57Wm5LqZ6LOh57aG6a+B6b6U5a6u6Z6P6LKi6Ymk5rqd6IyN5qeL6LO85aSg6Kms57ex6Kav6KCx6aGn6KmB6L2C6Yi36Yyu6bSj6bWg6ba75Ymu5o6b6bSw5pGR6Zec6KeA6aSo5oWj6LKr6Km/5pGc6bib6bCl5buj54236KaP5q246b6c6Zao6LuM6Kmt6LK05YqK5Yyt5YqM5aqv5qqc6a6t6bGW6Lyl5ru+6KKe57eE6a+A6Y2L5ZyL6YGO5aCd5ZK85bmX5qeo6J+I6Ym/6aet6Z+T5ryi6Zee57WO6aCh6Jmf54Gd6aGl6Zah6ba06LOA6Ki26ZeU6KCj5qmr6L2f6bS757SF6buM6KiM6JGS6ZaO6bGf5aO66K235rus5oi25ru46baY5Zip6I+v55Wr5YqD6Kmx6amK5qi66Y+15oe35aOe5q2h55Kw6YKE57ep5o+b5Zaa55iT54Wl5riZ5aWQ57mv6Y2w6a+H6buD6KyK6bCJ5o+u6Lyd5q+A6LOE56mi5pyD54e05Yyv6Kux6Kqo57mq6Km86JaI5Zmm5r6u57mi55C/5pqJ6JG35ri+6Kui6aSb6Za9542y6LKo56aN6Yil6ZGK5pOK5qmf56mN6aWR6Leh6K2P6Zue57i+57ed5qW16Lyv57Sa5pOg5bm+6JaK5YqR5r+f6KiI6KiY6Zqb57m857SA6KiQ6Kmw6Ja65Ziw5ZqM6aml55Kj6Kas6b2P56Ov576I6KCG6LqL6Zy96bGt6a+95aS+6I6i6aCw6LOI6YmA5YO56aeV6YOf5rW56YuP6Y616J+v5q6y55uj5aCF566L6ZaT6Imx57eY57mt5qqi5aC/6bm85o+A5pK/57Ch5YSJ5rib6Jam5qq76ZGS6LiQ6LOk6KaL6Y216Imm5YqN6aSe5ry45r+65r6X6Kur57iR5oiU5oip55686ba8562n6bC56Z+J5bCH5ry/6JSj5qez542O6Kyb6Yas57Wz6Z+B6Iag5r6G6amV5ayM5pSq6Ym455+v5YOl6IWz6aSD57mz57We6L2O6LyD5pKf5bag6bem6a6r6ZqO56+A5r2U57WQ6Kqh5bGG55mk6aCc6a6a57eK6Yym5YOF6Ky56YCy5pmJ54e855uh5YuB6I2K6I6W5be56JeO6aWJ57iJ6LSQ6Kay6a+o6ama57aT6aC46Z2c6Y+h5b6R55eZ56u25YeI5YmE5raH6YCV5byz6ISb6Z2a57O+5buE6IiK6ayu6bOp6bey6aeS6IiJ5pOa6Yu45oe85YqH6KmO5bGo5qu46aK26YmF6Yum56q26b2f6bWR57W56YyI6ZCr6ZuL6Ka65rG657WV6K2O546o6Yie6LuN6ae/55q46ZaL5Yex5Ym05aGP5oS+5oS36Y6n6Y2H6b6V6ZaM6Yin6Yqs6aGG5q686Kqy6aiN57eZ6Lu76Yiz6YyB6aC35aK+5oeH6b2m6Y+X5pGz5bqr6KSy5Zqz5aGK5YSI6YS25Zmy6Ia+5a+s542q6auW56Sm5pug5rOB6KqG6KqR6YS65aOZ57qK6LK66Jmn5beL56q66aWL5r2w5Yyx6JWi5oaS6IG157Cj6Zar6YyV6a+k5pO06ZeK6KCQ6KCf6IeY6JCK5L6G6LO05bSN5b6g5re254Co6LOa552e6Yy455mp57Gf6JeN5qyE5pSU57GD6ZeM6Jit54C+6K6V5pSs6Ka95oe257qc54ib5r+r5bWQ5qyW5paV6ZGt6KWk55Gv6Zas6YuD5pKI5Yue5r6H5Ziu5baX6Yqg6ZCS55mG5qiC6bCz6ZCz5aOY6aGe5rea6KqE57iy57Gs6LKN6Zui6a+J56au6bqX5Y6y5Yu156Sr5q2354Cd6Zq45YS36YWI5aOi6Je26JKe6Ji65Zqm6YKQ6amq57it5quq5quf6L2i56Sq6Yuw6bid55mY57Oy6LqS6Z2C6bG66bGn5YCG6IGv6JOu6YCj6ZCu5oaQ5ryj57C+5paC6IeJ6Y+I5oiA54WJ57e06Jie5aWp54Cy55KJ5q6u6KSz6KWd6bCx57On5ra85YWp6Lyb6KuS6a2O55mC6YG86ZCQ57ma6YeV6bev54216Ieo6YSw6bGX5Yec6LOD6Je65bup5qqB6L2U6Lqq6b2h6Yi06Z2I5ba66aCY57a+5qye6J+26a+q6aS+5YqJ54CP6aiu57a56Y6m6bea6b6N6IG+5Zqo57Gg5aOf5pSP6Zq06Jii54Cn55OP5quz5pyn56Sx5qiT5amB5pGf57CN5YOC6JSe5ZiN5baB6Y+k55i66ICs6J676auP6JiG55un6aGx5bus54iQ5pOE6bm16Jmc6a2v6LOC56W/6YyE6Zm45aOa5pO85ZqV6Zat54CY5rel5quo5quT6L2k6LyF6L2G5rCM6Iea6biV6be66Imr6bG45beS5pSj5a2/54Gk5LqC6Ieg5a2M5qyS6bie6ZG+5o6E6Lyq5YCr5L6W5req57a46KuW5ZyH6Ji/576F6YKP6ZG857Gu6ai+6aex57Wh54qW546A5r+85qyP6IWh6Y+N6ami5ZGC6YuB5L625bGi57i35oWu5r++57ag5qua6KS46Yud5Zi45aq955Gq56K86J6e6aas57215ZeO5Zic5ayk5qaq6LK36bql6LOj6YKB6ISI5Yux556e6aWF6KC75ru/6Ky+57i16Y+d6aGZ6bC76LKT6Yyo6Yma6LK/6bq85rKS6Y6C6ZaA5oK25YCR5o2r54ec5oej6Y2G6Yyz5aSi556H6KyO5b2M6KaT5Yaq576L6KyQ542856aw57a/57es5r6g6Z2m6bu95buf57ey57mG5ruF5oar6Zap6ZaU57eh6bO06YqY6Kys6Kyo6amA6aWD5q2/6Y+M6KyA55Wd6Yms5ZC26YiJ57SN6Zuj5pKT6IWm5oOx6ayn6ZCD6Kil6aSS5YWn5pOs6Iap6Yiu6a+i5pSG6Lym6a+w6YeA6bOl6JSm6KOK6IG25ZqZ6ZG36Y6z6ZqJ6JiX5ZuB6aGi6Lqh5qq4542w5a+n5pOw5r+Y6Iun5ZqA6IG56YiV57SQ6Ia/5r+D6L6y5YSC5Zml6aeR6Ye56Ku+5YS655in5q2Q6beX5q+G5ZiU5rya6Kyz5oWq55SM55uk6Lmj6b6Q5ouL55qw6LOg6L2h5Zm06bWs57SV576G6Yi56aiZ6Kue6aei6aOE57i56aC76LKn5ayq6JiL5oaR6KmV5r2R6aCX6YeZ5pKy6Yuq5qi46K2c6Y+36ZCg5qOy6IeN6b2K6aiO6LGI5ZWf5rCj5qOE6KiW6JiE6aiP57a65qa/56On6aCO6aCP6bCt54m96Yes6Ymb6YG357C96KyZ6Yyi6YmX5r2b5re66K205aG55YOJ6JWB5oWz6air57m+5qen6YiQ5qeN5ZeG5aK76JaU5by35pC25ayZ5qqj5oin54aX6YyG6Y+Y6Y+5576l6LmM6Y2s5qmL5Zas5YOR57+556uF6Kqa6K2Z6JWO57mw56O96Lm656uK5oSc6Y2l56+L5qy96Kaq5a+i6Yuf6LyV5rCr5YK+6aCD6KuL5oW25pKz6a+W55OK56qu54Wi6Ju65bew6LOV6J+j6bCN6Lao5Y2A6LuA6amF6b2y6KmY5baH6ZeD6Ka36bSd6aG05qyK5Yu46Kmu57aj6LyH6YqT5Y276bWy56K66ZeL6ZeV5oSo6K6T6aWS5pO+57me6JWY5ayI5qmI54ax6Z+M6KqN57SJ6aOq6LuU5qau57Wo5ba46KCR57if6Yqj6aGw6Luf6Yqz6JyG6ZaP5r2k54GR6Jap6aKv6bCT6LO95YKY5q+/57Od5Zaq6ai35o6D57mF5r6A5ZeH6Yqr56mh5q665YmO57SX6Y6p6a+K56+p5pus6YeD5Yiq6ZaD6Zmc6LSN57mV6KiV5aeN6ai46Yek6bGU5aKR5YK36LOe5Z2w5q6k6Ke054eS57S56LOS5pSd5oe+6Kit5Y6Z54GE55Ws57Sz5a+p5ay46IWO5ruy6Km16KuX54CL6IGy57mp5Yud5bir542F5r+V6Kmp5pmC6J2V5a+m6K2Y6aeb5Yui6YGp6YeL6aO+6KaW6Kmm6Kya5aGS6JKU5byS6Lu+6LKw6Yiw6bCj5aO9542457as5qie6Ly45pu46LSW5bGs6KGT5qi56LGO5pW45pSE57ST5bil6ZaC6ZuZ6Kqw56iF6aCG6Kqq56Kp54iN6ZGg57Wy6aO85bud6aef57em6Y226bel6IGz5oWr6aCM6Kif6Kqm5pO76Jeq6aS/6aK86Y6q6JiH6Ki06IKF6KyW56mM6ZuW6Zqo57aP5q2y6Kq25a2r5pCN562N6JOA54y757iu55Gj6Y6W5Zep6ISn54265pK76Zel6YmI6bCo6Ie65oWL6Yim6a6Q5pSk6LKq55mx54GY5aOH6K2a6KuH5ZiG5puH6Ymt6Yyf6aCH5rmv54eZ5YS76aSz6ZCL6Y+c5r+k57Wz6KiO6Z+c6Yux6aiw6KyE6Yq76aGM6auU5bGc57e56bWc6ZeQ5qKd57O26b2g6bC36LK86ZC15buz6IG954O06YqF57Wx5oWf6aCt6YiE56a/5ZyW6Ye35ZyY5pG26aC56Ju76aOp6ISr6bSV6aax6aed5qmi57Gc6byJ6KWq5aqn6IaD5b2O54Gj6aCR6JCs57SI57aw57ay6Lye6Z+L6YGV5ZyN54K65r+w57at6JGm5YGJ5YG957ev6KyC6KGb6KuJ5bmD6ZeI5rqI5r2/55GL6Z+Z54WS6a6q5rqr6IGe57SL56mp5ZWP6Za/55SV5pK+6J245rim56qp6Iel6JC16b235Zea6Y6i54OP6Kqj54Sh6JWq5ZCz5aGi6Zyn5YuZ6Kqk6YSU5buh5oau5au16aiW6bWh6bap6Yyr54qn6KWy57+S6YqR5oiy57Sw6aS86ayp55K96Kah6J2m6L2E5bO95L+g54u55buI5ZqH56Gk6a6u57qW6LOi6Yqc6ZaR6aGv6Zqq54++542757ij6aSh576o5oay57ea6I6n6Jaf6Jia5bO0542r5au76be055mH6KCU56eI6Lqa5buC6ZGy6YSJ6Kmz6Z+/6aCF6JaM6aSJ6amk57eX6aWX6JWt5ZuC6Yq35puJ5Ziv5Zi154Cf6amN57aD5qKf57Cr5Y2U5oy+5pSc6ISF6Kun5a+r54CJ6Kyd6KS75pO357Sy57qI6YuF6YeB6IiI6ZmY5ruO5YWH5rS26Yq557mh6aWI6bWC6Jmb5ZmT6aCI6Kix5pWY57eS57qM6Kmh6aCK6LuS5oe46YG455ms57Wi6Ku86YmJ6Y+H5a246KyU5r6p6bGI5Yub6Kmi5bCL6aa06KiT6KiK6YGc5aGk5r2v6bGY5aOT6bSJ6bSo5ZWe5Lqe6Kid5Z+h5amt5qSP5rCs6Za554WZ6bm95Zq05beW6aGP6Za76Im35Y6t56Gv5b2l6Ku66amX5Y606LSX5YS85YWX6K6e5oeo6ZaG6YeF6a2Y6aWc6by06bSm5qWK5o+a55iN6Zm955mi6aSK5qij54Ws55Gk5pCW5aCv6YGZ56qv6Kyg6Jel6Lu66beC6bCp54i66aCB5qWt6JGJ6Z2o6KyB6YS05puE54eB6Yar6Yql6aCk6YG65YSA6J+76Jed5YSE5oa2576p6Kmj6K2w6Kq86K2v55Ww57m56KmS5ZuI5ban6aO05oeM6amb57iK6Lu86LK96YeU6Y6w6ZC/55ie6Imk6JSt6Zmw6YqA6aOy6Zqx6Yqm55mu5qu75ayw6be55oeJ57qT55Gp6J6i54ef54aS6KCF6LSP56mO5aGL6bav57iI6Y6j5pSW5Zq254CF54Cg55OU6bia55mt6aCm572M5Zay5pOB5YKt55mw6Li06Kmg6Y+e5YSq5oaC6YO16Yi+54y26KqY6JWV6Yqq6a236Ly/6a2a5ryB5aib6IiH5ba86Kqe542E6K296aCQ6aat5YK05L+B6Kub6Kut6JW35bSz6aOr6Za+5auX57SG6Kam5q2f6Yi66bWS6be46b2s6bSb5re16L2F5ZyS5ZOh5ZyT57ej6YGg5que6bO26bu/57SE6LqN6ZGw57K15oKF6Zax6Yme6YSW5Yu76ZqV6YGL6JiK6Yae5pqI6Z+76YSG6JWT5oOy5oWN57Sc6Z+e5q6e5rCz6Zuc54G96LyJ5pSi5pqr6LSK55Oa6Lay6Y+o6LST6Ief6aeU6ZG/5qOX6LKs5pOH5YmH5r6k6LO+5ZiW5bmY57CA6LOK6K2W6LSI57ac57mS6LuL6Y2Y6ZaY5p+16KmQ6b2L5YK15rCI55ue5pas6Ly+5baE5qOn5oiw57a76K2r5by15ryy5biz6LOs6IS56LaZ6KmU6YeX6J+E6L2N6Y266YCZ6Kyr6LyS6beT6LKe6Yed5YG16Ki66Y6u6Zmj5rme57id5qWo6Lur6LOR56aO6bSG5o6Z552c54yZ54it5bmA55ml6YSt6K2J6KuN5bSi6Ymm6Yya566P57mU6IG35Z+357SZ5pGv5pOy5bmf6LOq5ruv6ait5qub5qKU6Lu56LyK6LSE6beZ6J6E57i26LqT6LqR6Ke26ZCY57WC56iu6IWr55y+6Y2+6KyF6Lu455q65pmd6amf57SC57iQ6LGs6Ku46KqF54et55+a5ZuR6LKv6ZGE6aeQ5L2H5qun6YqW5bCI56Oa6L2J6LO65ZuA6aWM6aGz5qiB6I6K6KOd5aad5aOv54uA6YyQ6LSF5aKc57a06aiF57iL6KuE5rqW6JGX5r+B6KuR6ZCy6Iyy6LOH5rys6Kuu57eH6Lyc6LKy55yl6YyZ6b2c6a+U6Lmk57i957ix5YKv6YSS6KuP6ai26a+r6Kmb57WE6Y+D6YmG57qY6Lqm6bGS57+65Lim6JSU5rKI6Yac5r6x5Y+g6ayl56+E5bm56Iev55+95quD5b6M5aSl56it5YKR6Kij6KqH6KOP5rep6bq96bu05pKa5reS5omh6IGW5bGN5pOh5aGX56qq6aS15rGZ6Y2B6bm56KCN5b2c5rmn6YGK57Gy56am6aGY5ba96Zuy56uI57Su5YqE56+J5pa86KqM6Ki76ZuV6KiB6K2+6YOk54yb5rC56Ziq5aOf5aCW5Z615aKK5qq+6JWS6JGk6JOn6JKT6I+H5qeB5pGj5ZKk5ZSa5ZOi5Zmd5ZmF5pKF5YqI6KyU6KWG5ba06ISK5Lu/5YOl542B6bqF6aSY6aS36aWK6aWi5qWe5oC15oeN54i/5ry154Gp5re35r+r54Cm5reh5a+n57O457Wd57eU55GJ5qKY5qOs5qGI5qmw5qur6Luy6Luk6LOr6IaB6IWW6aOI57OK54WG5rqc5rmj5ri656K45ru+556Y6YiI6YmV6Yuj6Yqx6Yul6Yu26ZCm6ZCn6Y2p6Y2A6Y2D6YyH6Y6E6Y6H6Y6/6ZCd6ZGl6ZG56ZGU56mt6baT6bal6biM55mn5bGZ55iC6IeS6KWH57mI6ICu6aGs6J+O6bqv6a6B6a6D6a6O6a+X6a+d6a+06bGd6a+/6bCg6bC16bGF6Z696Z+d6b2H5ruZ'));

//input base64 encode
function decode(str){
        //document.form1.txt.value=utf8to16(base64decode(str));
        txt.value=utf8to16(base64decode(str));
}

function encode(str){
        //document.form1.txt.value=base64encode(utf16to8(str));
        txt.value=base64encode(utf16to8(str));
}

function encode_utf8(rawtext) {
			 rawtext = rawtext.replace(/\r\n/g,"\n");
			 var utftext = "";
			 for(var n=0; n<rawtext.length; n++)
							 {
							 //
							 var c=rawtext.charCodeAt(n);
							 // 0-127 => 1byte
							 if (c<128)
											 utftext += String.fromCharCode(c);
							 // 127 - 2047 => 2byte
							 else if((c>127) && (c<2048)) {
											 utftext += String.fromCharCode((c>>6)|192);
											 utftext += String.fromCharCode((c&63)|128);}
							 // 2048 - 66536 => 3byte
							 else {
											 utftext += String.fromCharCode((c>>12)|224);
											 utftext += String.fromCharCode(((c>>6)&63)|128);
											 utftext += String.fromCharCode((c&63)|128);}
							 }
			 return utftext;
}
function decode_utf8(utftext) {
			 var plaintext = ""; var i=0; var c=c1=c2=0;
			 while(i<utftext.length)
							 {
							 c = utftext.charCodeAt(i);
							 if (c<128) {
											 plaintext += String.fromCharCode(c);
											 i++;}
							 else if((c>191) && (c<224)) {
											 c2 = utftext.charCodeAt(i+1);
											 plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
											 i+=2;}
							 else {
											 c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
											 plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
											 i+=3;}
							 }
			 return plaintext;
}

function readFile() {

	if(myfile.value.length<1)
		return;

	var fso, f;
	var ForReading = 1, ForWriting = 2;
	try{
		fso = new ActiveXObject("Scripting.FileSystemObject");
		f = fso.OpenTextFile(myfile.value, ForReading, 0);
		txt.value = f.ReadAll();
	}	catch(e){
		alert("File handling error, please confirm the right of Javascript to use this function.\n"+ e.description);	
	} finally{
		try{f.close();}catch(e){}
	}

}

function writeFile() {

	if(myfile.value.length<1)
		return;
	
	var fso, f, str;
	var ForReading = 1, ForWriting = 2;
	try{
		fso = new ActiveXObject("Scripting.FileSystemObject");
		if(fso.FileExists(myfile.value)) {
			
			if(confirm("Backup the original file:\n"+myfile.value+"?")==1) {
				fso.CopyFile(myfile.value, myfile.value+".bak");
				alert("Successful backup to: "+myfile.value+".bak");
			} else if (confirm("Save will overwrite the original file:\n"+myfile.value+"\n,are you go on?")==0)
				return;
		}
		
		f = fso.OpenTextFile(myfile.value, ForWriting, true, 0);
		f.Write(txt.value);
		alert("Saved!");
	}	catch(e){
		alert("File handling error, please confirm the right of Javascript to use this function.\n"+e.description)	;
	} finally{
		try{f.close();}catch(e){}
	}
	
}


function xmlformat() {
		
		var xml='<a><b x="a">abc</b></a>';
		xml=txt.value;//=xml;
		//alert(xml);
		var str="", all_tag_txt;
		var tag_array = new Array();
		var tagRE = /<([^>]+)>/gm;
		var tagNameRE = /\/?\S+/;
		var printTab = 0;
		var isCloseTab = true;
		var hasValue = false;
		var hasPrintTab = true;
		var isPreTagClose = true;
		var isThisTagClose = true;
		var nextStartIndex = 0;
		var subBeginIndex = 0;
		var subXml="";
		
		all_tag_txt = xml.match(tagRE);
		
		if(all_tag_txt!=null) {
		
			for(var i=0; i<all_tag_txt.length; i++){		
				var tag="", tagContent="", tag_Name="", tagValue="";
				
				tag = all_tag_txt[i];
				
				subXml = xml.substr(nextStartIndex);
				subXml.search(tagRE);
				subBeginIndex = RegExp.index;
				nextStartIndex += RegExp.lastIndex;
				tagContent = RegExp.$1;
				
				if(tagNameRE.test(tagContent))
					tag_Name = RegExp.lastMatch ;
				
				//alert("tagName="+ tag_Name );
				
				isCloseTab = false;
				hasPrintTab = true;

				if (hasValue)
					hasPrintTab = false;
			

					
			if (tagContent.charAt(0)=="/" || tagContent.charAt(tagContent.length-1)=="/") {


				if (tag_array.length>0 && tag_Name.replace("/", "") == tag_array[tag_array.length-1]) {
					tag_array.pop();
				} else {
					if(!isPreTagClose)
						printTab++;
					isPreTagClose = false;
				} 
				
				isCloseTab = true;
				isThisTagClose = true;
				hasValue = false;

			} else {
			
				var tagValueRE = new RegExp("<" + tag_Name	+ "[^>]*>([^<]*)</" + tag_Name + ">", "m");
				
				if (subXml.search(tagValueRE)>-1 && RegExp.index == subBeginIndex) {
					tagValue = RegExp.$1;
					hasValue = true;
					//new to handle value is only /r/n
					if(tagValue == "\n" || tagValue == "\r\n")
						tagValue="";

				} else {
					hasValue = false;
					isCloseTab = true;
				}


				if ("?xml".indexOf(tag_Name)!=0 && xml.indexOf("</" + tag_Name + ">", nextStartIndex) > -1) {
					tag_array.push(tag_Name);
					isThisTagClose = false;
				} else {
					isCloseTab = true;
					isPreTagClose = false;
					isThisTagClose = true;
				}

			} 

			if(!isPreTagClose && !isThisTagClose)
				printTab++;
			else if(isPreTagClose  && isThisTagClose && printTab>0)
				printTab--;
			

			
			if (hasPrintTab)
				for (n = 0; n < printTab; n++)
					str += ("\t");

			if (!isCloseTab)
				str += (tag + tagValue);
			else
				str += (tag + "\r\n");

			isPreTagClose = isThisTagClose;
				
			}
			
			txt.value=str;
		
	}
}


//-->
</script>

</head>

<title>Character Converter</title>
<body bgcolor="fcfff7" leftmargin="0" topmargin="0" marginwidth="0">

<DIV align=center>
  <table bgColor="80B080" border="0" cellPadding="0" cellSpacing="1" width="90%" height="95%">
    <tr align=center><td height="3" bgcolor="7FD479"></td></tr>
    <tr>
      <td height="20" align="center" bgcolor="D9EDDA" style="color:#346F0E ">Character Converter</td>
    </tr>
    <tr bgcolor="EFF7F0" height="5%">
    	<td> 
    			<input type="file" name="myfile" size="55" maxlength="250">
      		<input οnclick="readFile()" type="button" value="Read from File">
      		<input οnclick="writeFile()" type="button" value="Save to File">
      </td>
  	</tr>
    <tr>
      <td align="center" bgcolor="EFF7F0"><br>

					<input οnclick="paste('txt')" type="button" value="Paste">
      		<input οnclick="copy('txt')" type="button" value="Copy">
					<input οnclick="unUnicode()" type="button" value="Unicode->Chinese">
					<input οnclick="convert(0)" type="button" value="Simplified Chinese">
					<input οnclick="convert(1)" type="button" value="Traditional Chinese">
					<input οnclick="cut('txt')" type="button" value="Cut">
					<input οnclick="txt.value=''" type="button" value="Clear">
				<br><textarea id="txt" name="txt" cols="95" rows="15" style="width=95%;height=80%" wrap="off"></textarea><br>
					<input οnclick="toUnicode()" type="button" value="Unicode">
					<input οnclick="htmlFormat()" type="button" value="&#Format">
					<input οnclick="encode(txt.value)" type="button" value="Base64->Encode"> 
					<input οnclick="decode(txt.value)" type="button" value="Base64->Decode">
					<input οnclick="xmlformat()" type="button" value="XML Formater">
			</td>

    </tr>
    <tr height="1" border="0" bgcolor="EFF7F0">
    	<td align="right">- Developed by Ken</td>
  	</tr>
  </table>

</DIV>

</body>

</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值