Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!zaphod.mps.ohio-state.edu!caen!uflorida!kluge!serss0.fiu.edu From: acmfiu@serss0.fiu.edu (albert chin) Newsgroups: comp.binaries.apple2 Subject: UNIX coff utility (part 1/7) Message-ID: <3736@kluge.fiu.edu> Date: 6 Jun 91 06:23:15 GMT Sender: news@kluge.fiu.edu Organization: Florida International University, Miami Lines: 339 This is coff, a rewrite of the APW and Orca DumpObj utility to dump the contents of OMF files. there is no documentation. to get online help, enter 'coff -h' for a list of options. coff works much the same way DumpObj works. however, there are additional features. below is a description of each feature from the coff.c file. /* utility to dump contents of OMF files 1990-1991, The UNIX Consortium developer project albert chin-a-young ... acmfiu@fiu.edu ... 26285659t@servax.fiu.edu ------------------------------------------------------------------- calling parameters: coff [-OPTIONS] filename [segments..] [loadsegments..] OPTIONS DESCRIPTION -v [+version] display coff's version number -d [+asm] dump segment body in 65816-format disassembly -T [+tool] interpret Toolbox, GS/OS, ProDOS, ROM calls -x [+hex] dump segment body in hex (can be used with '+asm') -l [+label] print expressions using labels (default is offsets) -t [+infix] display expressions in infix form -p [+postfix] display expressions in postfix form (default) -m [+merlin] format of '+asm' to use merlin opcodes (default) -o [+orca] format of '+asm' to use orca/m opcodes -a [+shorta] 8-bit accumulator -i [+shorti] 8-bit index registers -s [+header] dump segment headers only -n [+noheader] do not print segment headers -f [+nooffset] do not print offset into file -h [+help] print this information, then quit filename name of file to dump [segments] names of segments in file to dump [loadsegments] names of load segments in file to dump */ here are a few things you might find interesting: coff +tool recognizes ToolBox calls and, to a limited extent, parameters passed to toolbox calls. coff +orca +hex prints a 65816 disassembly in Orca/M format along with the hex codes to the right of the display. this way you know if you're encountering ASCII data. coff +merlin disassemble OMF file in Merlin format. under some circumstances, coff will switch to Orca/M format for such things as floating point numbers. coff +infix outputs expressions in infix form. parentheses are minimized in the output. coff +label when coff encounters global and local labels, it saves the name so if either type of label is referenced in the segment, the name is printed, not the usual offset like 'foo + $4'. local labels are discarded after each segment. global labels are discarded at the end of the program. coff +nooffset don't display offsets into the OMF file. offsets are the numbers displayed to the left of the output. if this option is selected, all text will expand to the extra space left open by the offsets. please send me bug reports. if a ToolBox call is not disassembled correctly, please notify me. albert chin FiLeStArTfIlEsTaRt ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789() Lcoff.bin.shk BUC4AAAACA(4UKQg2WMADrgFD0itAADAAEmy GVvTlzW6D4ZuAAAAD0yCFIwW1IAAbpgFAUABAEABAAAAAAAAgDAAAEQJAAAAAAAA GVvTMdI2DAAPAMAABAAAAoDAAAw4AQAAAAAAAAAAAAgAbJQMAUgAmAgACs1ACAQB D0CDFIwWAIAAAAAAAAwAAAAAGAAAAAAAAAAIAAAABAAAAAAAAAAABAJACAAAAMAA tDAAMAP9cDAAAAwBhVmcl1GZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA8ut)HkNjkCNViNQmxgIIYy8biEQY5gADI7eZnOUSEiIDgiOI EgRsGWpyAisbnJCeiMEjArddGJSe6gYDwKNdngZoQsx4CLFZxiby3IUASEYFkiPx QERiWSmZiOem5MYQUq(bUiJtDKdzMz9bnjUGdkhogIRDihOVEIITMAULVFQAygp6 aecYmHYcNqNbUicYUNYkEydaIH(cnPUe02VDTQAIHwpJRmhTyXPeXpQrXAGLEzlc xyAQkSV7sS(bCEYA5ghTkOWX2sE(Ozws(N6S6NhNTnOdAWWXGsBSQOujjPhNaGqB 2wV9wEkdmNeSkIZTAa6R8lNmxs9LQH(EmsdCyoJz)tby1s27ykJ7fUbhEvnTQURS 3N95dyWj0nnsbS9be8eZt7nPsvhECnDD(MOaoIW(2H7Cvso3(qzPrOCY8JwMCA8Y irxwyiSCJKMSzI5ILKiAIikpOtjjIi8sKIEqsa6IvoM1KbyDrOKMsYAM2w4oqAgy ANLrj0EIDgyg2UYQDip6AVhDiMMEgZs596woxIIRqdDDM0mOwyegKuKagwkfc1IS hoExgg()uyAiDIhJsdspnGocKxSv3gU0hAl3LDCztMOwILd7U4oaApmmLozIPhgI Y4NneU6IxAX6kfDUNzALgy9iNKqzDCI2tiUIuG0O4Ad3(STAJpJHwYQySBne0wsp 7Q4AIMian3SyAtKZsC1iVWSCJKHWgFtVNOeRor8OG6gUoWoDagYINvGyI09Fk2wg RBnykXqqCLFdtJxOleKCDsEsxgBUXZhylK7Mku1YjtmBu8pT8O4G9pgME8cQJKJY yBuprkgUdACoiatSsJqjScqDHGCioBGHcEewoAmYquIIJICcULGLYSrK3qhUdkwS xs04YocNwu7YSUHrEMYtFOqcIrFMKU0g5icXaHToOoKS2xHI6Eb4ZhMQslhTHGAk oymG6cQIjhJgCvzLFOMwmdIoWsJeYDGhoaDJ0A9osmnA54ISrpDwa1C1KCJ2w5JJ uooYW2q72CxRMoPkKXoHt4emLxMJT77bhtJ9WG(tiQwGihpiSmCCtLOgqNMu86Qw 2B1V6y6qNDGSgBeOay4IBqD5n0MINGcBuyFltQKXjhgV6Yjjni3DtFSwy0g8OIma xZKhGGMiTimFuu7oddpPEbj6POCYAnqy3ALvciO2FMbOE8wQg6tK3woXoAG8eehu hIImjYAKGynoqjCpZvGItgBWfDDPa)ICrKWdz1Lj375)BgrgjYPBCkUjXSK6k0ES IA6dwBkGNjtgrSg71ucQ6cCYOV3bDcNMy(ZQNf4NBWQaQHKzQscBoL9PhxQxbMAq QImutgEwsNRTgdVQky5xz9M3dnwAIiD6C(wB(CCkaE2u8cF6lF6ADC7JUuxwaPMh 0BV7gleNII4Z0QMw44Qk8WJPCDJUwZbFCKvhk)YHO3JQMFbHgmHGgpN7lskKlJSy F5MpQAI4EDRvCUzim1xIYPBekYchNzAaizb86iAQxhTMJhEvCAvwnXeepukjgNEn jdwNMYSoBNcnAR8C50ZkimkCcw4KGcpKy3FzYn2Y)cCZ9yRyi8A0KD(ZXTuXALoA y5jjA)JwUcAcLZWAJPkMQPP1YDkEXmU4Jsbtiqrn6)VwB7jclXGrMXIZkki7Utsh CEWHYEEt69uaPE7NYqhWCPxSTMYIQWe(GiOhLKFNJsRWqzBYGGBQuZcUnGN4ktYI FudK7)WJcw9IPdqOPm(g5K0fv9joEAtAN4OAothg6yQwGQ4KRTiT9eOdTYKAgj6p Z7UBsPLi2BB5ItWgDgjbGxWQkaDtoxQ4SpE69MHgpliOhCGhWl51k3DMiAAJDmDC gK9Gwt6hCp3j7)NAQaEwBG5KJdTWgpRVRGhWokC9BBGd2aMmRM7KfQDxlOJh9ovf t0n(aUofCoQ1VAZ6s8O2Ty0znAIuMwJP7kHRv7laSgkAgy7kswVCmU7kFYKFXRia kQ5A6qcQEfYkGaKdeRBPFfSQElgSpfmfchQF1IoCclA4VCZag)0Sh4BrE4ApFeyW 4CugED(5YFWRAB2K5IIsscuMrsRyyw680NqENdH1dsA2nkS4GqU1g)WLGjZUSaIk JREpLr3VygBHCWgqI2SjlWZxIpu)zIcwjVMT42xSWOzGgQoNchgZKaFTu2Qx1mnj P1GpHiYiFS0sACnDoGUCrQBudGvDiSeRGYMnI1YqQna7CskOUpFYV5Bmj6LJ37Hb 6fwSFomyqTQJZYeH66wKrWbIZgcJGQCJEF4a6LBJCTn2q3K47QmFD5JDUrLGyfM2 FoyEZUVkdgGGGTjOZjhICLKc2FBBETSQwrJcpM6Ywv4TzBy0XxQfMzdGpWCXGgiD md1ZT4pMmYO0BAwKwhWCtmjAbUMGCwm15QP7Bi8kx2gSUXXkoBc1EnqyxjzbcYdt PcjJy5MBlNhLlQ1eWFVWqdRMtZ4AucyirYz6eB0JIvHF6cXZIIi1ce5us2vLFypy 1FvsqoZmyeQnySo3RHrVb9BZ0gZYjGchLkc5AVxzNj0gjqiKyOkc8ExW7WAdgo(1 S0GVDIkpsB0mb1cMjOlpnSurq20RzWYCm6RiBUKOWucoHQP15uLnQIUiqJSYr1Ds VSyhFtUDCz)KdXed59qLIKEcKRIHxc(ByuNZhJzgTslRqWhHpvXZYapytB40fAOA 4dFC(HhwOBAAYbU98sRRAMAAAAwAAEAAjDgOAAAAAAABAAAACAAAHAAAVoFABAgB DsCAEoxWfIAAbNgLAUgAAAgADAAAAAAAAAAAAcAAgAAAAAAAAAAAAEAAAAAAAAAA AEAkAIAAAAwA07JAAAzxaMNAjBAA5B3bn5WaAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA(DAAPK(2JgQ0DwmEICeMgoykxRhjKRkUgYCERQFo JTiwVABEcyyhBRqUEEIwRSJrNfyMgczGAArYMSaY1lDGJjswHIzkNwhjYAoGOZg8 pljHhCqzFLwA1QBkUK7bMY6UvlCi5CNzpO9I1dTkJAJ3ke8QJV5mxxI3gDW03sBB oBoaObmEBBBHZRJ7MRSOpd5mZyJyIYzuygBCIzsYKLbs6ACldi8ipJdewdrmJZrR Od4QgITGBwL6nYaMaBTz5BZQoeATWqDmWwSQNVzw948GZS50qNzoPSjZJBbQMa6M OlzmZwbyNe6UrozbdMxT0bwguRTmgCozt2PPEdzmhB7wOb(8eIbZEKxPuStwlZDG AIocNWQQ9290NszfpZ4cuNeG1yL6Nbe3mLKHqqGirBmqQ7wAruHZ0oJNNG2AAAup g7QoAqGScu9qO6kMyiWM04QjqOH)RMwMF2MngSY98PbqLgG5wCROhMikSb036IqL tOuz4ZSA42w8Lbq6yczzstsLiNzsIFlaIK)pzQQEuPB7nbQtp4IaDDEEnnDjyKIn CYQqqoIloplp2EcoQgnwqnDhDJPucI8pcrM8yzOv1mRD6M2YkSS)T4IcvOX2oNSg PFFbECHKeM6DSMc52hjDI18mqdJDBki6KQ7xa16KEk(OMLu2QvMFtSgGldzwOOEh zq(N7Q4CxwPQARNDAnKJqhYyoLEcMOKpwyCr0yg4j0hP7woyyiWQUBRTFXbZYZuN 3MbSvvFwQdvCN7m8EKNynwY0TsV7Wp60AZp0YwspojaCT1qJuWpyBM6oEsXVIrId Djkxy7NDaNEz0Z29DZ8otV(E(hf0I3IzQ4skzMLGPy00beTTZp0ITqJE3J1iyj53 0QDyqOoDEUmDYvjbQjE4)C3WcXJD86y2enKmzYIQg5txGJxIYccGi(id3MNqpCW2 P9my4rhFgZOMpZ0eci(ycNleElQMnKkdj6iU(2)tloRDg9egm1bO2V4WfE1hojnr 8yhOLyuLtZxm)dzsXDJ)jV9PmN7bDvRLBeiY)qkES0pcIiEuqTW18D6PBpk9V(Yt 8y4QjSHLnEYSyLdJ8HTthCfMxOp9WnD1KzJ4SnpNKRiaPe9PmZPrxr0crjn0FQi6 DyZli6aD3wq3IgeOQozAjfIFmQj9r063nPSSlhGXthxGRRec2EzEE0TSmWG22LkV 7DW(M08GNznmZoy(DD8y5jkLt5p(XlW6sqvzyZcuYqTzs)5s1t8ZGU9DroKtSsXo wLsssaKptJG5RBBmxMqns0cqLnVDyv1zgqLxm5AgYpr8AosxxCGK)HYbaGQAxSD1 tnKqy4fTWth0yMrMnxG1JLkwEAzzZtppAi0joJkCAjMFhTJza(GZSvnkWPKIn0U4 CgLIVbl1t87tvm4CawgoHOnMnyfzYCHDK6wgkOgEnYMdUParSiv9gaQpIZAQ6qUi xQHZF07uy5jP4xqCHU0UipuSDmD6jISj4m8hTuSx)OqCackoPQ10A9Sb0jvVtDSx psYjLIY10KwGVauk5zQIHW9mpQv7RljZDZ7agZZSoZK1OqYvVnMoookZEEpoJpzD Zs1U5MnFFS2pJQCSeYlnUFyd6YcOTmxmAhukBb(k3wWUkoJpEO51tm0bqBEjK6L5 aaAJ4gMBBFQjVUGE5OgmngUpDwVI0YgiwVkPqxngcrB0XFsp9AdpgkONFJOkFsTq arTBAmUWhknZyH4U5eeDgu1z3o5U)FAkVyj11x2ecSzho7Jzf)oQSQIYzHeqQ7WO oVoj5cad4BInNRkWz43pBidSPumUkpZiaihKm1YFp9Gl5FiH4LRtUKXIAsGalmfN tN20ktzp4BUYQKlBkRyg51QImQESMGhkjQGWPkVHSrxeAnChElQxTkM2EoJthSiK 1g1qkOhwoUFwJECZCjjTQioSQlChJpQQVIEEVrNw16Grw9UCsExq7SgEvFiORhDM DL3e5Q4I1jQJ(pQaoOvsolCSdDwMQu6nG2ZhOpuvjsapwqxc(jlox7nxzGh6bctd TyFzcQoUYj4I1sMoPEShToNvLMWCkGjAUf6Bmxws6krcmnVqLV)jEEqJbgqZMgW5 js5BXDGoQGBA2l1xyFUEdgtgha5FdEZjxbTFKX0VZZgvDT5VSZlGKOgSlyLYw1wY ACNyqA1kTUmuzkQAYoVG(qiobqyqqGADkjtXuh3Rb2OmfDiGXW)ZSfXWo0Wq8Lxs 1YnYvmQr67BjiIRI(8FVgyRdJBqiARDNJIvjIbpJFbAQLdRtBGxbwQksciRy1SIC nFZVaaC0W7(QuLRKCvmysLLqAXeOklvdUrNgi88Gv5DdWnZkxgKYJewBdU)uWFXT 7wi0wVO5bPoaGJV7ozKHaNj7jCdsvUkVBGr3oAnJsUJWP0syMz0oWrmjzOVmSwgW 4QbZ0P6O7ArxOz61cRsNO7RZtAi94liBgWbFsQP1RUaK)2VButRncPFaXFSgdeYU b04owULJ4EAiKGnYrwfbWI2k4Zs275O5Ot58wBV2TIVZMsm8ZhESgpzVUZEmrcpc xtwHW01hsKursu)9PL4DSults71w74ylg5QiDBEcSrkHp1zMRhikurVSugr2ajd6 UO5MTyYQqNRTZRk0xsKPMynsCgWP9bNjxzZ3IfCg5OUbucLll7Wp8)7dnRb9QWpM NLq6uGuUyoADL(UoA2tpJBGGQ(GDXV5iiUWhp1WpONNb2SOgEcTsRHa9OFU0GoBj q6MMrDgb2HZat7ZhOwk9onwMmRAZ)eENt(T5keRYQI0yHUDurnmalQkEpqUV1USb c7dpyZ)06PjtiBAfVnPQrUAK6PJkV7)WvsD7E9u1NvmISraOSg7vdFe9y0THB6NH gdAgu4D0uaMyo7JLcNZLMQbNwkXUScUFLHW9YhNcArUIKr4SWFuBKx4NuWY8rkxw UtbN6m42ASe3vYbm(2y7QgTN96ZE6zF3WzLudKO90LogOYQ9qIj8HmDpBWhJTSEK RXpaf0pByeYNlCfcIdsUJfaj34xspDgcH40j797lLwsg1nRRpQJZR9IAUC4xKK1Z feZ5uu2((d88MQTiLjHZUDNiXT0yyFHq8MTS1NRfFzHms)T9hWdWfvCD4lCrStCw Mfg(xaurG8XKX9XF1YHNRd3ZaMu2CND7fQdphQzInEaMtMyIuM7ejYi2pMg0aUgt acQUVE51YFdvnJeQaATdsID7mBVYUEQPnNBvoR(YAZmN5ZkjSQT84ZOJMdmtsEYR XQc3bBxclZLBlJXwlYYWqd3fUYIh2c6RrM2VSdyrac5XeNgUadPBeMJdScnz4UeM qUk5bQbQwcAPxg4RpET3GYFWuNRYrFoPocFoUVGHwc2ofYymQcUzUAIZEapMsZ9y sRvB5RMBtZ10tJI)hUeFuYa3GUxsIdUUZg4VBSlCjcAyvdnqGBtZEKyrQdxtIRyT URms0dBq8YdzUg9dEEN4lgIMYB7ZgRMfvchWdUAmZIBR7Nlq4dAXdZSxCE4rfMq3 SMT0aMNIGFrcaQKpccFI)cWWnE3)7FO99YzNIFiylFkxcEyrPJmkdEBeqR0sfVf( Gd0mMSRY5hdUUJD0DQjSCZR5jZlyjZI)Lah)LWE)gJKefZg9LJKy)heuAcdWNaHU ictCtJTrGBKIQZSUKBiaMOWO1Ma6QVDJagfechw1tUeLwZrBGgY(xFwbDQSpxdTE xRTTxZZWlQIUZQblRFmwwgg2dUMQGcnIBeHJGgDRgI3IdM0mwgAsek4KnYndFOUx mU4sdEAzCAdZVEb51VxAhYbRXQcOFVFnUQkIEebiQKZRcNBAQKM0QiuaReQDjFWK qlAF2knF0I4d1dTUSKKWSOcHUME5AdGgUAwd)FRlSQDbHE2KXEp2lgYeeEIRbInL 1Fh9JBZeAGOJqBLI5VFA8cAxuQxxHc4pscWqCQQBzF11HKlNQgkUTSAytFq)EK73 EGkX(IcBTGYqwECuJlJP2lqPkZwtTiUh8E2sbFjWzkYQkEUnUmJf9gl5wVVvUKOl 1NBXwh89Vi0IakhExlyVVGqcVCscSepzQlwKFlkLdIAlmMYkkVsOXMCNWENm)Jwk YOPFZA9AaenMuksNUmzqbZ3MGYCpdUPoCE46BVVhcBBbPWyGBGX1OdSI(BlbdMXz xEtYvIpGZKmNKVF8(F1J(No7zYVTQdxQ8UD)Qig)QmSrQCEeQOWwRmczCEejTAZK kFGUJmM4eVUmaUQ9SdZcyZt3eJxdHZE88cNXrQcJhVJPwJy(pMjjeIrvqMz5gSN3 gGPxyduaTGBfaAZZQmx3bofHnYKwDRY0JqMQ(MxJyBfdZVPtHYjAcM6ZBVl5SJ62 6VIHKRjWdE0KZMohdQg9zgqHgq7PkmacUqFTlIHWpcsOidhliMNyoFPQJNqa5k7x HVOGdcyOtB1ceFhlbIY21MS(jm3AeYIojCaDVMJxsQIqLdc(5F2WaOAGjO6qkQ0A gJz(pe0AhQmGikEY2oqdjEVPdGeXfoHfDQ0keiR4ISm9(YCGmQ8KHVTybWxN6ciS whWg9ZlBYqXNjalKbIjqQZRYUe7FclEtwgEaGadvWEEwZQPPgkWaqYo23U1DZMuv uF4KwQF)rWDi2hAyhqutNSTbrGaEHEWuXA5bFhzhJN8JaMdH(Z11PlqTuFaqnNIx AWw2ghI6YlGTocQpdANSWSct8JFz1JnkGMBGCNvGkpIB9MN9vS2R1J1kKZo7xINU vOLn6FxbGKrNjA7YueapPJmemQP94RqRgUKivGikxJdRuZQwddeOvt2AAE9smEIT 8MzwkCrZTKheaAQaJFTviAXNnJRKMWnNaMY8IV8sbpCL3hyWDilsTcUdeV8)eF)l 0iuAUMYZKO6FkUsPnKkTzqeWbkZItakIJdmHdOTlZM0JwtIKTam(JVjMiAnNoahH 5YMgUGKT0Wv(lhi6Ws9UDlm8CYJt7Iy)OVqKaIIWVod7To07XsiC2qFVqIbX7ROR RRb(mCObsMICqKcD0uqe3qrrrWA)Rh1)eYun0EJw2m)C3mRqHGz6lWvt7JiBzWJA ZNIw4M8s7d7AqJvgSFwxSoTNjIf(vaFQWMvgbdMtUockNGO0DE36wUAhuAhRMFMU LJpmeWRJbcrYUYcb4ZMWIFrW2IgMSEjq7EXJiW176Ziurpu2xK1P3K3UoZgnzKg9 YsL5atx55VzDScVi7E7k8IjMyA5cpkDa4gaT(G1xVEOJaEYy(kS48gDkLJBRGoPR iJmFYaKKQhhYUW)ASYX7SN2v3GVO)SYV8iolLOdNrMM8YAfddkSnfxgJcAlbHUCu 9JBgXoW(vIIY0ZmG)ypCDnki(aagPtgknRjdjWAkaER2qAmI7YcIDLhMdBkbyODn 8NKAAhkjDebIUe)BFuFrhtA6Ox)QDxiUTc0ScNxuIxyPCv(2pU0Cls)0nsS1ps81 DT3ovti6MhizDLMA)M24DzTZEHzd5qi4uRWCGc)j5sLtwyRZmJcqaFo7VQ2jJtB1 VEX6HvH2DMYe9JxJtOzFZYLxGoPYU8I7QJnCIeybVMceaS(bxt5H6NZW1D(l3flF pz)I7DHNCQgoYCTwCW(HD1rlUxZKjk0KTQaWE43lLkPSqMDKaiWTmc3Gs8GOcGXN sMnHshpK8zwxs5rKbJNwLbdySupEx5FdSqtNK0TThTLaaurSa8SpB8Ymw(EKyQEL 0KIvSq3vSiEe1cbk0ZVyA)GJbmecCShUr0UZHLvNyORFEYhMp42jjX)jyUHJ8SXN Rb7Ux0PLRItqyYVTBHKinVFF0K9GVb8FRA(LBJAEw7EEUsEBgLFBA5EEQmVBgkzN wUEtgFEBAXEGQikHgA10w9UBR7ABwDCBlClVA7UEltVEQJFB9nDBwaEBAj0Exqg0 wSlE9s00ViF1dvi0wHk0NFj0VZmVtzT1dA00A1EBtoS1QBi1AhFBBtQBhFRBl)VV lsl1AkFBAA1FRkRBRSBBQw00QfFBgiVYAAVEwe111H40tIGBwfVBNkjVV93VluFB kskV1C2VdqjVwP00lgGBAe0VNCHBA)EBQTEBVjFEwTU1FUmAtpoABHR1VBm0gNFB t5DYQlUBdkp2dQWEgAC1AGkAF9WVd14XQ9U1tv1VNDj0d)k29eX1FpGBRtCBl)FB dzm2NK70w2A1Qnk2dqHBNIJBw4kFQxEB16WBBtiVdC3VdBn0w3UENLZVA9kH9sT1 dxN199eENySBN6N3d7UVQ3EAQMEEN)S1Ql01NmcExzi2xwQV1OWBB4n2tBbBwXVE lY21AIVEA)UB10cEd(23tcFBwO1VxAHBQS12dMv1wXVB19FEOgw1B0QBQ3k1hqR1 dnL3N)z09Q02AgE3QllAiYP3(Oh2NJWVudz29rr1QaFBtV60NUDB(mkVO2jE98LE wXVB9m73FBX2B8w4hyQEOzQENfn0gJVEgO02VzmVNsEAO7R41am2d3S2lHG528CB tPEWgCCBQWU1N8C5gXlAwxEBwCS3ujC1t9e4dj31dbT3Bgx1OwG2ND0FuKE19Rp0 tZZBQ3g5AwE29xcEgnlVNAa2NJqAx2g2u7gEdfHBx3g2QKl2teI3(Fj0Fr31uyyV toaVugWBV8W2VN3VtmzVeZj19Lk1tE32N1eBNQXBAK0FwVE5d6n39zHBND)5NX84 NtqEdYGBxoABjiUBNJuVeam3teXVhzAEwyEEgPlE(Xm4dBOE9Uq5xCB49tp2AWE1 O3h4eYNVOk94uByFNUc6d601djz2FpG6(ZA4OXy1Rxx5tt74AjC5dNe7Ack39huA No45uUcVw1Q2QyE89zf4OZN1R5XBl)X7gI0F9iZ3VrF198OEwME8gXFBd7GEPvB6 9LL4BYIFVpm8dED6e1Y5(6R1(CRVdvv6h5H6QFEBf)C4t)E1vsw6PfA1VsU2Ooz8 9yq7OQE2ANF7tuGu9P05eQF1(AK4tVq2NuqVOUh6dc32VhV1Bsg8gR0FNh02OO04 (wQ4(WwV(Tj4(tT9ug979Vy2wSg01vFEN527teK7lzVV1AYVVS02wHEASOEKQjnB a8fRy3gNCBJ(zD7EwS1IC0AkiLjQMtBBhS7ac4JRCRELh0jfMshW6nuXEtayXg4W x6kkzzLWiP)HhVyHXXFkQhGIihAHrUIT0MinyPpMxLbYWmLQTh4GacILMwsLkXFq 0cLyIp0QxP)qIqpUKW8ShluulfymUjVkpKnQmQMaHBikFOrk8x9czVWkTC0wQG2c kOiLSZRG2AXG)1OR37G0hBgBZSkBQPGMzjJgc6opAVWMDnEmdGipaDyNDlJvZA6R GX2MjlE0bywpGDCPTEHvD8kMagmOzEsld2khOlWOTgngY4E8CLXOTGKuIcwZEQ2n 4TjEBJOMZnANTUEFQTuJDHBjBTAYDwkshbSETGJ5awg5AJiOjnEsRHipgDSoLFEv cw4pvTBrjQJtDXasYzmOzDHgDNi5mnGEozEOLyoh22gBAjRgDT24pn2sDgjgD9mM eLHOZnOnhRo5aH2NM3EqYzgVTHgM4lBkUfyMykGjTlnkL4oZf04Hjn3DYzaFGiCj RAApec0I4BikdYDkdg2ek)ml94O8aqAg70mwN5yfZAL2R0AvjGqmQ)6ELlAPBSg( hx0lFDmOY9GTij2erU9FPHpvcUJD)CyGTKhO9uyCjKp4wNcDhCrSoy5IjQoAriky g(7JMOEqAY8s0kYgjJHGMUrDDP4goZ(sxgSqswHBMCxKE(AICBXKGe6bMCEj(ADj omkO7qmMQS4CJDK5YhhpukGuEwHFF2TgjLobSdzRn4MwwjtkjEUEjRXk0yeMz444 LA0z5TwDvrKMQLqvEAhgIDup8n86IDo7aEzL1komAjlvM6rzCikreSiCKIIqwJIE QsgIChgrWkiCLISpk6eoBqjbDInQaTjzsOOgKpoMfe6rJIMSKayuIIGkNYCJkgoQ 0CCmM6f0JSNIYaqInYsQUAFpggCBJKSpgpaIgJtACA5qmeiiFIMKsoGEsPzQQTKJ DzgQFBD0UEUESIc8Lv5DSzrIOOILSDCMBEbjvh2seaaxhoqiKjBvwgKruLgSiBI1 CbLvaX(CuhtNxxwPxKBxkOOZ4C0MWCC1OQPySHKNwgAC8apO4y6AxtILrpmR9EDv cbQreAc0yw1qGfTCJFGco62GmQYAsIDrWCJi0IKH7wV1lw4oCgwmkhBBGGGisaJH gooYCygwGSYDNNsIoy8Nf0grUL(aubqJkyMsKjwnQoEKoQBX68oIbP8cIAety50Y jUW18TCzMva1Ap97B66EspcPXzayj(CwAhOh9NSMjU54Bz4oNuSNsMRw7GArsQiL 2x4IwOsor)9N)e6uoLbpa3RNIwefyyCwtC7orT5isBxSEqBULI43QwyausjiwzTO 0uK(M4hhmqzYWBL5YdT9k09jDyw0hEFWCinpLSUCRJKYw55JJJFFUBannvKqd3ie KHbdQ40Y3jIwOtz6AzGWXsTMzb0jrRMcKXbyhFvzXqZkiXEC28xM2waeZkE2Cjhg xVHOyzmKcIdqUKAhP3K95UyaOjbwo6bV7kUhDEUDTLg(QEsEZlHrhx4SGivKwFm9 8rSLwgh2((CG9VIFAoGEErM3wRTmb2SqdD9cwSiIsWBDC59QKjLWQ0CEgECPIFlJ UaZiYaQlGiCkfuRKGIhKJjukR0XPeHU1JqBYhFcuQQkIz79S1eowvUDEJIOpSgNJ Rzjk6qZKtcBXWcqwERExQA3aU5SuVy8BtEUodFIakSGuhS9gMdlNyHPywopBQuWv jT7MGQqtBJLNfCiUeglYCSIEpG0ioeXPGqhz9hhY0IbSDHppTofcNPepvBSobMAe KTklRmEL5QjI0f6A(VRx3dSCJqoaZ5luBHvFtVZqZUK0WApGhxshJvjDRKxw1eBI 0QKHDqCo1aLU9gDImezJ0C4aeUs3hQuMzxSLizcGz2MtLNXHlpln1Z)XQE(ubfi5 bqMvtgipAI4ZdC49IBGAViRnTq71JBNYTET3SaCeYTjpNPyKENwgZcGYm3WwBlrZ UR152IaW2hAdYF(xCLebpMbqGiXIBJQQHeiBLmEMk87BU0RDAyrIkEIUJmzvUY5D tX0AJ)C0OEUwTrsPS3t2CuUDo5lAfqp8KcMRMKG4kwndkHqmmvyME5k4COxagDgx gs9HLn1q1aletWpprXHaa)tWgDgVOBAAYbU98428AMAAAAABAEAAjDgOAAAAAAQt AAAAFAAAvAAAcsFFCAwAK4AAFQwWaQAAbpgFAUABAAABDAAAAAAAAAAAAQAAgAAA AAAAAAAAAEAAAAAAAAAAAEAkAIAAAAwAUmMAB0w7nqDACAAAAMAABCgAKPwojBAA AAQVm92YAAgZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAjst)Io)jsJQeAA1AAAkhIgwAggDGBCKAS4wCgFAYFAEyUwPDHNQw5kpT8i5c GNUCBGsnAYQBQHDQWeJwCpVlAkyaCAQIkHABAAgCONIg59YPHkj6FOkAenXPwjLh BuoJMiADGPWeX5JjV3SPhmA6B9EXW7YBUCKBBQMACdyAmAcHrhZjern6Anw6eqb2 iI9ITsdJzSECiEqTEOH8hMRyMhZQuGcqMg4ZU0aPJkI4kidgGGSfAyQD)EQwIRaQ lJZChBgC(DVr3xMvFAYKCcSTRFH2zUlK27n8AcApAgIhwbwJqBrBvhQlIaAGJcGw ygAgIawGVE4AIgDG5KJJhbigrnQVBDQKKA)UhVngxLFIePFXrXveDqt(q(5Qdo55 hLNOgBL3FkyigGkSMAAkUCQG4CQJkAQJgCPRC8fuBZI1YYicPQBQpsOlCeEnVmKu ABgCBQhQgRgMJ4wwE4EGYoiGDQBowGgCSIEgHEGWAJNDNAIAPus773Rge44GRiKn IQBoJQMc0HgkCdUQEy4UCAMYwx0DSFRQAQAoMmYIdckEyz2lniSyBBBNMnRBdvsc SwjuD)xxJIBds8IK0o0sSRdsG6JSHPw2kKkACo0UyQbzF0STCERxJACAy0JAgkyS A8XhASCOoEQP00s0UCGJFkTSMPftEX9KkMFVAj50nHzUQPJJVn0OeezcRWsTBVlg KXZdF8QU0ENI0zGQnKUUS98qMjL90sM11BMLfpDzPVT51U3XFYF8gUwJg7ZGILUS Npmm4E9Y01xnnO0VNZX)MxPAAB441W4qCB0VPZLSAOBHzp9FVyS83UWTZDc1tcvV Z9FtTw2tG8QVaVjDd3PdlZtk4gWRjkmXifmpweUT5BGuN090JVG3chN8dN2gAi0d BXTUhEFZeipRVdTkHWe4Za1DpQlZgfpIWF0kqE20g0wrB022EeMg1NMZ(ZW4a7xU VsJQJ6AHCt2jFQ58jBUMGEAjrBcGE0FsFplWZFlJxZZApFOlVsHlw1uc5af3D)66 vtjHsocfAIttaMJ0x6EleSRpuoQCpDIHAEjCxoXPNcTv1Q)AAY2OWxsXFt6ACFKI tPcCBkdwEhS0BtEbNmQqILwSrKFnB)fBAVlSB3VEOHmc0sRW0ejYdNkdJexXWn8u (y2Wv3UiKR)bQAacosxIbIAJx2dFQR3x)INAhp0FK7UwdQaFnv9p77N5PE8VrwHQ fTznzKqznWaFSoGZoFhVnBKE0XwHQAwVjD9AIsAAnAA4FAMUMAMiAixI3zdKFWrq 6QxDD8lInc2uPpKCDxugQ1jAPAEMBCnJfwTFwwRl8D1OOIIiJEOLAgxUDHdCUOAC ZgQYDIEuo5cEaoLlgeQCS6AOBBYYIEOrqSa7Qq1Hk(DUGAyBiQE2UAh3htN80ugE M4ERQtIEBKKr4QKQAiIesj0ixJR4zAUMHGrbADMoluZCu6iQb0Ys1cApHjlBP7LN jfkSEAg1AMYcVFPFTJ8iAoRGsMEAGaEg0DImAGLTARiUAIiQMUoRCFYcaAIVGB6F xLVBIDQAoCwDoQIUMKDejBUAYgJAgBgRlBQENEAoHBoiJwBCBbfyLAZc8cooLjtB iqgGCsVGQ8agJFwFFMuQQD5AQJAKMaAiFCgY9BEe7AEAAYwUAFgHOJChD8QCWSS9 HBImAAzAUJTylmJ4ZAEWAmvLjIlO4RdAwNwZxZIgf(AFSPRYAX0JBbxg2iwoSQCj PnC4jAVCUbvAYg9pmNoinMoplh2gpKaANx7gUBJNHUi0AAcH0inegDohpyDw1DQ0 DAAAAjwYJuKRJF7NTQ3rQQMEKEm)QK8YV)RB9BTKogMAEQlcAg3spjJAExAzbAxs I0FKCcjSgy2UQmBFXWCJSgYWE4OlqBN1RLVC2DVAlSJZpAMBKn7Uy4rVsOrlnSVZ c5rWeooGojvMpEIXQoHTjQx0IUEKMlKkiaxo9n0AvWDQsZdSbOrbmg)AJKMKWGnh lp6UgFEKBG7SgypMg(BEoagxqFQkDYLbn08C0TY2C8XVtBKVn1VBCszPgRoazlHt lQEKLGlSnSvYTUEcwzZPK(dUhSKlKlaRAoRWvaxlt0EEohAx9OtaDWp9ojPb4HPd 47gKoBmT2Nigdj6IQJ3FV8hDpW3r0wERhJYgjX12oOTeSDvXfIxA59WlxSVDpZZM 47air7H6Sq4C)eTrGT1usnwRhy(3BU21CWhfgh6MjrJ(2HxoWU9LdZMJBAqEAq2Q ymyfuvCYaQgENEnF(GWqM2gtQzjH9rI80vzKX6m2wDNUYtGjUUhCpsngLQEKGcJq AQyj