|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『楼 主』:
[讨论]********findstr/a之用法质疑********
使用 LLM 解释/回答一下
看到electronixtar兄发的ColorDemo.cmd( http://www.cn-dos.net/forum/viewthread.php?tid=35609&fpage=1)中有一句代码是用findstr来实现显示彩色字符,很佩服前辈的才华啊。我findstr用得少,今晚发现这个命令的/a参数使用有点奇怪,通过findstr/?查看帮助,解释是:
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
再看color/?,解释是:
attr 指定控制台输出的颜色属性
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为
前景。
这么说来,对于findstr的参数/a,就应该是输入两个十六进制数字啰。但是实际情况不是,我尝试了n次,发现4个十六进制数字有效(多于4个的取最后4个),而在color命令后则不行。这四位中的后两位数好理解,就是如上述的“指定控制台输出的颜色属性“,而前两位是干什么用的呢?我发现是用来控制所显示的文件名字符串(包括之后的冒号)之间的横线和竖线的显示的(包括其有无及粗细),但又好像不全是,因为有时前两位数会影响到后两位数,致使后两位数失去它们的指定颜色的作用(比如2c04)。
TEST:(似乎构成等差数列,公差为4)
1.(横线)
findstr /a:040a . %systemdrive%\boot.ini*
2.(竖线)
findstr /a:080a . %systemdrive%\boot.ini*
3.(横线+竖线)
findstr /a:0c0a . %systemdrive%\boot.ini*
4.(竖线,注意与第2种情况对比)
findstr /a:100a . %systemdrive%\boot.ini*
5.(横线+竖线,注意与第3种情况对比)
findstr /a:140a . %systemdrive%\boot.ini*
6.(竖线,注意与第2,4种情况对比)
findstr /a:180a . %systemdrive%\boot.ini*
7.(横线+竖线,注意与第3,5种情况对比)
findstr /a:1c0a . %systemdrive%\boot.ini*
8.换成200a就没有横线和竖线了。
9.后面还有,如:(貌似和1c0a一样)
findstr /a:dd0a . %systemdrive%\boot.ini*
10.还有些情况是“表格”里居然什么都没有,或者表格最右端出现一条很粗的竖线,另外注意表格边框上的横线和竖线(不同的参数下会导致边框线有时显示,有时又不显示)。还有有时当你把cmd窗口滚动条向上滑动去看上边的命令执行结果然后回过来看,会发现下面的刚执行过的命令的结果居然变了!灵异事件!(比如5c0a)
再来个测试用批处理:
@echo off
setlocal
set begin=%1
set end=%2
set step=%3
set colo=%4
if "%4" equ "" (
echo 四个参数:
echo 1.起始值(两位16进制):如04
echo 2.终值(两位16进制):如2c
echo 3.公差(10进制):如4
echo 4.后两位颜色设置(两位16进制):如0a
echo 例如:%0 04 2c 4 0a
set begin=04
set end=2c
set step=4
set colo=0a
)
set/a n=0x%begin%
set t=test.tmp
pushd %tmp%
if exist %t% goto :test
for /l %%a in (1,1,5) do echo.^ >>%t%
:test
call :10to16 %n%
if %n% lss 16 (set v=0%r%%colo%) else (set v=%r%%colo%)
echo %v%
findstr/a:%v% . %t%*
echo.
set/a n+=%step%
if not %n% gtr 0x%end% goto :test
popd
pause
goto :eof
:10to16
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
set r%1=
*********************************
注:
以上结论纯粹是我个人观点,大家也来试试,这到底是怎么回事呢?
我的操作系统是:
XP Professional 5.1.2600
Last edited by s11ss on 2007-11-23 at 10:35 PM ]
Seeing that Brother electronixtar posted the ColorDemo.cmd ( http://www.cn-dos.net/forum/viewthread.php?tid=35609&fpage=1 ), there is a line of code that uses findstr to display colorful characters. I really admire the senior's talent. I use findstr rarely. Tonight I found that the use of the /a parameter of this command is a bit strange. By checking the help with findstr /?, the explanation is:
/A:attr Specify the color attribute with hexadecimal digits. Please see "color /?"
Then look at color /?, the explanation is:
attr Specify the color attribute of console output
The color attribute is specified by two hexadecimal digits -- the first is the background, and the second is the foreground.
So, for the /a parameter of findstr, it should be entering two hexadecimal digits. But the actual situation is not like that. I have tried many times and found that four hexadecimal digits are valid (take the last four if there are more than four), while it is not the case after the color command. The latter two digits of these four are easy to understand, that is, as mentioned above, "specify the color attribute of console output", and the first two digits are for what? I found that they are used to control the display of the horizontal lines and vertical lines between the file name strings (including the following colon) (including whether they are present and thickness), but it doesn't seem to be all, because sometimes the first two digits will affect the latter two digits, causing the latter two digits to lose their specified color function (such as 2c04).
TEST: (It seems to form an arithmetic sequence with a common difference of 4)
1. (Horizontal line)
findstr /a:040a . %systemdrive%\boot.ini*
2. (Vertical line)
findstr /a:080a . %systemdrive%\boot.ini*
3. (Horizontal line + vertical line)
findstr /a:0c0a . %systemdrive%\boot.ini*
4. (Vertical line, note the comparison with the second case)
findstr /a:100a . %systemdrive%\boot.ini*
5. (Horizontal line + vertical line, note the comparison with the third case)
findstr /a:140a . %systemdrive%\boot.ini*
6. (Vertical line, note the comparison with the second and fourth cases)
findstr /a:180a . %systemdrive%\boot.ini*
7. (Horizontal line + vertical line, note the comparison with the third and fifth cases)
findstr /a:1c0a . %systemdrive%\boot.ini*
8. Changing to 200a has no horizontal and vertical lines.
9. There are more behind, such as: (it seems to be the same as 1c0a)
findstr /a:dd0a . %systemdrive%\boot.ini*
10. There are also some situations where "the table" has nothing at all, or a very thick vertical line appears at the far right end of the table. Also pay attention to the horizontal and vertical lines on the table border (under different parameters, the border lines may or may not be displayed). Also, sometimes when you slide the scroll bar of the cmd window up to look at the command execution results above and then look back, you will find that the results of the just-executed command below have actually changed! Paranormal event! (such as 5c0a)
Here is another test batch:
@echo off
setlocal
set begin=%1
set end=%2
set step=%3
set colo=%4
if "%4" equ "" (
echo Four parameters:
echo 1. Start value (two hexadecimal): such as 04
echo 2. End value (two hexadecimal): such as 2c
echo 3. Common difference (decimal): such as 4
echo 4. Setting of the last two digits color (two hexadecimal): such as 0a
echo For example: %0 04 2c 4 0a
set begin=04
set end=2c
set step=4
set colo=0a
)
set/a n=0x%begin%
set t=test.tmp
pushd %tmp%
if exist %t% goto :test
for /l %%a in (1,1,5) do echo.^ >>%t%
:test
call :10to16 %n%
if %n% lss 16 (set v=0%r%%colo%) else (set v=%r%%colo%)
echo %v%
findstr/a:%v% . %t%*
echo.
set/a n+=%step%
if not %n% gtr 0x%end% goto :test
popd
pause
goto :eof
:10to16
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
set r%1=
*********************************
Note:
The above conclusions are purely my personal views. Everyone can also try it. What is going on here?
My operating system is:
XP Professional 5.1.2600
Last edited by s11ss on 2007-11-23 at 10:35 PM ]
|
|
2007-11-23 22:19 |
|
|
knoppix7
银牌会员
    
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
和DEBUG中的 debug 很像..
f b800:0000 f9f XX YY
貌似XX代表样式 YY代表颜色.
It's very similar to debug in DEBUG..
f b800:0000 f9f XX YY
It seems that XX represents the style and YY represents the color.
|
|
2007-11-24 12:30 |
|
|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
哦?我想可以用这个特性来画表格..................
Oh? I think this feature can be used to draw tables..................
|
|
2007-11-24 17:42 |
|
|
electronixtar
铂金会员
      
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
哇咔咔,很难得一见的技术贴,真不忍心给水了
那个ColorDemo.CMD不是我写的,我只是转帖,而且我也不是什么前辈,只是一个p处理爱好者而已。
Wow咔咔, it's a rare technical post, I really can't bear to water it down.
That ColorDemo.CMD wasn't written by me, I just reposted it, and I'm not any senior, just an enthusiast for p processing.
|

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-11-27 19:48 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
转换多位的:
@echo off
set "Hex=0123456789ABCDEF"
set /p S=
:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16
echo %C%
set S=
set R=
set C=
pause
Last edited by zh159 on 2007-11-27 at 08:09 PM ]
Now 10to16 doesn't need to be so wordy. If you only convert one digit (0~f), just use the following:
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
For converting multiple digits:
@echo off
set "Hex=0123456789ABCDEF"
set /p S=
:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16
echo %C%
set S=
set R=
set C=
pause
Last edited by zh159 on 2007-11-27 at 08:09 PM ]
|

 |
|
2007-11-27 20:07 |
|
|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
Originally posted by electronixtar at 2007-11-27 07:48 PM:
哇咔咔,很难得一见的技术贴,真不忍心给水了
那个ColorDemo.CMD不是我写的,我只是转帖,而且我也不是什么前辈,只是一个p处理爱好者而已。
electronixtar兄不要谦虚啦~~诶,兄的签名档中
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
这句怎么我运行后提示“没有可以显示的页面”啊?还有about:都有哪些用法啊?
Originally posted by electronixtar at 2007-11-27 07:48 PM:
Wow, this is a very rare technical post, I really can't bear to water it down
That ColorDemo.CMD wasn't written by me, I just reposted it, and I'm not any senior, just an enthusiast for P processing.
Brother electronixtar, don't be modest~~ Hey, in your signature
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
Why do I get a "No page to display" prompt when I run this? Also, what are the usages of about:?
|
|
2007-11-27 20:08 |
|
|
electronixtar
铂金会员
      
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
Originally posted by s11ss at 2007-11-27 20:08:
electronixtar兄不要谦虚啦~~诶,兄的签名档中
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>& ...
那就直接运行iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> 试试?哇咔咔
Last edited by electronixtar on 2007-11-27 at 08:19 PM ]
Originally posted by s11ss at 2007-11-27 20:08:
Brother electronixtar, don't be modest~~ Hey, in your signature
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>& ...
Then just run iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> and try it? Wow haha
Last edited by electronixtar on 2007-11-27 at 08:19 PM ]
|

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-11-27 20:11 |
|
|
electronixtar
铂金会员
      
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
Originally posted by zh159 at 2007-11-27 20:07:
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
转换多位的: ...
:P 看不懂,牛B了,很久不来这里高手依旧那么彪悍
Originally posted by zh159 at 2007-11-27 20:07:
Now 10 to 16 doesn't need to be so wordy. If you only convert one digit (0~f), use the following which is OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
For converting multiple digits: ...
:P I don't understand, awesome, I haven't been here for a long time and the experts are still so powerful
|

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-11-27 20:16 |
|
|
upsco
初级用户
 
积分 67
发帖 32
注册 2007-11-19
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
Originally posted by electronixtar at 2007-11-27 08:11 PM:
那就直接运行iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> 试试?哇咔咔
Last edited by electronixtar on 20 ...
我们怎么引用都运行不了,要是我们这样就能运行你电脑上的某个程序,嘎嘎,你可惨了
Originally posted by electronixtar at 2007-11-27 08:11 PM:
Try directly running iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>? Wow haha
Last edited by electronixtar on 20 ...
We can't get it to run no matter how we reference it. If we could run some program on your computer like this, heh heh, you'd be in trouble
|
|
2007-11-27 20:25 |
|
|
electronixtar
铂金会员
      
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
Originally posted by upsco at 2007-11-27 20:25:
我们怎么引用都运行不了,要是我们这样就能运行你电脑上的某个程序,嘎嘎,你可惨了
那么你肯定没有安装 Microsoft Office 2000/XP/2003/2007 中任意一个版本
Originally posted by upsco at 2007-11-27 20:25:
We can't get it to run no matter how we reference it. If we could run a certain program on your computer like this, heh heh, you'd be in trouble
Then you must not have installed any version of Microsoft Office 2000/XP/2003/2007
|

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-11-27 20:28 |
|
|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性,我的啰嗦但提高了代码可读性。
Last edited by s11ss on 2007-11-27 at 08:46 PM ]
Brother zh159, your code for converting multiple digits isn't necessarily less wordy than mine~~~~~~~~
No, I take that back.
Actually, each has its own advantages and disadvantages.
Yours is simple but reduces code readability, and mine is wordy but improves code readability.
Last edited by s11ss on 2007-11-27 at 08:46 PM ]
|
|
2007-11-27 20:30 |
|
|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
Originally posted by electronixtar at 2007-11-27 08:28 PM:
那么你肯定没有安装 Microsoft Office 2000/XP/2003/2007 中任意一个版本
我装了 Microsoft Office 2003。好像是经过修改的。
Originally posted by electronixtar at 2007-11-27 08:28 PM:
Then you must not have installed any version of Microsoft Office 2000/XP/2003/2007.
I installed Microsoft Office 2003. It seems to be a modified version.
|
|
2007-11-27 20:33 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
 『第 13 楼』:
使用 LLM 解释/回答一下
Originally posted by s11ss at 2007-11-27 20:30:
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
其实核心就是几行:
set "Hex=0123456789ABCDEF"
:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16
这段代码是从一位版主(忘了)的代码里简化来的
那个是vbe6.dll里的一段MIDI音乐,我也没成功,直接把它提取出来了
为节省上传文件数量,转换为VBS:
bs=_
"NRFakBAAAYAABAgBAAcTUJ3aAAAAiAw//NAAAEEA/jFBEIAGIAw/ZJA/AAw/RNwBm1igWCy/vAQTUJ3aAAABADw/DowU0JXaud2cgACIAU7BQBQxbBw/E0AUhRGI0ACKjh2bpJXKAUrCUUYfV+iSNV4LKJIBV+SVSU4LV9XlvU1I"+_
"F+SVB2Xl2s0SFazSDaRl2MlIFazUByXl6UVRFqTVD6Rl6AlIFqDUB6Xlv40RF+iTDaRlv0EJF+STBuXl080SFSzTDqRlxgEJFGDSBqXl2E1QFaTUD2Rl2YVKFajVBaXl4s0SFizSDSRl2o0KFajSHaXlsYUg4UILGFoSVODRBiTh"+_
"zQUgJV5MEFINFODRBiUluwTg7UoL8EIRVqyOBaThqsTgKVZM9EYOFGTPBmUlsEUg8UILBFIRVOjQBeThzIUgKVZM6EoOFGjOBiUls4Tg1UIL+EoSVOTOBKThzkTgMVpLAFIOF6CQBaUl4kkRFiTSD+Rl2oEJFajSBqXl4olHFijW"+_
"RUJOmBSh4YmDVizUiUIOT9Ql5AGIFmDYUUpOjNSh6M2CVqTZbUoOlJRl6oGJFqjaOU5L/hRhv8XGV+CdqU4L0dQlvEXJF+ScKUZMgZRhxAmGVGzcSUYMztRlyknJFKTeNU5Mw1RhzAXEVOjabU4MqlRlzM2DFOzYfUJN9E4MFSTP"+_
"ByUlvUUg2U4LFF4SVqCPBOThqwTgMVZMGF4MFGjRBCVl0UUg4UINFFIRV+SPBiThv0TgMV5LDFYOF+yQBOUlqEUg1UoKBF4SVqCRBmThqQUgJVZM9EYOFGTPBSUlsIUg2UILCFoTVODRBOThzQUgLVpNVRUh2U1gbU5MJhShzk0h"+_
"3V5LIdUhvgkgOU5LRVRhvE1eV+iSiU4LKF4eVajUIVoNSNYGVazSlUoNLFoeVqzUGVoOTN4GVaTTmUoNNF4dV+ySHV4LLJIDV+SUQU4LR5XlvYVLF+iVBKXl0skSFSzSDqRlxY0IFGjRBqXl20kRFaTTDmRl64UKFqjTBiXl4EFS"+_
"FiTUDeRlzw0IFODTICQls4Tg5UIL+EIRVOTRB6ThzUUgGV5M4E4NFODOBaUluwTg7UoL8EYRVqiPBSThq4TgQVZMFFoMFGTRBqUls0Tg3UIL9E4SVODOBiThzgTgKVZMCFYMFGjQB+UlsIUg4UILCFISVOTRBiThzUUgIVpL5EIM"+_
"F6SOB2Ul440RFijTDyRl2EVJFaTUBeXl48FGFizXaUJOZVSh4kFCVizUlUIOTtQl5E2HFmTYSUpOtNSh602DVqDYfUoOgNRl6EXGFqTcUU5L99Rhv03DV+SapU4LpxQlvQnJF+CdIUZMm1RhxYmEVGzcWUYMzpRlycnHFKzdVU5M"+_
"6VRhzoHGVOzZZU4MnZRlzAmFFODYdUJOQ9Rh4AlQVOzSrU4MLNQlvsEFF+yS9V5MSxRhzIFRV+iUUU4LStUlvU1IF+SVBqRlz0UJFOTTAVZMlRRhxUmGVGzXdUYMfRRlxAFJFGDULUpMiBShyIGEVOTaeU4MpBRlz4mGFOjbYU5M"+_
"wlRhzAHGVSzfeUIN/FRl2A3JFaDcKUpN3ZSh2cnCViDaeUIOoJRl4QXEFiDdeUZO0BSh5QXEVqjdVUoO2tRl6AWGFqDYYUpOc5Qh6wVHVyiOB2ThsoTgHV5MCF4NFOjQBiUl0kkSFSTSDWRlzUEJFOTRK2x/vAQTUJ3aAAgC4Bw/"+_
"DowR1lGdhJHIgACIAY7BkBgxYBw/E8AUhRGIxACKuV2dgE2ZllCA2qAZH6jl40UA/okB70UgkZ4PKtwONBAONpil40SA/QjA7IDUGiTLBsjMG8DNGYJOVNwPUFwOJJlh/QFA7kUA4UVCWuDRCgTRA8TRSZ4OEFwPFFAOFFITW+TU"+_
"DoDSAYDVBymh/EVA6gEB2Q1IWqTNBYTND8TNRZ4P1UgO1EgN1wgl/oUB2kUA6EVg9Y4PKNlNJdgORRml2oUA60EB90UgnZoNKNQPNtgONFil9cTA6QzA2cjUGazNDoDNB0zNNYpOUBgNTFQPKF4PG2jSAoDVAYzUBCkl4M1A7YVA"+_
"/YVgoZIOTJwPWJwOWlil/AjA7AzA4UjTG+DMBsDMIgTNJYJOVRwPNJwONFIPG+TTAsTTPhTVvZZPNJAQJRAOUF4aG2TTAgDVBAUSoYJOzIAQtEQPwMlhA1SA4MDA9ADEW2DVBgzTEA0SByjhAtEA48EA9QVg8YpOTNgNVJwPRF4Z"+_
"GqzUC8TUMYTVBegl68kA/0UA2sUgAZoOPBwPNBgNLFYPWCESBsDVGgDTByjh7QFAAhEA4wUWWqjKCYjLE8jNMZoNukgOqEwP2cgl/AFB6E1A24Ug78jUCYoORBgNOFgl4UFA7gUMG+DUBOwOIJAOVBwPSZ4AW+TUEgTSBsjVBWmh"+_
"/E1B4kUC7YVgKY5PNFAOOFwOMFIQGuDTAgjTd8TTB+hl/IFB6sUA2gUgpZoOLBwPStgNIRil6cDA2YTA/kSVG+TKBozNCYjNLY5PORgNONgOJFIPG+jTXpTSCYjTkZpNTFQPQZgOOFYYG2DULYzUFojTpYpNvIQPwAgO2Ilh9ATA"+_
"6YTA28iCW2zTBoDTBYjUQZYPPZgOMFgNSdgl2c0A6kEA9QkTGazRB0DRCoTSBukl/Q1A4gEB7YVgnZ4PUVwOWBAOI5il7UTA/0iA4MTUG+TLCsTNCgzMHYJOJNwPWFwOLJlh7skA/YVA4kkBWuTQC8DRDgzPNZ4OBJAO/YwPEF4R"+_
"W2jVBgjSBAUVBWmh4oUD9Y1AAVVgJYZPNBAOSJAQOFYQG2TTAgjUAAkTBujl6YlB/AlA2UVglZoOWdwPQZgNVF4BWqDTE8TUBYzTB+jh/EFA6wEA28Ug6Y5OQZAQIBAOSFIQGuDUAAESAgjUB2jl/8UA6wEB2sUg8wCQCYoOMBgN"+_
"LpxPPFoGsAECWiDTAMzUEszTPZ4MTlAOMBwOPRgl7wkA4AkAz4TQGuDTEgDQFMjPTY5M7E4OGOzOBY5MUhAOTJwOIFYPGODVYgzUMsDSBmhlApkA4kUA7sUgsZ4OLdAQKJAOJNil4MjAAZTA7oyUGujKFgzMEAkNHYJQKNwOJNAO"+_
"MFIPGuTSAgDTAAkSB2jl2UFA940B60UglZYPOFgNVpgONFYBW2jUFYDUEojVB6jh2AFA9IFA6YVg7Y5OLVAOLFAQKF4aGuzSFgzSBAkSBegl78EBAxUB44Ug+YIQMBAOOhxOPFIJWuTUBYTVH8zUBWmh2UVB7E1B/MVgIYpNLFwP"+_
"PNwOUNlh/8kA2skA7QFBW+jOCYDPDsTRQZoN8IwOFdwP6EoQW2TUDYTTEoTSOZYPRBgNNdgOJRgl2kEA6kEB9Y0QGqTSIYTSF0jRBykl9oUB20EA6YVg/YYPKBgNNBgOWFYPW+jTBgTUCsTUBSmh/40C4EFC7EVgHY5OSNwPUBAO"+_
"OFlh/QVA440A7IlBW+jPBsTREgDORZ4P+EAO4EwOFF4RWqjUE8TTBYjVVZ4PNJgOSVgl/cEA2IUAGajVGYpOLJkh2I0A6sEA/cUgSZ5PQRAOORwOLFoO7w0A4QVAA1EAG+DUggjTMszSBmAOUFAQNFwOMZ4AW+DVCgzUIsjVBemh"+_
"/QlA4MFB7Y1KWuzNB8zMDgjNPZ4PzQwO3MAO2Ygl44kA7MVA/g0UGuzUAgjTD8DSHY5OJJwPMFAO/Mlh48TA/wEA7kUgJZpOINwPJRgNUF4ZGqDSG8TSHYDVmYpNrEgOrIwPxElh/EDB6siA2sSCWaTTAozSB8jVNZoOLVwPWRgN"+_
"NVgl2UkA/IkA6g0UGaTRBoDSC8jQBakl9ElA2UFB6UFUGaTVC0TUCoTVFYpOOFgNIZQPGNkh64EB2gUA9YUgQZZPRZgNTRgOTFIPGazUA0TUAozUBmjl/Q1B70UA4kUgnZ4PUJAOJhwONF4BW+TTFgTSEsDTB6jh/0EA7wEH4kUg"+_
"fYJOTJQPVVAQTFYZGizUD0TVKA0UBegl44EB9AVBApUg8YIOOBQPQBAQKFoOWqDUG8DTBYzSBWmh6AFB/wEC2sUgLYpOQBwPVJgNPFYQGqDUA8TVAYzTByjl7YVBAJVA4QVg+Y4OWBAQSBAOUF4OWqzSG8TSBYTTBqzOQJwPIBAO"+_
"MJgh6sEA200G/kUgXsDUB8DSFgDTGWgl4skA/Q1A78UgtZIOLRwOPNwPUJil7sSA/4CB40SUGuzKA8jLBgTLNYJOPRwOMFwPLF4PGuDTAgzT08zSBugl60EA2YVA/wUgsZoONJwPMJgNWZil28SB68SA/IzUGazLBozLC8jMKY5P"+_
"SRgOSRgNWFIPG+jUUpjUEYjVmZZPOBgNKZgOPtkh940B2o0AWqTTCYoOPJgl2wkA9skRGqTTIYDTD0zSBukl9QVB28EB6EVg8YYPUBgORBgNPFoPWizSA8DTBsTTBWmh/w0C4sUC70UgBY5PONAOPNwOLFYQG+jTAszSbgzTBGil"+_
"4UlA90EBAFFUGiTVF0TTBAUUDYJQGNQPARAOH9jhAZEB9A0B4cUgOZJORRQPIJAQRFIQG2DSAgTUAAUUB+jl/8EB2UVA6oUgsZoOKFgNVJwPPNil24SA6sSB/kyUGqzKFYjLB8TKHY5PPNgOLRgNIFYPGaDSAozSA8zTBujl7g0A"+_
"AlkA4YVUGuDSBAUSGgjVAYJOBhwOHBAQINkh4EkAAhkC7cUgMZpOVJwPVRgNWF4PsoDAGqTVAYjVf8TVBqBL6Mgl40UAzokA78UgBNTOmY4MKdAONVwOPpil4cTA7kDBzUDUGuTOAMTOBgzNBMTNKY5OTJAOTJwMN1kh7MlA4MVB"+_
"z00BWOTTBgTQCsjRPZIOBVwMNJwOGxgl4YFAzAFA7slWGODUAgjVGYJO/AwMMF4OGuzWFY5Odhlh48DAzwECWOTSAgDScZ4OdRgl7kEXGOTSEY5MIplhzgUA4gUA7kEBWujSAgjUAMjTaZIOSBwOKBwMORglxwTg0YYM8wgl04kA"+_
"xkkA9UVA4wUg54CODYIOMBQPVBQMJBANOZll6oyA/QDA2ATAzYzUG+DNCojKBYDMAMjNI4COFY5MINgNTJgOWJwPUFIPGazUAojVvMDSI8DVBSgl/IlA4oEB7oUgsZ4PSZAOKRwOKF4BWuzUC8TSBgjVQZ4OTBwPJRAOWdgl74zA"+_
"/UUA4QEVGujPCgDRC8TRBGkl44EB9oEBAxUg/YIOOBQPKBAQMFoOWqTTD8TUFYjUBODOLZwLPVgh60EA2IlBWOjTUgTTGY4PRtgl7k1iwYIOLhwLP5wMOpAONZxOZBw/vAQTUJ3aAAQHmBw/DoAUpFmbvBCIgACIAc7BkBwxuAw/"+_
"E8wTyNGalNHdyFGbggUYyBHA3qAHG2yl/AGLH+DY3c5PfZyh/8VOXiTWucIOZNzl/01JH+TX2cJOaxyh4oFNXizXucIOfVwl/EmKH+TY1c5PYNAOdNyh40FA/gFaXqDXtcoOchzl/UmKH+TZzc5Pb5yh/sFNXqDWocoOYhzl/wFK"+_
"H+DX0c5PYFzh/gFBXqzWjcoObxzl/0VJH+TXsdZPjlyh9M2MXaDZscoNkdzl9M2KH2zY1cpNZRyh2kVOX2TWrcYPZdzl2EHJHaTcMcZPhlyh9EmNX2jWucYPaJ2l481LHizXxc5PZxyh/k1MXijXqcIOedzl/klKH+TW0cJOZlyh"+_
"4kFPXijXscIOeJwl/0VKH+TX1cJOjxyh4MmZXiTXncIOdpzl9glJH2DW2cJOfpyh481OX2jXkcYPexzl4YWJHijZ2cZPxZyh9E3CX2TYpcYPhtzl4sFJHizWpdpOcxyh6w1MX+DWpc4PYlzl/QGLH+DZzcpOhpyh6E2NX+TWtc4P"+_
"ZBzl/E2LH+TYGcpOclyh6wlNX+TXqc4PdZ2l7U2KHuTZ1cJQexyhA5lMXCUZmcIQlhzl74FKHujX9c5PjZyh/M2NXqjZtcoOmNwl/k1JH+TW3c5PjBzh/MmMXWFNXcYV0wxlTBTHHOFMTcZVoAxhVhiHXOlLbc4UuUxlVpUGHWlS"+_
"Yc5UC9whTJ0HXW1VacYVXhxlThUEHOFSecZVBxxhVFEFXOFYXc4UgZxlVxzEHWFPdc5U4gxhThTHXW1CecYVL8wlTtRFHO1GZcZVdUyhV1RDXOlBVc4UGkxlzEGA4IGKHOTYAgjYNcpOfBwMkdyh68FAzQmBXOTZDgTZkc4MlJAO"+_
"lVwl60VB98VJH2zXCoTXFcpOdNQPmhyh601A9Y2AXiDZCsjWqcIOkJwl48VAHujWCc5MbdyhzsVB48lAXqDYBMjZnc4MmJgOghwlzQWA6IGKHqjYDMDZDc5OlNAOaVyh7UWB4olAXOTWCgDYlcIOgJwMZhwl6wlA9oFJH2jWAoDX"+_
"IcpOmJwMhtyhzE2AXuzYBcoOmFwl4gVKHuzYEgDWBc5McNAObpyhzwVA4sVBXqDZBMjYncoOkZwMiFwlz8lA6AGLHqDYAcpOdFwhz8FAXOjZscoOdFwMmNwlzYGA681JHOjZAozXLc5MZFgOfZyhzklB68FAXqjZFMjYmc4MiJgO"+_
"mdwl2UWAzkVJHaTZCMTWEc5MfNgOZZyhz81A6kVBXODXDoDZnc4McJgOkRwl601AzIWJHOjYGoTXBcpOZVwMmNyhzYWB6kVBXaDWBoTXgcoNYZgOdtwl6QWAzMWIHqDZJMzYCcpOYJwMfVyhz81A6g1BXqjWCMjZmcoOaFwMmhwl"+_
"zMmA2YmJHOzYCYjZEc5MZFgOepyh641AzklAXGjXEYTYocoNhFQMeVwlxkVA4glJHiDWCETWFc5OYFgNf5yh28FAXaDWBc4OYJwl9EmJHaDWF0TYCc5OlNgNa1yh7UGA2oVAXijZBETYncYMhdwl9EWAHijZEcJOghyh9EWA4AmA"+_
"XajWCEDXmcYMcNgNadwl7kVA2QmJHaDZBsTWHcJOYBQMldyhxU2B4gVAXGTYEgDWlcIOYdQMhFwl7Q2A2MHKHazcCsDZEcZMlBgNmtyhxUmA2YWAXGTYBgjZtcIOmFQMhFwlxUmA60VKHGTZGoTXDcpNcBwOaVyh2wVA7o1CXOzW"+_
"AgTYlc4MbJAOhVwlzsVA4klKHiTWDMzWEcJOmFwMjpyh4YWAzMWAXiDWD8zWnc4PbVAOYNwlzI2A481IHOjYEgzXEc5OYBAOapyh7glA4olBXOjYDgzWkcIObFwMilwl4glAz8lJHiDWAMzXHc5PlJAOktyh/UmA4QGBXiTZA8DW"+_
"mcIOlVwPYFwlzAmA701IHuTXFMDYJcJOjFwPpJyh/kGB4MmBXODWCgjZscIOmJwMYBwlzwVA4slJHODXDgzWFcJOYFwPkdyh/QmB4g1AXiTZCMzYncIOlZwl4IGAHOzYAcZMhxyhxEWA4IWBXiTYCMTXnc4MdFAOhRwl4MmAxk1K"+_
"HizYDcJOeFwhxklAXGzXmcIOeJQMfVwl4QGAxYWKHiDZDEjZGcJOfFwMmhyhzYWA48lBXiDYBMDYsc4MgJAOgBwl0YmAxEGKHGTYCQjZGcJOZFQMepyh4k1Ax41AXOjXBgjXqc4MeFAOeNwl4EWAzM2JHOzYBgTYFcZMrNAOjRyh"+_
"4M2AxsWBXizXFETYncYMhNAOfFwlzAWB4kFKHODYDgTWEcJOiFANghyh4ImA0AmAXGzWCgDZocYMbZAOkJwl6glAzU2KHqDWAMTZBcpOjJwMmtyh6M2AzY2AXOzYAoDYocoOgVwMjBwlzQ2A6kFKHqTWBMDZEcpOZBwMlhyh6k1A"+_
"zU2BXazXAMDZpcoNfVwMkRwl6kFAzYGJHOjZCoTWKc5McBgOlpyhzwVA6UWAXqzWDMDYqc4MgBgObJwlz8FB6MWKHOzXBozYFcpOfFgNlJyh2U2B68lBXqDaCMjZpcoOoJwMmRwlzIWA6MWKHqzYCMjYBc5MdJgOjhyh6MWBz01A"+_
"XOzYCojZpc4MjJgOmBwl6IGBz8FJHOzXCojYIc5OkNANlNyh7QGB0UWBXajXDsDZoc4OkVgNeFwl7sVA0UWLHSTZAcJNlFwh7s1AXujYkc4OiBANlxwl00VA7EGJHuTYAQTXIc5OiBgNadyh7IGC2oVAXaDXEsDXlc4OcVgNcFwl"+_
"00lA7U2JHuTZFQTXFcpOYFwMYdyh6gFBzgVBXOTYAoTYncoOhFwMhRwl64VA2MmA60FIHazYHojXDoTXGcpOgBAN0Vyh0QnA6A2BXqDXBMzWpc4MbNgOcZwl6gVA0EmJHqDWFQTYCcpOaNwMZhyhzkFB6oVAXSjYCojYkcoOiJAN"+_
"ihwl74lA4QGJHujXCgDZHc5MmBAOddyh40lAzYmBXujWCMzXsc4MfFwOaRwl4MGA7klKHizYDsTWCcJOiJwOhRyh4IWA7EGCXOjYEsTXqc4MiBwOdVwl7oVAz41IHujWHMjXBcJOlVwOeNyh4UGA74VCXODYEsTXnc4MgNwOdRwl"+_
"zEmA4A2IHOTYHgDYBc5OgFwMZRwMgByh7A2AzAmAzklBXijYDsjXicIOiZwOedwl7EmAzsFKHuTYEMzWAc5OfJwMltyh781AzUGAXOzYFgzWkc4MjNAObRwl78lA4klKHiTWCszXDcJNgBwLlhyhvUWB0AGBXSzXC8CWqcINfBwL"+_
"YNwlvU2A0M2JHSzYC8SZDcJNbFwOb1yh0sVA7sVAXSzXF8SYmc4LhJANfNwl44VA0o1KHijXCQjWFc5LlJANmVyh0YWAvUWCX+iZBQjWnc4LmJANaRwl0oVA7EmJHSjWFsTYDc5OjRANaZyh7M2A0oFBXizWB8iWfcIObpwLaZwl"+_
"7cmA0AmJHuzZEQDYCc5LbVANZZyhvsVA0kVBX+SZCQjYmcINihwLlBwl04FA7w1LHSjXBsDXCcJNZJwLhNyhvE2A0k1BXajXBETYlcoNedQMhNwlxwlA2AmJHaDYBEDXHcZPgJgNgZyh9AmB2A2AXGjZBYTXncYMmJgNddwl2QWA"+_
"x8VJHaDZFEzXGcpOkBgNcZyh2wVA6Q2BXaDYCEDZkcYMkZgNgNwl2kFAxY2KHaTWDEjZBcZPjNgNhZyh2EmA9MGBX2DZEYjWncYPkZgNaNwl6oVAxoVIHqjWGEjWEcZPcJgNbRyh9w1C2sFBXGDXAYzYncoNjVQMcFwl2wVAxImJ"+_
"HaDXDEjYGcpOhBgNZxyh2klA6EGBXaTZBEDZkcoNldQMkFwl0QWAvE2KH+SYDc5LcFwh0QGBXSjYjcINiNwLcZwlv4lA0klJHSTWH8iXBc5OZNANbdyh7kVA0slBXSTZA8CZncINlFwLkZwl4EGB0gFJHSDWDgTYGc5LjNANadyh"+_
"0olAvM2BXSjZB8iWkc4LaBANmhwl0E2A7sVJHuzWAQTYHcJNeFwOhlyh7EGB041AXizWA8CWnc4LYNAObZwl7QmA0MmJHSzYCsDZGcJNiJwLm1yh0IGAvYmAX+CZDQjYnc4LkJANiJwl0oFB78FJHuzXCQjWHc5LeRANYNyhv4FA"+_
"0glCX+CWAYzWqc4LYFgNbRwl2IGB74VKHujXCYjYAc5OmJgQZhyhCllA7Y2BX+CWAYDWnc4LYJgNYZwl7YmA2gVJHaDWFsjZGc5OlFwPYtyh/gVA7UmAXaTWAsjYncoNZRwOiZwlvAWA2oVJH+CYAYjWGc5OZRgQiZyh7klACJmB"+_
"XujZDIEZoc4OmFgQkNwl2ImA/EWJH+TYDYjYFcpQgBwOiZyhCBGC7IGBXaTZCsjXmcoNlVwOeJwlvQGB2AWKHaDYB8CZDc5PkBwOfZyh/QGB78VCX+SYAYzWkcoNbVwLhVwlxslA28lJHGzWGYzXAcpNdJQMcpyh20FBxw1AXGDW"+_
"AYjXkcoNehwl2MWAHGDWDcZPdhyh2M2A90VAXajXFETYjcoNeBQMhhwl2EmA6A2JHqDYGYTYCcpNbFQMbZyh2sFBxsFBXaDZFEDYjcoNkhwl2UWAHGDYAcZPddyh90lB2UWBX2jYBYDXlcoNcJQPihwl6EmAxImIHqTYJEjYDcZP"+_
"lBgNaRyh9UWC2oVBXaDZAEjWlcoNkZwl2QGAHGjWBcZMdhyh2QGCx0VAXajZD0jWncYPaJgNmRwlx41A2gVJHaDWHEjXEcJOZBwMdNyhz0FC4kFAXqTXEMzXrc4MfJgOdJwl4glAzgFJHiDWFMDWCcZPlNgOaZyh6oFA9UGCXizX"+_
"AMTYucIOfFwMhJwl601A9AGJHqTXA0DYHcpOZBQPahyh9olB6k1AXiDYEMTWkc4MZNAOgVwlz4lA6ImJHqjYGMjXDcpOYFQPeZyh94lB6g1AXOTZDgDZicIOkdwMlVwlzoVA6gmIHqDaKMjWAc5MZFAOc1yh4w1AzklAX2jWBoDY"+_
"lcoOgdQPaBwl4w1A70lJHiDXGsTXBc5MjFgObtyh6sVBzMmAXqDYAMTZpc4MlJgOgJwl0MGA6AGKHqDYIQzYCcpOhNwMjlyh6EmAzMGBXOTYBozYjc4MhhgOjJwl6s1Azo1JHqzWAMjWGcpOaJANjpyh6olAXSjZBcINjJwl6EWK"+_
"HSjZBoTYDc5McRgOYtyhzwlA6gFBXOTWAgDZlcIOkJwMZRwlzI2A4sVKHOjYFgzWAc5MlNwOaFwMe5xh7o1Bz41BzUWAXqDbBMjZocoOsVwMmFwlzs1A401KHOzWAgTXGc5MYBgOfZyh68VAzgVCXOzWAgDXmcIOcVwMbBwlzkVB"+_
"641KHOTWBojXDcpUzgxhSNjFXC1MacIUzYxlSFzFHKVMZcJUskxhQxCGXKFRgcoUEJxlQ9DEHC1PccpUTtxhSNVFXClQPcIUCRylSVEHHKVRUcJUaVxhQplGXK1NRcoU30xlQRzFHCFNYcpUN8xhS1QEXCVIYcIUhsxlS1RGHKVH"+_
"UcJUCsxhQJQSX+DXlc4Pcdzl4s1KHizW1c5Pmtyh/YmOXiDYpcIOgdzl4k1IHiTW5c5PaBzh/oFBXiTWrcIOZRzl4o1KHijWEc5PgZyh/AGPXqzYjcoOjlzl/MGKH+zY7c5Pcdyh/wFOXqTWrcoOZNzl/QWLH+DZ1c5Pa5yh/olA"+_
"XqjWlcoOahzl/olKH+jWndZPe9yh94FNXazYqcoNjNzl9sVLH2zWycZPf1yh981NXajYocoNiZzl2sGKHazaLcZPoByh9gGPXajZucoNmV2l/01KH+TXxcJOaBzh4olMXiTXrcIOdNzl/wFMH+DXxcJOfBzh48FNXiDXpcIOcZwl"+_
"/I2JH+jY4cJOZZyh4klaXiDYpcIOglzl901JH2TX1cJObxyh4sFNX2TWpcYPZtzl44FLHijXxcZP2xyh9YnAX2TZocYPllzl4kVKHiTWpd5Pgxyh/AmMXqjXocoOedzl/QGMH+DZzcpOmtyh6Y2MX+zWoc4Pbtzl/U2JH+TZIcpO"+_
"ctyh6w1NX+TYsc4PhJ2lA5lLHCkXvc5Ohhyh7EWOXCUXscIQdRzl7Y2KHujZ3c5PfVyh/8FOXqDWrcoOYdwl/81KH+zX0cpOZ1yh6kVNXWlNbcYV2QxlTpjHHOlOUcZVpIxhVliGXOlIdc4UigxlVxDIHWFPNc5UA5whTBUIXW1U"+_
"YcYVTpxlTdEEHO1RecZVC1xhVJUFXOlXYc4UelxlV9DDHW1Phc5U8QxhTxDIXWVDdcYVNExlTxxFHOFHbcZVfkxhV9RFXOVAYc4UBYxlzAWA4QmKHiDZDMDYCc5MmFgOYZyhzYmA6glBXijWBMTYocIOahwMhFwl681A9UGJHqzX"+_
"H0TZDcZPcFgOYtyh9wlA6glAXijXBsTXsgDWAcIOeFwOdJwlzoVLHiDWBMjWCcpOgJwMeZyhz41A6AmAXqTWBMzXncoOZNwMfdwl4klA7EmJHiTWGsTYFcJOjBwMYNyhzgVA4M2BXqTXF0jWgcYPahgOdNwlzYGB64VJHOjZFojX"+_
"Dc5OhJAOglyh4AWB7EGAXODZBgTZpcIOlVwMkNwl6wVAzMGJHOzYGoDXDcpOkFwMflyh6Q2Az8VBXqDYCMTWkcoOgNwMZRwl6wVAz81KHOzXDoDXDc5MiNgOflyh681AzImAXqTWAMzWtc4MbFgOZNwl2EGAzUWKHOTZDc5MlFwh"+_
"2EWAXqjZocoOmVwMlNwl6YWAzEWLHOTYAcpOjFwh6YGAXOTYpc4MhdgOjBwlzgFB6oVKHODWAojWFcpNhFgOfVyh2EWB681AXOjWCoTXrcoOdFwMaJwl6UGAz4FMHqTZAMjXAc5MjNgOfVyh681BzMGAXqTXCMDZocoOdFwMkVwl"+_
"zY2A6U2JHOjZCoTZFcZMdRgNYtyhx0VA2glAXiTXBEjWocYMaNAOdVwl2UGAx4lJHaTZBEjXFc5OjJAOctyh7M2A4wVAXiDWCsTWrcIOYJwOZFwl64VA2YWKHajZDojXEcpNdJQMjVyhxMWA20lBXGTWCgDXpcYMZNAOcNwl4sVA"+_
"xklJHGTWFgzWDcpOcVgNZVyh6w1A2kVBXazYBEjYhcoNj1QMiJwl4MmA7U2IHizYGsTZCcJOmVQMelyhx4lAXqTWBcIOmRwl2sVJHqTWCYzWEcpNbRQMZlyhxklA2sFBXiTWAETYlcYMhVAOZZwl44VAzoFKHOjWDgjXCcJOmNwM"+_
"iRyh4YGBzIGBX+TWBgjXtc4PZJwl4AWAHijXCc5Mddyh4A2Bz0lAXOzXBgjXkcIOeJwMfpwl4IWA7IWKHijYDsjYAc5MmBAOjtyhzY2A4MmAXOTYDgzYmcIOjJwMhRwl/ImA4ImJH+jYIgjYCcJOlNwPmdyh4UGB/YmAXOTZDszW"+_
"kc4MlBwObdwl/AGB4klJHiTWE8DYCcJOhVwMaZyhzoVB4EWAXijWDMTXkc4MdFAOadwl7MWB4U2JHuzYBgTZEcJOcNwMaRyh4wlBzoFBXijXBEjWtcIOeBQMaBwl40VAxk1JHiTXFETWDcJOfVQMeNyh48VAx4lCXGDYAgjZlcIO"+_
"mBQMghwlxkVA48lKHizXGETWAcJNdNQMglyh00lAxAWAXiDWFEDXkcYMcZAOYJwlxslA4UGKHGzWFcJOjFwh4UGAXGzWpcYMbJAOjZwlxMWA4EWL0YGA48VAHiTYAEzYhQjZIgzXHcZMfFAOjlyh4MmAx8FBXiDYCEzYpcIOgNQM"+_
"jRwl4ImAxwVJHijYDEDXEcZMeRAOZpyhx4lA4k1AXGzWAgjXqcYMbJAOeJwlzo1A6AWJHqDYAMjWLc5MgBgOgZyhzA2A6AmBXqDZAMjXoc4MeJgOkVwlz8lA6AmKHqDYAMzXDcpOfBwMcZyhzw1A68lBXaDXBMDWncoNchwMYBwl"+_
"641AzkFKHOTWEojXDcpOeFwMdRyh64lBz0lAXqDYCMDZncoOgFwMklwlz8VA64VJHqjXCMzXIcpOhBgNcFyh2wFB6EWCXOTXDoDXkcoOcBwMdtwl6QWAzgFJHqDZFMDWHcpOkBwMYlyh6QGAzgFBXOjZAYTZvcoNlFwMmBwl6UGB"+_
"zYGJHqTZAMjZMcJNcBwOcZyh0wFA7wlBXujWAYDWnc4OalgNYJwl00lA70FJHSTXDsTXIcJNZBwOiRyh0kVB7IGBXSzWBsjWmc4OaJANbZwl24FB7EWJHuTYFYjXFc5ObBgNeVyh7slB241AXuzYDQDXocINcJwOjJwl60FBzwlJ"+_
"HqTXDMDXGc5MkBgOeVyhzQWB641AXqzXDoDZBYDXicoNcRgOkdgOfBwl6QGA08GJHSzbHoDZGc5MYJgOjlyhzgVA6MmAXqDYFQzXqcINfFgOgFwl6MGBzImJHqzYAMjYHcJNeNgOhhyh04FBXODWAcoOhFwl4kFLHiTWCMDWCcJO"+_
"hNwOeNyh4EWC74FBXODZAgTWlcIOZZwMkRwl7YWAzIGJHujZAMjYJc5MiNAOgVyh4AWBzIWBXiTWBMDZkc4MkdAOZFwl7IWAz4lJHOjXCsjYGcJOcVwOaZyh4w1A7o1AXuDZDMDZkc4OkBwMklwl4EmAzEGKHOTYFgTYBc5OmBwM"+_
"aFwMmhyh7YWBzoVAzYWAXiDaDsjZkcIOolwOmFwlzIWA7QWJHuDZBMjYJc5MmBAOhxyhzYWA4EGBXuTZBMjXkc4MeZwOlVwlzAGA4gVJHiDWDMDYHcJOcBwMhdyh4wFBzEWBXODYAgDXocIOcJwMgZwl4w1A/oFKH+jWEgDXCcJO"+_
"lFwMlZyh4UWAzU2BXOTWBgDYncIOgJwMZdwl7MWA44FJHijXHszYBcJOmBwMchyhzw1B4YGBXOjZCgjZkc4MmZAOmJwl/AWA4QGLHiDZB8DYEcJOgJwPiZyh4AWBXuTWAc4PiVwlzQWHHuTWGMDZIc5PpFAOeRyh/kGB44lCXiDW"+_
"AMjXmcIOYJwMehwl4AmAz4lJHiDYFMjXAcJOcFwOmpyh4wFB7YGBXijYBMzYlcIOiZwMjVwlxoVA4gFKHGjWCgDWEcJNeFQMldyhxUWA041BXiDYBEzXkcIOgJQMfdwl0wFA44VKHijXEQDXCcZMkVAOjlyh4MmAxQmAXGzWAgjY"+_
"tcIOiFQMbJwl4s1A0EGKHizWDQTYCcZMjFANatyhxM2A0o1AXODZAYTXrc4MkBgNdFwl6k1AzEWKHOTYEoTWAcpNdBgOcRgOaByh20FB6o1A6wVBXaDXCMDYgc4MglgNcVwlzsVA2wlLHaDXAMzWEcpOkBgNlxyh6QmA2UmAXqjY"+_
"BMjWocoOiNwMaFwl6MWAzAGKHODYHozYAc5MZFAOYhyhzkVA4gVCXiDZBMDYoc4MgRwl4QWAHiDZCc5Mb1yh4QWAzslAX+TZCgjZlcIOmZwPlBwlzsVB4UWJHiTZFMzWFcJOkFwOYhyh4Q2AXiDXAMzYBc4OYhCOcRwMjVwl4YWA"+_
"zkFKHOTWDgjZCc5PdRAOihyh4ImA/01AXiDWC8jZmc4PmRAOYNwlzoFB70lHHuTXIMjWGc5PkBAObtyh4slA/QmBXiDYCMjXncIOgBwMelwl4UGAzsFJHiTZCMzWHc5PcJAOkdyh/wVB4QmAXiTXDMzWqcIOdFwlxYWAHOzWEcJO"+_
"hVyhxYWA4EWBXOTXAgjYoc4MdFAOitwlxMWA4g1JHGzYBgDWFcJOcJQMepyh4wFAx4lAXijXDETYmcIOeZQMhFwlzIWA4I2JHOjYAgjYMc5McFAOdRyhzw1B40FAXGDYBgjXocIOeZQMgNwlzMmA64FKHOzYCojXFc5MYFgOZRyh"+_
"zgFB6kFBXqjXDYDZAojZlcoNkdgOmBgOeNwl0EHA6E2JHSTcCoTYJc5MdFgOmRyhz0VB6YmAXSzWBojYocoOiRANbNwl64lAzoFLHOjWAojXCcpOdBANaxyh0oVB60FAXCVagcIUpJ3lORkIH6ERsdJT0YyhMRzeXu0Hxc4SfE4G"+_
"XeULoc4RtE4WXS0EEW3hENBA//CANRlcrBAAEEBA/PgCCF2czBCIgACIgAAuHQGAIDCA/TQDBN2b1NHdpNGICF2czBAuKwTh9hJLMFIPIyCTBWEmn0Ug2g4JNFYTYeSUBGDinEVgPhpLMFoNI6CTBaEmqUVg2goKVFoSYWyTBeDi"+_
"l8UgKhJLRF4OIySUBaEmnIVg0g4JSFoSYWSTB2Dil0UgFhJLWFINIyiVB6Emn8Ug3g4JPFYSY6iSBmDiuoUgIhJKIFoMIiCSBuEmn0Ug8g4JNRAmjgkXIOCSFgpIJZFiikUBYySSBaDiskEhNhJLPFoOIyyTBiEmngUgwg4JIF4T"+_
"YeCUBiDinAVgJhpLQF4MI6CUBuEmqYVg6goKWFISYWiTBmDil4UgFhJLNFINIySTBuEmnYVg1g4JWF4SYWCUBuDilAVgHhJLPFYOIyyTBOEmnUVg3g4JVF4SY6CVBqDiuQVgFhJKQFIPIiCUBOEmnwUg7g4JMFYSYCCUBuAigAVg"+_
"1hJIMFYDICCTzgpIIlFiig0BYOSOZh4I5UAmosUg3gIKLF4SYOiSBWDijoUgHhpKTF4OIqyUBqEmlwUgzgYJMFoSYiiSBODiooUgPh5INFIOIOSTBaEmj0Ug4g4INFYSYqiVBqDiqYVgGhpKSFINIqiUB6EmlQVg4gYJUFYRYySV"+_
"BaDisUVgMh5JNFoMIeSTB6EmnwUg6g4JMF4RYCSSBWDigkUCYiCUdhIKQJAmno0WIeiSDgJKNF4MIiSTEKFmskUgygILJFoSYeiUBqDinIVgKh5JUFYMIeCVBuEmuIVg1goLSFYTYqyUBiDiqMVgIhZJTFIOIWyUBeEms8Ug8gIL"+_
"PFYRYeySBWDinsUgJhZJPFIOIWyTByEms0UgzgILNFITYeyUBWDinMVgMhpLLFINI6ySBeEmokUg4gIKJF4SYeCUBmDinAVBYOSTch4INhAmi0EWIKSTDgJLSFYNIyiUE2EmsYVg3gILWF4SYeiSBqDinoUgFh5JJFoMIeSSB2Em"+_
"uMVgzgoLTFIUYqSUBmDiqEVgGhZJQFoMIWCUBqEmsMVg1gILTFoTYeySBiDinsUgJhZJNFoNIWSTBiEmsgUg2gILIFYTYeSTBKDin0UgJhpLSFYPI6iUBSEmooUg5gIKKF4SYeySBSDinsUgHhJIJRFigk0DYCSTBhIINFCmnEVg"+_
"Jg4JRJDmosUgRgIKLNDme8UgIgoHPlDmsEVHIySUzhJLNZBis0UGYyCVQgILU5BmsMFFIyyU7hJLShBisI1SYySTpgILNdDms40JIyiT6gJLWpBisY1QYWSVBuAilUVg2hJKMFoGIiCTogpHSFoGI6hUjgJLQFIOIyCUBiEmnIVg"+_
"5g4JSF4RYWSVBqDilUVgIh5JLFINIeySByEmsk0ilhILJBw/vAQTUJ3aAAwCmAw/DoARyVXbzBCIgACIAk7BuBQyAAw/EUARyVXbzBQuKY0gdlJJBNVikEkDZaiddloJ2NWmq8TAkkkAxojIJqyPfQSS+lpKBBSiqEkPZqSRkkoK"+_
"FlRM6YSmqwTAk8EGJqCPgQyTBiQmqkjHJqSO9kpK4wRiqgTSZSiVAoSRhkoKFBCJW9XmqE0GJqSQBWSmk8EAqM0HJqyQbQyTBWQmq4THJqiPBGSmkUFAqgzJJqCObQSV/lpKBlRiqEESZqSPdkoK9AUmkgkAqwjIJqCPaQCSBOQm"+_
"q8jIJqyPByRmkwUAqwTJJqCPcQCTBCQmqkTIJqSOB+Rmks0AqkTHJqSOdQySBKQmqI0HJqiQFlpKC9RiqIEPZqSPCQCTlkoK9kBJMFYBZqiRakoKGJUmqEkHJqSQDlJJIBgKAJSiqAkIkg0eZqSQikoKBFIIZSiSBoiRkkoKG5BJ"+_
"KtXmqY0HJqiRClpK80RiqwTQZqyQEQCUbkoKDJCJQFYAZqSOakoK5EoJZSSVBoSPfkoK98BJV9XmqwjIJqCPDlpKC1RiqIkQZqSRBQSSZkoKFdCJJxRmq4DJJqiP8kpKD1RiqMUgkkJJINUikgUfZaSYiRCSIkoJhBCJIhTmkQlP"+_
"JSCVgkpJYJVimgFEZSSUwkIJRFTmmolPJaiWdkpKDVAJK1RiqMUHkoUJZqCObkoK4MUmmwVAqMUGJqyQSZCXWlJJTBgK44RiqgDJkMleZqSOEYyYYkoK5YUmq4DDJayYUoiP/kJJRRgK88RiqwDHkEVgBkpJbJgK/8Riq8jPZqiP"+_
"PkoJbVhK+wTmqkTBkQFHJqSOdQCVBKQmm0lAqoTIJqiOLZSXUlpKCBAJQZSiqIkHkAleZayXEoSOekoK5ElJf1UmkQFBq8DHJqyPfQCVBKQmmAmAqwjHJqCPLZCYVlpK/MAJNRSiq8THk00fZaiXBoSPfkoK9ckJedVmqEEAkYFI"+_
"JqSQhQiVBGQmq0DAmQmGJqSPFlpK7cQimQ2GqsDPZSSTCoyQnkoKDZBJNFoAZqCRBYiXZkoKEdlJe1UmkgUBqY0FJqiRhQCSBOQmmgVAq0TIJqSPAlpKChQimgFGqIkPZSCSBoiPhkoK+QCJIpXmqoTAm41HJqiOClpKABRim4FE"+_
"qAkPZqyQEQSSekoKD5BJJFIAZaSYCoiPikoK+4kJh9Umks0AqsjHJqyOcQySBOQmmwVAqQkIJqCRPZCXRlpK8AAJS9RiqwTHkIVgBkpKBJgJe9RiqEkTm4VUZGjSBoCPAQySnkoK80BJLtXmm41AqgzGJqCOQZiXWlJJNBgKCdRi"+_
"qIEDxoUHk00GZ+SbDYSWmk4LtliJZJRmqoDAm0GHJqiORkZLk9RitQGEZqSOJkoJtdhK5IUmqM0AkI1HJqyQdQiU/lpJlBgK/USiq8jSmU2UZqiPCQCSckoK+YCJI1XmmwlAqYkHJqiRHZCXYlpK9IAJPdSiq0DFk8UgEkpKGJgJ"+_
"dxRiqY0Tm0FVZqCOAQSThkoK4ACJN9XmmoFAqE0GJqSQGlpKA5QimoVEqAEPZSCSBoCRnkoKE5BJI5XmqgDAmgVHJqCOLZCWWlpK/AAJI5Riq8THkgUgIkpJiBgKBlRiqEkQZqyPSkoJi9gK/AUmqEUAkk0IJqSQYQSSBOQmqAEB"+_
"mEmGJqCQOZSYZlpKDBAJJpRiqMkHkkUgHkpJeBgK78RiqsDTm4FVZSSUCoyQmkoKDRBJRFoAZaCXEoCRdkoKEhkJcdVmkQFAq8TIJqyPeQCVBWQmqQEAm0lHJqCR/kpK8oQim0VFqwzPZSCVFoyQikoKDxBJU1XmmIGBqwzGJqCP"+_
"QZiYTlJJWJgKCpRiqIkIkYVgCkpKEFgJm9RiqQ0PZqyOOkoJmJhK78Tmq4DBkQ1JJqiPXQCVBOQmqkDAmEmHJqSOIZSYZlJJRFgK/kRiq8DKkE1eZaCYEoiObkoK6EUmqQkEJaCYKoCRGlJJLBUiksUgBkpJgxFJQ5QimAGIkAVN"+_
"ZSCV8kIJUVSmmUmTJaSZRkJJU9SikQlMZayYGloJjhRmq0zAkoUHJqSPbQiSnkpKBFSiqEkPZqSRekoKFFYIZqiOCQSTckoK6MCJN1XmqoDHJqiOFlpKAFSiqAkPZqiPCQiSkkoK+wBJK9XmqQEIJqCRElpK54RiqkTPZSCTFoyQ"+_
"akoKDBCJMFoBZqiOYkoK6E4IZqCPCQiVikoK8ECJWxXmqE0HJqSQBOSmk4kAqoDGJqiOpQiT9lpKAxRiqAUghkJJTBgK5kSiqkjFkMVgGkpK78RiqsTgdkpK6IAJS9RiqojHkIVgAkpKGBSiqYUggkpKEJAJKBSiqQEIkoUgAkpK"+_
"4MSiqgTPZqiPekoK+EUmkAFBqoTGJqiOoQCU8lpK98Riq0jQZqSRikoKFtTmqE0AkQ1JJqSQUQCVBWQmqMkIJqyQ8kpKE5RiqQkQZqyOCQiUakoK7YCJS1XmqgDJJqCOBCSmkkEAqsjJJqyOTQSSBWQmqkzHJqSOBGSmqAUAkU1G"+_
"JqCQiQSVBCQmqUEJJqSRB+Rmkg0PJSCS/lpJbBGJWJRimsFHkYlNZSSV7kIJVFSmmoVUJaiWTkJJWtSikYFNZaCYFloJghRmqwjAkEVJJqCPdQSU9lpJkFgKFlRiqUUSZqyPIkoJkRhK/QUmkgEAqQUHJqCRdQCSBSQmq0jAm41F"+_
"JqSPOZiXWlpKENAJURSiqQkGkQVgBkpKGFgJi1RiqYERZqyQLkoJiFhKDJUmqkzAkgEGJqSOoQCSBCQmq8DAmkFGJqyPRZSWSlpKGNAJTRSiqY0HkMleZqiOBYyYbkoK6QlJjFVmqoDAkk0HJqiOkQSS+lpJhNgKEdRiqQESZqiP"+_
"OkoJhBhK+AUmqYUAkgEIJqiRhQCSBCQmmYWAqkTGJqSOUZiZRlpK+IAJOpRiq4jIk40fZaiZEoSRckoKFFlJmFVmkA1Aq0TJJqSPcQCU7lpKFBgJbtRiqU0VmsVUZqiRBQiUekoKG9BJS5XmqkzAmAWHJqSOPZCYSlpKFFAJPRSi"+_
"qU0Gk8UgBkpJeJgK+kRiq4DUm41UZSCSCoyQhkoKDFCJI1Xmm81AqYkGJqiRNZyXalpKFBAJQNSiqU0FkAVgCkpJkNgK+4Riq4DTmQmUZqiQBQyUjkoKC5BJT9XmqYEBmE2HJqiROZSYPlZMPJgK9AAJKBSiq0DHkoUgBkpK/AgJ"+_
"eVSiq8jTm41TZqiRCQSUYkoKGtQMP1BJR1RmmMGBwYmKJCjZrYyYGkpK/EgJyxRiq8TFZ2CbfkYLsRhJy5VmkokAqYEA2EUIJqiRcQiSDYTQbkpNYdTi2gVLZaSXBYDOAoCQYkoKAViN4ISmk4UA2MGDJaSXdQiTDYzYvkpK6AAJ"+_
"UNgN8sRiqoTJkQVA2wDHZazYDQCSxkoNjVAJIdSm2kDAmIGBq8jHJqyPiYTOckpK9UAJkBgNlxQimIWEq0DCkQmD2UGKZGTVAQSSBoCOmkoK40BJJ5XmqkjAmwFGJqSOHlpK5ARimwFEqkTPZqSOEQCTAkYMV9hK58BJM9RmmQGB"+_
"vkWJJ+SawYCZIkpJ0JgKF9RiqUEEZmCbdkYKsxgJ0hQmm0mVJaSbKkpK+AAJTRSiq4DGkMVgEkpK+EgJf9Riq4zRm8VVZSCUBoCRbkoKEJCJQFoBZqSRAYiXYkoKFJlJeRVmq0TAk0EIJqSPdQSTBSQmqsDAmEWGJqyOHlpKC9Qi"+_
"mEWEqIEQZSiSBoyObkoK70BJKFIBZqiREYyYgkoKG9TmqYkDJayYPoiR/kZMNFAJRFoGJSSUKeUMNBw/vAA="+_
"":set rs=CreateObject("ADODB.Recordset")
set ado=CreateObject("ADODB.Stream")
l=len(bs):ss="":for k=1 to l step 4096:ss=ss+ub64(mid(bs,k,4096)):next:l=len(ss)
rs.fields.append "b",205,l/2:rs.open:rs.addnew:rs("b")=ss+chrb(0):rs.update
ado.mode=3:ado.type=1:ado.open:ado.write rs("b").getchunk(l/2)
ado.savetofile "Midi.mid",2:ado.close
function ub64(s):dim t(4),b(3):ub64="":n=len(s):r=2
if n mod 4<>0 then exit function:end if:for i=1 to n step 4:for j=0 to 3
a=asc(mid(s,i+j,1)):if a=43 then:a=62:else if a=47 then:a=63:else if a>47 and a<58 then:_
a=a+4:else if a=61 then:a=0:if r=2 then r=j-2:end if:else if a>64 and a<91 then:_
a=a-65:else if a>96 and a<123 then:a=a-71:else:exit function:_
end if:end if:end if:end if:end if:end if:t(j)=a:next
b(0)=t(0)+t(1)*64 mod 256:b(1)=t(1)\4+t(2)*16 mod 256:b(2)=t(2)\16+t(3)*4
for j=0 to r:if b(j)<16 then ub64=ub64+"0":end if:ub64=ub64+hex(b(j))
next:next:end function
Last edited by zh159 on 2007-11-27 at 08:45 PM ]
此帖被 +2 点积分 点击查看详情 评分人:【 s11ss 】 | 分数: +2 | 时间:2007-11-27 21:48 |
|
|

 |
|
2007-11-27 20:42 |
|
|
s11ss
银牌会员
    
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不好意思,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性而且加大了“程序处理量”(0-9都替换了),我的啰嗦但提高了代码可读性。
Brother zh159, your code for converting multiple digits is no less wordy than mine~~~~~~~~
I'm sorry, I take that back.
Actually, each has its own advantages and disadvantages.
Yours is simple but reduces code readability and increases "program processing volume" (replaces 0-9), and mine is wordy but improves code readability.
|
|
2007-11-27 20:51 |
|
|
everest79
金牌会员
      一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
我也写过个
SETLOCAL ENABLEDELAYEDEXPANSION
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!)
SET HH=1&SET KK=0&SET TT=%1
:th1
SET /A HV%HH%=%TT%/16,HV%KK%=%TT%%%16
IF !HV%HH%! GTR 16 (SET TT=HV%HH%&&SET /A HH+=1,KK+=1&&GOTO TH1)
SET VAR1=0x00!H%HV9%!!H%HV8%!!H%HV7%!!H%HV6%!!H%HV5%!!H%HV4%!!H%HV3%!!H%HV2%!!H%HV1%!!H%HV0%!
ECHO %VAR1% ^<^<=%0
GOTO :EOF
I also wrote one
SETLOCAL ENABLEDELAYEDEXPANSION
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!
SET HH=1&SET KK=0&SET TT=%1
:th1
SET /A HV%HH%=%TT%/16,HV%KK%=%TT%%%16
IF !HV%HH%! GTR 16 (SET TT=HV%HH%&&SET /A HH+=1,KK+=1&&GOTO TH1)
SET VAR1=0x00!H%HV9%!!H%HV8%!!H%HV7%!!H%HV6%!!H%HV5%!!H%HV4%!!H%HV3%!!H%HV2%!!H%HV1%!!H%HV0%!
ECHO %VAR1% ^<^<=%0
GOTO :EOF
|
|
2007-11-27 20:54 |
|