Page 1 of 1

[utility] sha1

Posted: 30 May 2014 01:52
by carlos
Hello.
I programmed a console utility called sha1. It support unicode characters. All is ok.

Code: Select all

SHA1 v1.0
Print the sha1 hash of text or file

sha1 -t text
sha1 -f file

If next errors happen, it print null
and return the next codes:
1 = Error encoding text to utf-8
1 = Error the file cannot be read
2 = Error while reading the file



For example:
C:\Carlos>sha1.exe -f sha1.exe
a3e4ad0045eb9d36a61b520526128c279f53ca44

C:\Carlos>sha1.exe -t ""
da39a3ee5e6b4b0d3255bfef95601890afd80709

C:\Carlos>sha1.exe -t "倉庫番"
f6576fa66e18a365e5f8c6b895d03cf097ec083e



90% of the code I've taken from NetBSD (a unix system) and I've adapted a little bit.
I love unix, and glad me have a utility with unix code running under Windows.

This is the script for rebuild the executable:

The source is found here: http://consolesoft.com/p/sha1/index.html

create_sha1.cmd

Code: Select all

::This create sha1.exe
@Echo Off
Rem Script made using BHX { consolesoft.com/p/bhx }
SetLocal EnableExtensions EnableDelayedExpansion
Set "bin=sha1.cab"
Set "size=8844"
For %%# In (
"sha1.exe"
"!bin!" "!bin!.da" "!bin!.tmp"
) Do If Exist "%%#" (Del /A /F /Q "%%#" >Nul
If ErrorLevel 1 Exit /B 1 )
Findstr /B /N ":+res:!bin!:" "%~f0" >"!bin!.tmp"
(Set /P "inioff=" &Set /P "endoff=") <"!bin!.tmp"
For /F "delims=:" %%# In ("!inioff!") Do Set "inioff=%%#"
For /F "delims=:" %%# In ("!endoff!") Do Set "endoff=%%#"
Set ".=set o=createobject(#scripting.filesystemobject#)"
Set ".=!.!: set w=createobject(#adodb.stream#)"
Set ".=!.!: set r=o.opentextfile(#%~f0#,1,0,0)"
Set ".=!.!: w.charset=#windows-1252# : w.type=2 : w.open"
Set ".=!.!: for i=1 to !inioff! step 1 : r.readline : next"
Set ".=!.!: do while i<!endoff! : d=r.readline"
Set ".=!.!: for j=1 to len(d) step 2"
Set ".=!.!: w.writetext chr(cbyte(#&h#&mid(d,j,2)))"
Set ".=!.!: next : i=i+1 : loop"
Set ".=!.!: w.savetofile #!bin!#,2"
Set ".=!.!: w.close : r.close"
Set ".=!.!: set w=nothing : set r=nothing : set o=nothing"
Set ".=!.:#="!"
Echo !.!>"!bin!.da"
Set "ret=1"
Cscript.exe /B /E:vbs "!bin!.da" >Nul
For %%# In ("!bin!") Do If "%%~z#"=="!size!" Set "ret=0"
If "0"=="!ret!" Expand.exe -r "!bin!" -F:* . >Nul
If ErrorLevel 1 Set "ret=1"
Del /A /F "!bin!" "!bin!.da" "!bin!.tmp" >Nul
Exit /B !ret!

:+res:sha1.cab:
4D534346000000008C220000000000002C000000000000000301010001000000
00000000450000000200010000980000000000000000BE44971B200073686131
2E65786500A8336856951B0080434BBD9D4F68237976C7E51EF5469A6877B541
042D2DB29AA08348C4440322284104132CF0C1225EE2CE364B1F3C1B0FE905EF
4C33EB40073AE0C958C185ACACC93AE080210EF8E0431F7A890F263889B5EB83
3378C10B66E280219AC581EAAC0F3AE8A0834A9DDFFBFDDEFBFDAB92CB726BDC
307659FE55E9FB7955BFA7DF7BF5754DEDBBEB91B722914894FDF7FA7524B21F
11FF2623E1FF96D97F5FFBD6BF7E2DB217FFF93BFB13333F7F67EEC9F77F987D
FAF1477FF1F1FB3FC8FEF9FB1F7EF8D152F67B1F643FFECB0FB3DFFF303BF527
7F9AFDC1470B1FBCFBD5AFBE9DC363CC56239199897BC671DB91AFBFF5EB135F
31DF2C89FFBD4475B07D4FE88E44D4F7C8A1787DF2DB139C8B0F4CEADFE537FE
6FFB279148E506ACA3FEBB60C79DB9E6F7EF2E7DF06C0948D651D0DF0BDDFABF
6C2432FFEEC2FB4BEFB3EDC5B7901D4037CC719382FA56FF1E3AFFFBC9558C6D
ACF333EF547BECFB5B9159F6752232EBFEC38F22914F8F62FB1370AADC1FF19F
A2CD6A6F968F9EDD7FF22F93ECEB02FF3A0F5FDD1FF231A9C67DFE62E3BE7835
15E1C771AAFD46B53FEBFE9938D07FFE8CBF7D94BF3D00366AB13F38FE7AFD7F
60B39AF8F430DA887D7BFF775EC2117E5728A91F7E7DE53EFBF5AB073426C6C6
B8B9097EC057FF06BFDA36762FF2DDAFFECEDCFD8F8DDD3FE7BF8D0A79720C84
65FFF7D9EE24FBDF23E25DBE03BFFD43E35DCAFC5DFED67A97DF34DEE5B771F7
341CF78FF80E1F8837E6D17C055F8C9044604CA31A9B75FF638DE2278FFD4D38
0A1FB1FFC14FE058DF146FFEEA6BF08BEFF397BE220ECFC4EB074F69A7BB8FDF
BBF8BDC3DFEEF326C6A3076FF7E308E68559FFD706BB1660177CED9507D7C93F
35F92161DFEFF0087467DD1FD32139C1A475481802210E3CDCAC3A1C3F2513A4
B4C35EAAFF067F072EF4D7E8A8BFBA8F83AE1AD52BF8CDEFC960D13BB97FCD43
9AC0107EC4E3F5F99A16C21FF2977EB646219C75FF8BB6AFF47016D9B45D6F54
D38D5AA2F130C9AF959453EB35DE6E24DFFB0553D688BC73DCA8A51ADF78EFB4
51CB341E66184BE35EAB9D86CD5AA7F176EB552C7EFC493BF23AF21A067CA3F5
CB18FB0EE2275A6E3AFED34F7EC97EC318AFE2EC001D67A251EB4EB43E69FDE3
5FFDCD7759AC1AC9D62FEFB3EF4ECD6DC45AAF1EC43F6B54DD0936B2DF884FB4
986E27C62E4110C70EFC5BECBB53BD8403DF8BFFB451BD74924C2D9B768D87EC
F576A39A746A17A4FC42284FA2F24F5B51A6F8D39FB273784EFAE1A7DA998D00
2391826D3AD5530BE41440CE00E45C81A41124EDD44E24C80980B405481B4062
A05580B0D9702C418E0124D9A83151ECF52346ECD40E09E450802424488C4B67
030F14080BE0BE1F24A640D8F03D0B640F40F601E44081A410845D042F25C84B
0039122047009206AD0224ED545F489017009280EBE5217B7D979FD81D02D911
20310992E0D2D9A9DB56208C7CCB0F9250206CF8A605B209205B00B2AD409208
C2AE890D09B20120BB0264174052FCDAE62029A7BA2E41D601240697CF43F6FA
1A3FB1AB04B22A40D21224C9A5B3D9B3A240D8FB2EFB41920A24E9D49FBF7EFD
DA64E12F01CE32E0AC289C04E2249CE633D80B89EAF00340AD09A835804AF2CB
9E43B13759C237012EFE03A0D17CAF3F85DFB2B3DD5C840D0158E7DBC6C4FFB4
95E25429A7FE047E2931D99E0B7C4F9B34A548D94EF37ED27941CA7767B04D38
6E5066683ED6791F0BDE26D70DC89CC09725EA8F74EA47484DB9A23EC7A9934E
7356A39E95D42A6908C8B4539F31A8D34E733A903AADA8D94E537EEA29A49E46
EA19835AA591E6A44E3D89D473927A0EA98D9452AFE8D415A4A6C4522F736A76
059534EA92A4561926C321334EBD6850679C6621903AA3A8D94E793F751EA90B
485D34A855CE69E674EA1C5297257519A98DFC53CFEAD459A4A62C54CF706A76
1DA535EAB4A456E928CB21B34E3D6550679D6632903AABA8D94E093F7502A993
489D32A855826AC674EA185267247506A98D64558FEAD451A4A694558F706A76
1DF5078A9A6F5BB92BC721734EBD37D0A9734EB33B08A2CE296AB65367E0A386
97801A76076A386E601EBB1A68D4F0035047247504A9CD6CE60E346AF8C1C866
9703CC666D8DBA3DF067B33C87CC3BF50B833AEF34CF03A9F38A9AED74E6A73E
43EA73A4BE180CC966A73AF5295273DD9C1AB6FCD9EC44A73E1958D9EC7880D9
EC48A33E1AF8B3598143169CFAA1415D709A0781D40545CD76DAF753EF23F501
521F0E8664B33D9D7A0FA98F25F5F120289BBDD4A95F0EAC6CF66280D96C57A3
DE1DF8B3599143169DFA8E415D749ADB81D44545CD76DAF2536F21F53652EF0C
8664B34D9D7A13A95F48EA1783A06CB6A1536F0CAC6CB63EC06CB6A651AF0DFC
D9ACC4214B4E7DD5A02E39CD9540EA92A2663B2DFBA997917A05A9570743B2D9
739DFA3952AF4BEAF54150367BA6533F1B58D96C6980D9ECA946FD34209B9539
64D9A92F1AD465A7F92490BAACA8D94E0B7EEA05A47E82D48BC3B2D9BC4E3D8F
D44B927A691094CD1EEBD48FED6CF688B2D99C463D1790CD2A1CB2E2D4670DEA
8AD39C09A4AE286AB6D3B49F7A1AA967907A7658369BD2A9A790FA91A47E1498
CD2675EA493B9B55289B9535EAB22F9BD1E55DE2C3339F1EB2CFE9A2DA035E89
E1167C6B7D31C15F2BD1677A812B6FDC7BAFE51FFBEA5B8D3AFC3E7EDCE0C784
109486A5B6BC1E823C86A0224350094C6D393D04393BB56529B565B410640252
5B942EF73445817D6EA7CC2824E456540F44993EE6936620ECE1108B24C62285
B1480F4B78093D16098C4556C6221B98F0627A2C6276C28B52C28B68B1880424
BC184D82BE87B1609FE63DCF8845D2BC36281615FAF0EF7A462CECE1100B1802
B18023432CE0DD02D360C7D362013F402CA23216D1C03478E569B1801F8C34E8
7A98062F15569D6F5B69102A6BA7DEA640B00FF80B331029F3F21081A0C5C0B9
19057B2C44E11CA3708151687B43D2E2991E85338C02E7E051802D7F5A3CD5A3
70CAA380EDAAF684DDAE9A68BCFD9E910C93D4E7E971CD45A7D6D5C0D3E6B540
5740149704B58E066E8F65E0D50EA3AE75A138EF01EF3FFFEABF3F34DA5857B2
D770757D1BCB95BD06D768635D1251D22ABD63BCC505294CEB72B11F33E64925
A21826C8DAB946648F05A27320BA00A2B622D2FA596792E80C882E05D1A5BF9F
752A894E8D7ED6091125ACB23A013D309E8B9CDA91469435CF16112530D9D50E
35227B2C101D02D111101D2B22ADB17520890E80E844109DF81B5BFB9268DF68
6CED1151CC2A99D915F9526414A7F64223CA99678B889298B26ABB1A913D1688
7681E80510BD54445A876B4712ED00D19E20DAF377B8B625D1B6D1E1DA22A2B4
550EA7A0DD56CD40134DE1E4CD53453829DE135ED758EC81C0B20E2C1BC0B2A9
5854C6A8AD49963560D9122C5BBE2C515D952CABFAB2A9BAE2CF0939ECDA5497
C56C678BD4D7463E2C98A78A88A84B8C3D37C9650F8794084320253E17D57E6D
39283F3497F4527F099B772B8271C5BF547AAA17F94FED3616EFD3F9D2459EBA
37BC53C7730135E9A4ECA2792E89378399A6396FF2DAC381771E79EDFE9D9D40
82FB778BB2CE5F0CEC6405F6EFE402694E034F58E56DD6119D3C9E321CDE60D3
C04BE62927F02C2624D1D653E0F670009F46F019049F35C0B5D5D0940E3E35B4
8567AE862675F049BB9955D1C06356859BA30E1F6416A3C927D67BC6B927F01C
E62DDE92D3C0EDE1005E44F01282970D706DE953D0C10B085E91E095C07E565E
07CFDBFDAC9C069EB68ADC3CB600790E7244E34C8157CC734FE0796A5FA74D70
7B3880A7113C83E059035C5BEDA474F01482E724782EB0A595D4C19376833EA1
81A7AC3AB7E0F06EA148554E33AA839B279EA80BD4BE8EE8D4D658408E207214
916306B296D0FAFA92BF8F4BFE84444E0476E77BFA92BF675780BCF1E84B6B15
6AE374A8D6C9600FF16DB36451A791A88BD4BE76CD5AC71E0EE02ED63A5758EB
740643D2DAA50E7E89E05DB9BEEF06D67D6D1DBC6DD77D17037F5AA33AF75CAB
73CF46A8734F43EADC53E43D43DEF3C1906C76A2F39E20EF85E4BD08ACED8E75
DE63BBB63B1A04653359D41E6A45EDC16845ED7E7851BB8FE076EFD297CD027B
974712FC28B0900BEC5DCA6CF6621094CD6405BB3B5015ECCE60A40A767B105A
C16E23F80E82EF0E8664B32D1D7C6B68FBD2CC669B3AF8A6DDD2DA1804653351
AEAE0F54B9BA36B879B9BA3A082D575711790D91D70743B2D98A8EBC82C81B12
7923B09FB5AC232FDBD9EC796036A32A55343E45A12ADA8537AE554533F4DA72
95F748017C09C19F0DCB668B3AF822823F97E0CF03B3D9131DFC899DCD160641
8B342A66798F14EBD9E663133CA4A4150DC66BAB5ADE7904F0C7083E3F2CADCD
E9E07308BE20C11702D3DAAC0E3E6BA7B599C0B44635AFE8B78AB257F44F6F5C
F936274DF080E297F753017C0AC1A787A5B58A0E5E41F019093E1398D6CA3A78
D94E6BA5C0B446A571BD48E0156CBFDEB840C626EB7535326FBD027801C18BC3
D25A4E07CF217849829702D35A5607E77DCCE45007158B405CE4B7774EE9D51E
BC0A4DBA5EBCA5551C29E84E815DAAD3B8A71570AA06675BADF6849C39DC5725
021C30D0FD56A37605C7EF004077E2F893C38B83073FC2397B9F776978DFE901
EF3BDDD667857C49C1275EBD20BE8B784B2B2CD2D07F4223D5998658D04A730D
91EA6DE825494A7B2C509EC2BB9C81E873459946CA34EF3921E5AD4D58489910
94E2D543A23C8CB7B42A22033D257459ED6B9445F394122555D9AA8F14301628
F7E05DF641F481A24C21650A7A4D44796B871652C604A57875872877E22DAD6A
C83AB56DB2606D699425F3AC122595D460D79294F658A0DC8C537F675B512691
924D9D0D49796BFB1652A605A57875952857E32DAD4AC839B515F467559735CA
B279568992EA67F47249507B3803E59D2178AF6590BEA25813C8CA3E1B9E612D
F880DF061D87B72B2019C9BE11A3E78D98784BAB19D82292378ED0B9C51B47F7
B42ACC38ED1406AAA6D1E825C3600F8730CC8B77E4476648BC4D1594AA78AF48
06638CC6AF80FC255A461892591512AAB3451B096D5DD37A48CC0B84E2417536
5AC0301ED65808C61406631A83316304436534D9177A407DA131F9C102D29CF0
8461304A2A1854818B5E11BABD0AE6F51135AF148A0755E0D8E591D7873D1C42
92C7901430244523242AFD614F08433246B358404E1486310C499A4242EBD114
C5238BDD9C7B5A4DA72E130A06D5E6466FC71E0B914860249218899411099522
451788223146035940DE1426328C046CC75B5A55C2D6A8BCB783F630DE0EB9A7
D579C66542F1A0AA1DDD64321EF670084947BC23B55778F32830935E0DB4908C
D15D16944FDB5A48DA2A2454CF8B2E097AC7CECD9024CD2B854242F53C5ACD64
48ECE11092330CC93986E46230249F9EEA2119A3F52C289F1E6921395221E195
3E6FB590ABECC08C47CABC58443CA8D9B96F06C31E0BC1D8C7601C60300E0743
F2E99E1E8C313AD282F2E9AE168C5D150CEA01881E0FFACDB6CD78A4CD2B85AE
0FEA01A03D4D86C41E0E21D9C2906C6348760643F2E9A61E9231DAD582F2E99A
1692351512EA0E88A60E9AD156CC9064CC8B854242DD016CC7C890D8C32124CB
1892150CC9EA6048627DAE87648C5EB6A0C4FA540BC9531512EA1B88160D3AD5
9E9821C99AD70B8584FA06462B26603884640143F20443B2382CB1CEEB2119A3
D12D28B1CE6921995321A18E02F7A5918D6DC60C49CEBC5E2824D45140D79B0C
893D1C42328D21C156086FF40426D6293D246374C10525D6B21692B20A09B513
4423A396C16ECBCD9A0ADCEC767D5F81B7552018450C46695862CDEBC118A31F
2E28B166B460645430A8F7C08D6AD87EA8A7CC78847420B8E7EDFA260477CE41
48521892F4B0C49AD04332465B5C50628D682189A89050A382FBD5B05751E7EE
B81BB72BB8F5EDFA8E0537D041487AC2D7C5BD788189B5E3692119A33B2E28B1
5E7A2A24979E0C097535B8790D1B1BF50B332421BD0DEE83BBBEBDC1DD741092
0B0C49DB1B9258CFF490DC89558E3A1E68954B9A56B910C78061950BB00BD856
B9CF5BDFFBEC4BB7CA510B03AD7229D32A17620530AC72013E00DB2A2788BE64
AB1C7520D02A97D6AD72D7DFE3D77C72FE1BFCB6494EB07CC926396A20A0492E
639AE4426EDE1B26B9803BF7B6494E107DA926395C7172871CDC98374C72D7DD
95374C72F62D79DB212740BE64871C95EFE890CBF91C726177DC2D875CD01DF7
40879C9D16EEC221276FB44B875CDEE7900BBBD16E39E4826EB40F73C8D979E3
EE1C72E246BBB4C7157CF6B86B6FB45BDEB8A01BEDC3BC71767AB93B6F9CBCD1
2EBD71459F372EEC46BBE58D0BBAD13ECC1B6767A1BBF3C6C91BEDD21B57F279
E3C26EB45BDEB8A01BEDC3BC7176D6BA3B6F9CBCD12EBD7165CB1B177EA33DF2
3AF446FB30879C2FA1DD99434EDE68EF6837DAAF46BBD1EE86DF681FE690F3A5
B53B72C829AB3A99E47C0EB9EB0CEBB6432EC0B33ED424E74B6B776692A31257
99E4A23E935C98A9DD32C90599DA8799E47C69EDCE4C72D2DD2E4D72319F492E
CCDD6E99E482DCEDC34C72BEB476672639E96E973EB984CF2717E66EB7AC7241
EEF66156395F5ABB33AB9C74B74BAB5CD267950B73B75B56B92077FB30AB9C2F
ADDD99554EBADBA5552EE5B3CA85B9DB2DAB5C90BB7D9855CE97DCEECC2A27DD
EDD22A97B6AC7221EE76C32717E06E1F6692F3A5B53B33C949777B5173B71746
73B7E7C3DDEDC34C72BEB43666935C3A1A89AC37ABBB4ED5DD9F14CF4C4BB0FF
DC59777A923FC90C0214736A7DF69D3F940E9E41069BFCD52EDF4CC066876F26
1BBC7F54ED366A1D8863EF1D30BD01B7DB78E8F2674EB5BE48C3267FB6941B8B
B73EF982FFF93B1B9084BF7DAFBAF0A02906988E7F46CF91DA82072F6D4365BA
A3FE96B5DF6ADF6F3CECB7FEEF41FC144AD0AB8963FE64B65EABCDA07BAD57F7
E2C7BC81D66BD4BAA0A50F5ABA5C0B2F215CFE98B14D52C4ED6D1BB6287EB684
2EF82487FE80216D1DA4A996809076C5A55D49691D90D6E19299B43E4A83A7FF
31A120ED0AA4F5505A8C8B89413B414A8B41CFC0272DA6A4C5C01D654A5B0169
AB206D4D49EB70691D29AD0BD2BA5C32937685D2E001774C2848EB80B43E4A4B
703109F1042D9496408B954F5D42A9D31E8EA5048AB6C3A9D5761032BB5C6657
CAEC4D8873D9E1323B28131ED6C74483CC2EC8BC4299492E2C892D0BA9949C57
3EA549A534890FDC32952EA2D2A758522C190F0CEA71B13D29B63F21CE6E978B
EDA2D86EE0ACE06B5D977F223C31C44A87972D36A5C4A6A8DB6188BDFEF95D6F
366D8436EA8C48B169EC7AF8C4A69558B6D39C5FEC1C8A7D84621F1B62DF6C22
65B8B60C3D4C8CC466E443C32CB1192536434D1543EC348AB59B28E3985A59AE
2D8B0D1829368BCD159FD8AC12CB76AAF8C55650EC248A9D32C4BED904CB716D
394798BAA4D81C3AD47C62734A6C8EBA3686D8228AB5BB34E3986079AE2D2F9F
918662F3D8BDF189CD2BB179F5E0334D6C0EC5E6516C618C13ACC0B5151CDEAE
51620BE880F3892D28B1056A0B1962D328D66E038D638215B9B622B690A4D822
99ED6CB1452596ED94F08BBDFEC16C6F36C14A5C5B091FEA26C596D06FE7135B
52624BD47732C44650ACDD671AC7042B736D657A4A1C892DCBA7C15962CB4A6C
191F10678AEDE283837AB8BEEC0FC637C12A5C5BC5E10D2725B6825E3F9FD88A
122B1B5B865817C5DA8DAC379F60740DF00E58CDE5C6D0B6E63F70A5D9D395B7
955D5EF0895CACB7B9ECB1704FF9029D076D741E5CA2F3802B6797E81734DB7E
3101D7E7448B2F9C6F36DBA2744D9C93F81CDA1095F884DC8AEAFACB949E4F4D
FDF6704038458433443837103A1CA12311BA8070E33918A32BE58410F2D86553
0849F34C10428592F69189600F0704F435925750F4FB244297237425420F106E
3C3361094C4649D7679474A5F9D1D58D922E25F17D53BC3DF63AA3A410DFE3E2
7B527C1FC407CD54BAF83B324EA2C411FE4A4CC12FB53AD695F74F5CFD768BBC
F0D8F0175A1D1B301CEAD81758C7BEC4A9BB67FCB1D78DA72E4D80AE0C94A882
B0B92872F28EA93E23B752BAFA18CDF96D53BD3D3CFC2F706FFC6149D77E0FD5
CB42698BD497F119844A7DD63C0BA43E41937EC3546F0F07F51BA87E13D56F19
EA6FFCE949977D1FD567A8785A27F515B3BFE9CADB11AE7EF742166215B3BF19
303CFC4F816FFC714A9F5057A83E4BD5D48A50EF708FA9263D6F9E02929EE2F3
FCB9A9DB1E0BBA9FA3EE65D4BD62E8BEF127AB3D5F7354583DA3A847CDE6AA2B
6F0CB8FA7D0459A445CDE66AC0F0F0BF43BEF57CCD53A5B548EA63F4A44729A2
689E02529FC1A92E1A984ABD3D1CD42FA07AFB21906F385F0BF4713F4FEA1366
7FD7952D7A57EFE8CB322E61F677038687FF29F4ADE76B913EECE7483D197295
FAB27916487D8E1A2733A67A7B38A89F41F5B3A87E6E3CF3B5449FF3D3A43E65
B6985DD92C77F5DEBA2CF4526697396078F85F63DF7AD696E983BE42EAD3C6F3
32A1CBA99F02925EA0BE4A49976E8D05DD25D45D46DD95F1CCD70A156E45D26D
75B95DD9B676F52EB72C02AD2E77C0F0F03F05BFE57CA5322E47D2B38EF0F02A
E9312DF8A49BD6F4E2599E4AB73116446750741645E7C6334D69398F8F08757D
8F0875A559CBD5BD5DB23AB41E111A30FCBA4784BEE134A595BCB05063AF2466
AA4F9AF127F5B49217AE62A5DE1E0EEAA3A83E86EA13E399A67C112F1CD9D839
E97B86F494790A84746ACDF43C43B73D1674F7F0319C7D7C0C67643CD3542EE2
B9E31B17F11D6FA445FC9517BA88BF42F51D54DFF5C6F2B12A17F1AEA716F197
DE488BF8B617BA886FA3FA4B54EF7A6399AF72117FE1A945FCB937D222FECC0B
5DC49FA1FA73547FE18D65BECA45FCA9A716F127DE488BF8632F74117F8CEA4F
50FDA977EBF91AE7CD03B87C18F03BBF885BCBF9230F97F387DECD97F3075EE8
72FE00090E91E00809F85F058C3673B9CD1E08FA0C5A12C885FDBEA716F67BDE
480BFB975EE8C2FE2572EC21C7BEC131D21C8EF3861F5C4C0C5D72C825FE0B4F
2DF177BD9196F83B5EE8127F07397691E385C131D26C8EF35E205C560C5D72C8
C5FEB6A716FB5BDE488BFD4D2F74B1BF891C5BC8B16D708C34AFE3BC33081717
43971C72D9BFE1A965FFBA37D2B27FCD0B5DF6AF21C73A726C181C6398E1B200
58F55401B0E28D54002C7BA105C03272AC20C7EAB8E7B92C059E7BAA1478E6DD
BC1458F2AE2F059690E019123C1FF70C9745C1534F15058BDE4845C1132FB428
78821C8BC8F174BC339CCA83054F9507F3DECDCB83C7DEF5E5C163943F8FF217
C63DB165A1F0C85385C29C3752A130EB85160AB3C831871C8FC63DB165C930E3
A99261DA1BA96498F2424B8629E498468E99714F6C513C4C7AAA78A88C503C94
C38B87321254906072DC135B961125AD8C288E564614C2CB8802721491A334EE
8F6E5950E4B58222375A41910D2F28B2C891438EFCB867B82C2D325A69911EAD
B44885971629E448234766DC335C161949ADC8488C5664C4C28B8C1872249023
39EE192E8B8C28151991118A8C7E3FB4C8802140104182E8B867B82C327A7D55
6474FB2315199D7E6891D1410E3832FF5FCAF5C73CC3659171D5574586DB1FA9
C8B8EC87161997C8E122C7557FCC335C1619EDBE2A322EFA231519E7FDD022E3
1C392E90A3DDBFF50CD7DB65B2B438EBABD2E2B43F526971D20F2D2D4E50FD29
AA3FEBEB1EE85B37CD644171DC5705C5517FA482E2B01F5A501CA2FA23547F6C
A8BF75D34C9611077D5546ECF76F5E46ECF5AF2F23F650F73EEA3E3074DFAE5D
F6FF187C35EBA2060018434BED5D5D681457149ECDC6B26CB7EC0AA1A425D281
2A55482489DAC662316A040BA61D35A53E0871B33B935D9C9DD9CE4E62426D55
3686849822AD0F3E58F0210F42A5A8A165E3437163A1B1B4E00FB40F9536863C
4CDC40F310CAB67B6B7AEE9D33339B204E56E6A5B40B77EEDC9F73EE37E7DCB3
7C27999B94270F5789933C5C2115250F97896BF27019D15F41F45797A17FC61F
975929C3187152864B64F529C345F2F494E12282BE84A0C796817EE630B51385
0BC44914CE938A128573C435513887E8CF23FA0BDE84A99D1E9C254E7A30442A
4A0F06886B7A3080E88710FD596FC2D44C0A4E1127293841569F14F411D7A4A0
0F719F40DCA7BC09533B15D089930AA44945A9804C5C530119D1A711BDEE4598
96250009E22400715251027094B8260047117D1CD127BC89579BF61F210EED3F
4C2AA2FD1DC495F67720FAC388FE8837F16A937D8138647F3FA988ECEF23AE64
7F1FA2DF8FE8056FE2D5A6F86D04297E2B593DC5DFE14EF17720EE56C4DDE64D
BCDAC4BEA58CD86FAD8CD837BA13FB4644BF15D1B77813AF369DAF2FA3F31B2B
A3F3EBDDE9FC7A44BF11D1D77B13AF3689E7CB487C5D6524BED69DC4D722FA3A
44CF7B13AF3689AF2923F191CA487CC89DC487107D04D1D77813AF36890F9491
F8EACA483CE74EE239445F8DE803DE44AD4DE249C921F1C5D2EA49FC62E9E924
9E8EB37F7E5AC2D7FB4B9EC4AB4DE2174A0E899F2F5544E28D922B893710FD3C
A25F283D53BC066099F788EF2E3BE4CD0EAB8298DD64A38B7633449B0B763342
9BF3B499E3E0035E04838056B0132C868765E9C839983EE17B756FB7B5CAC4F0
173FFE6EAD31F1F8C18D0BD60A13BD1DCD114BFFC4C2C37BB7B041CFD5037901
C67E832DB6D63E8E1BC215E81CFBA82D4C8FE41FFA4722BEEFE981E5E2F6C970
F64598680ED20785F1B975BBEC0979C39F9DDE699D8188F8A6B2C59DE1C18F2D
913AFACEFBD4043DEE0B06DA7477B89D1C18690F1D108C8E6AFBCC2F4558075D
3FDD5A5ACA7E0BB849F6E64E50B67D2A9C7D0D24E79E67EAA0B7150C54F88DC9
8498FD41EA922955F815AD599C0B408D0D5286C292617FFE0A7C48364D1E3C00
BE158C293FC3629D53A68671E449B61808674F96E118CE331CB3A3741313A698
F14392FDCBB472F8B349EAD2F6F933F7C2036BA8649042F2D1BB3516B8FC7415
EC7EB6CBB2D3FE1B0081DB34999FF18FF886EFDE374E4F2F418779854819F215
0699BC90EBBFD66A1E9D36B63DA64F0E260C311F9E7E588419A7FFBC09D7F0C0
CBD68A42EE435BC26F4A147EC8511B09F000667FE16FD4143873333C202DB31F
3C7F4D387BF009CFCFFC402CC3E61F55E567AAA8794976C64F0F79B347BA939F
F68FAC1DCEDF7F448FDC003E7685A81C8A14C6D1E275E6560CB16D140058B382
F101831A58816334FA441C0471147D7910A65EBE13FE3A927F549DFB089E9D35
86D65AD35A57CECBCE84CBE715C696296408867C08354EFFD3CB287B5540300E
128AB13AF78969E080600CFAE84E0A98BFE1A7B65CE1FDEF28723628E4B82AEA
1CE6A251F6829860BCCBC481E8B29702CC79C66ED6594DB5BDE4881B5BCCEE5C
15D5ABB2012A952D72E1C17576D3526D41F611D3D3A8E40FCED62D2E394BFE6C
76D3BD61091E2AF3C71CBDA0418E70EC54FF9860B4959835CC53FDD48BD0F769
093756C46CBF606AB97D8B5BDAF0E01AFD5A58DA308DF52CD606D6F3582F60BD
8875116BFEBA59136C73D8AEC63A807508EB08D63558D7B2FAFFCF7FE5D3C0E9
ECDA8B2DFA357768DFAE26BEB769736350D0928ACEEB0991CF24A24D7C229A49
F0AAC4EB629FCEAB1A2F2565311864430D3AEBC58684436F4BBC42E78A9AA66A
19904FA745A59E4FEA7C9A69567A64391855E2BC26EA3D9AC256620231352E66
DE0C36F16FF17BA92C2F2AD09554BACDB57595EFD1A58696B20954942ECAC7A2
8AA2EA7C97084AA3F160B33DE378820ED34EA607E707E121D56E2D9A4A8971BE
AB9FDF13D56435C3B7AB8A9E14B54C3DAF478FD1F914112F696A8A7F47D4771F
6A0B721B32418E3D40D9DD29305F6353F396ADDB5E7FA3657BB42B1617254EE3
BA56587DE375E75E87FB07D7384E2EEB7B659CE3F8EB4FF6D849E83F0BE57328
5F42F90ACA37506E43B907E51728B3500A5016A13C86F21CE80B43A91D3775D4
8F7BAF2B95E98D69FAE6B82C43A33306F6D354594AD3466746D43BC1F79D7A7F
5A641DC7BB453D154D2A51AD3B031D625F926EC3E3B14C2CC524E8B8A8D04DC9
368A640ECAA242178ACAB21A831B4913A9B694988AA5FB9994A4A6D914897A99
D66CE3D19B183855643DAAC41D13354594B73423D8F79371714F22AA75A8ED3D
B29EDCDDAF8BFFF22F867F00
:+res:sha1.cab: