linux 0.0.1 - Go语言中文社区

linux 0.0.1




linux-0.01

(2013-12-31 22:45:54)
标签:

linux

kernel

 
Linux内核始于0.0.1, 代码行数分布如下:

wc -l `find -type f` | sort -n | nl  (序号 文件行数文件名)

                    1 ./lib/errno.c
                    3 ./fs/file_table.c
                    4 ./lib/close.c
                    4 ./lib/dup.c
                    4 ./lib/execve.c
                    4 ./lib/setsid.c
                    4 ./lib/write.c
                    7 ./lib/_exit.c
                    8 ./include/linux/kernel.h
      10              8 ./lib/string.c
      11            10 ./include/linux/mm.h
      12            10 ./lib/wait.c
      13            11 ./kernel/panic.c
      14            13 ./include/utime.h
      15            14 ./include/asm/memory.h
      16            15 ./include/const.h
      17            15 ./include/sys/times.h
      18            16 ./include/sys/utsname.h
      19            19 ./include/stddef.h
      20            19 ./lib/open.c
      21            20 ./include/linux/head.h
      22            23 ./include/sys/wait.h
      23            24 ./include/asm/io.h
      24            28 ./include/stdarg.h
      25            29 ./lib/ctype.c
      26            33 ./kernel/printk.c
      27            34 ./include/ctype.h
      28            34 ./mm/page.s
      29            37 ./mm/Makefile
      30            38 ./include/asm/segment.h
      31            40 ./fs/ioctl.c
      32            42 ./include/time.h
      33            44 ./lib/Makefile
      34            46 ./include/sys/types.h
      35            50 ./fs/char_dev.c
      36            51 ./fs/stat.c
      37            52 ./kernel/mktime.c
      38            53 ./include/linux/config.h
      39            53 ./kernel/serial.c
      40            55 ./include/fcntl.h
      41            58 ./include/sys/stat.h
      42            59 ./fs/truncate.c
      43            60 ./include/errno.h
      44            65 ./include/signal.h
      45            66 ./include/asm/system.h
      46            68 ./tools/build.c
      47            69 ./fs/fcntl.c
      48            74 ./include/linux/tty.h
      49            80 ./include/linux/sys.h
      50            84 ./fs/file_dev.c
      51            86 ./fs/block_dev.c
      52            90 ./kernel/Makefile
      53            92 ./fs/pipe.c
      54            95 ./fs/Makefile
      55            96 ./Makefile
      56            97 ./fs/read_write.c
      57            99 ./include/linux/hdreg.h
      58          102 ./fs/super.c
      59          135 ./kernel/exit.c
      60          136 ./kernel/fork.c
      61          141 ./kernel/rs_io.s
      62          147 ./init/main.c
      63          157 ./kernel/asm.s
      64          158 ./fs/bitmap.c
      65          166 ./fs/tty_ioctl.c
      66          175 ./boot/head.s
      67          185 ./include/linux/fs.h
      68          188 ./fs/open.c
      69          199 ./kernel/traps.c
      70          216 ./kernel/sys.c
      71          219 ./kernel/system_call.s
      72          220 ./include/a.out.h
      73          222 ./include/termios.h
      74          227 ./kernel/vsprintf.c
      75          230 ./include/linux/sched.h
      76          247 ./include/unistd.h
      77          254 ./fs/buffer.c
      78          254 ./kernel/sched.c
      79          264 ./mm/memory.c
      80          288 ./fs/inode.c
      81          306 ./fs/exec.c
      82          306 ./kernel/tty_io.c
      83          329 ./boot/boot.s
      84          405 ./include/string.h
      85          409 ./kernel/keyboard.s
      86          413 ./kernel/hd.c
      87          550 ./kernel/console.c
      88          678 ./fs/namei.c

10239 总用量

共88个文件, 10239行代码. 最大的文件namei.c也只有678行代码, 但这些可以组成一个正常运行的系统, 正所谓麻雀虽小, 五脏俱全.

系统的构建由96行的Makefile决定, 可以看到系统由boot, system, 和build tool 三部分组成.

boot 部分位于boot/boot.s, 从Makefile看出它由as86编译, ld86链接. 鉴于as86编译器的使
用普遍性较差, 可以考虑将代码稍作修改使其用nasm编译.
主要的改动如下:
1. 常量定义: a=b 换为 a equ b.
2. 注释: 由 "|" 换为 ";"
3. 段名: 由.text 改为 SECTION .text, 注释掉.data, .bss等暂且不用的段.
4. jmpi指令: 换为 jmp SEG:OFFSET 格式.
5. .word换为dw, .byte换为db, .string换为.db
6. inc xxx 换为 inc word [xxx]
7. lidt xxx, lgdt xxx 换为 lidt [xxx], lgdt [xxx]
8. mov mem,reg 换为 mov [mem],reg

然后用nasm -f bin boot/boot.s编译生成bin文件即可.

boot部分行使boot loader的功能, 从软盘装载system部分到内存0x10000, 然后再拷贝到0x00000000, 初始化为保护
模式, 跳转到system部分执行.

System部分由boot/head.s和所有其他部分组成. head.s被loader移动到物理地址0, 然后初始化页表, 1:1影射前8MB内存, 设置中断向量表, 启动分页机制, 然后跳转到main().

Paging:

pgdir:  phy 0x00000000, 4K length
pg0:      phy 0x00001000, 4K length
pg1:      phy 0x00002000, 4K lenght

only 8MB mapped, 3 pages used, addr: 800000

pgdir[0]=0x00001007 (present, rw, user)
pgdir[1]=0x00002007 (present, rw, user)

pg1[1023]=0x7ff000    (Last 4K)
pg1[1022]=0x7fe000   
....
pg0[0]    =0x000000    (first 4K)

     
补丁如下 (base64->tar.xz->patch)

/Td6WFoAAATm1rRGAgAhARYAA AB0L+Wj4O//NyhdADCLiIbT19MqZQolIwjL pRiPutAOgvvozyH2
AX7DsG1AWNAtH4vm2OxNx78p 5EF6YIAkn4kSTD7MdUkE/cVhcpioVR5DJA+2hauysbkWIopkrirl
44RqKuYpryGbg3QRncmVTiz4 3RSv8jm4M6WD3Dm8jRJtC4P1 GdDw9i5qEqEABBOEVDI716N3 GpPz
Y+7jMOudbAyBSo90z8oItcQ2lX xY3kQn6lgy707AQ0EozcZbfK 8N650faPgIzIrSLv6lLFr4M0 dm
Dirf2/NjS0Wegeer0jF9lsUQhtq3Or zyfYfr/xjJ0mvK+w8PnN3Kh2U/iUFcibUD/ihVXVl8EYBZ
48rSXvdRn1tMPJXIRXW+jNPPOWUco6zXDnzaz8GJ5Gon TKqw+qyOuqVWpz5dOMlO/YXh+BBNvvqk
Gs5DPJ9WYxDYqb6flwtRDxiq YgV4QtBfvwpnRnjhOsjbcuDT HS/mJvtdWTEQ6PChijp6B1nfXiL H
NaSwoDSDFllryHWLe+6n9wbtMaJOECal8uYnFoETWB CQNfb7FUgCpmbC/liry7WYCH63g+LtP29U
dqdO+x0Bsu0zXJQXjhPPULGoMLxNC xSFRiKpmbMdmov0MMA564HBm NvBnwb73NAmTpfnVbfarMkg
fTwWQwFKIWAUl2n4FnPmLj5Q FE3RxGAzQ9pl+TScq1Dcj5LL0+yy4UgNt5ZSbP/JJ39L1b16yHC1
sfV100DqKyigbhhKln5o3B2v AHAo3MNVE+OaFNkmmniPQg13S0LLT8YO4+gmQQcRnNMM4LF/t+8C
FXVS60l5tA301cbHHeVeW1xI WJyXSKoDilIWm4zxEwlteQyT C1Vx0GY02jiyi/9ZcrLxXUHq7oQS
pBDO6PS/ck0FO8qAi8LwKylpnDg8WlHN Ti8Xqnwu0TucI5E7Xodje8Xh 9hRz6kQJD4AKkT+vJdk6
Ltu+v6QtH3Z0hHK75X6MNUEmvwOs QksFUi9tAg4LhMaZPXs/oxgT/NHCDFf167iZC6ZQBsdd/K+p
vimHL5u4LlnWE1ukdyigqAhQ l25y+4+ALMYaEdgZ/L3pQhQPAXZXYDkYcZSuT3l9i ir6hPHakYQ+
NBih+wNzqsPYAESrpRH+eKMj300uCGt1wZ1VgghcmBJa RtOT50HGGv4rOSe6XyLwTyXC 3F/Gii9n
ioo6tgOfN/lxDvaYkzjHtcRFoXFwCtlcNf vZ78dIkZnHxRsEf0oXCqivaf X1ZC6lKcMBtlroFuA+
6kyG5/ougpLNJeo4b0313ELqxn9nVx KuyBJkfGFYlSOsm9U9jq7Nuv paYevZI3vDv6wNBcro2jNu
ywgtA4S/Zu5mSJ6GXulIbs+vRMhX1upfdkFpoxcUu4Gto87 WcbXSbY6xKTqbciwbBiD3kj1 MWRsh
FFjDTdnmvEH3yOsoRUp7SOZq dyZyLYOSqI76ppYrSL78BxEB PZPguoeBDTgBZafuWcA2Ej9T WnAd
F3arDf1CkW8E7m9zXxlQekQd 6HizVqhPkqzSNP7n+7yiUycsx5VynyS7Xku/6UXGmq5jlf4OcRFk
Eaaz2aiJItSjpkPY0Szh8+eQPQ19p70VlZ8i7+7jsNKThOAlkOpVfTgbfe410L vv40KJSpXsDtX4
pKDnrKlF9w2MdLo/7XOihZ3es+lsE6GMICRLgncl5c+5NwBWS1XLswB27m8LU2SeY8r pCwh75jXA
FvITT2xnUjyM5fvK9VUqq0Bg XTF5f0lPVKYc1FC0CLcwGhaZ IbMJ5B0OCE7pD/6eFWqXWFc403Nt
PolGw3v8qvblTVyktR8kWxgx syYc5TjMElcHZwMyeTkMOnFb Fyrabl3mIKWztTLDBer5ZHFu OTzo
Qz3hMuwMOK0JraR8mZQgaW9l 2Baw3Y2Q8X5zv51ct2hUaLPs UuV9c2LTuCB4PWENeZuIxSzF ooVG
d9k+QTFau17vB4FOomB1udB/xfaZ6gbyc7gKBbiTmGZyeFlD tOop7YespdOCnYI5jfE+/tYhaKNf
mHrSRSbaCApeaMyiv7xYmlGd OE0dLSvq+nMyavFAY9frPc9Z4T37a7Zte 38AowJSJc/9esDvKd+/
dDqWBM35b9OpiJwWqVgI1251 1DNP0Pf2xmqdzxE29lB76l1S 2z4A26RK4kcodJnPa9Gu0h9I bxJY
FnRO5Fx6RIAxaFbwMydu0SdW 5d9jpKm1synVh/UtrJA1L2CZLxGKRFzqT+ZXUpEXeiyNKA0F/yZO
YubC0FBeoQOf32RbdBUy3aiO 8KWj2Om0KEjX8SAb8hXH16nU UTt+icOnPJLwZq8zLnj/zDISunVr
7k1CYhJqKE1VCID3/dyPVduYpMxkgiuHcQhkl1Rsy cN99DFCJV3YG0A4YDG1AoYGY 5LTHzz0adIo
8eKT5GsyBjv1Nz7WguDW+HjjwwS2mbURBLDJWw8uq0yu3 WFmdKzs4F6B59ZLQ0yLfurE3 2Qhr0sR
SZ2kPbvQE0bvt/CMSXmGYK3rkbGPyd3tF1TsW0 ksOlwWPBXBqD6L2stmu2K8ID NjXKohvixlQjbs
SdGH0J6FQ/1UdL/U8mcMIb3sNbNxPl6gmfTZxoD 78VO1YtDYyA90QbERDOEwKdw SJacPt9HYnhPP
70jmth4EBkz9w1AayDf3Lx4w 7emq9K6urYfby9Y75/wLzf/T1wYJ5ZebJJCRDmfYZ5eXx8c rLnHq
ybv5GdZh9WE39iXf12rDr7UZ 2O4emjthdrEkL3p9uSwHWRqq V15G9l0XbI+HxpR0ntKWpu5eIKFd
9Ozjh8zljSGTZNg6PSO23Gds CGFeUvtPoc5CrM9DGZ83gE82 n4Z8mT4OiOBfkk1++tLSI2kFgmur
62kFzSfWlpn9PnAT6JOhr3zB dgcEO05cLEbCOnbMrJdGrag8 bljJdrIzc5OOfLvS9qOwku/1aeHa
Pke2/OBWE+L0kysa+bbcXjFLYLeQFmfG9woD+zg5KrpZfGFhcrDoPCUSejOox l+KRx/Hvr0Wyjg/
V3cvaFnKHK+XsI2TaZUrsiDTKmR75O9xoEv JgJawX8aODQTmZpcvcYBORZ1 moWWRR4GdETLVzOw0
of+u1v5Kuc41QAldPySWI8uThP8 VTX6i9v0Vhv3HHPqNuV83Mqu XduNACZKWVUGfBlzUfTTXxFn K
dcRZEd3eCTYmRieUU5AxHfNk kmY2/r5GQKdIaA8uJ/yylxwcj8JYklgA2NqBqigg0B VOC0a6ByPL
Yh0iC4JMDW2HDBuoaHwJG3ux tprodVj3GzGf+XiCK1TcqbHS93HLsX6uwkx2n YOnc9DCDp7b/nsK
Tp/5Je2ktuBL8A/RQdENaEEk3oxXwymJFOBDeHL 9RqVE+S/nv9wxlPKNHzd9fC4sk6NlqTf 07+QF
S+tQPwAcXxWZeM1Mn+b9jNXdJW1gimd76XbsEFOeiW PAP49+jKEn3NjeGSbYkkjxfWp13MBN +Gna
a8D9pXufaooIXcXmWhFCRTxe 9b2c01MHeh5HxKYem9l3SGSp DIbSBphty3lcxebsFbQ3dOm9 A6W/
0BhEIj98JdN2DEb3oCZxp9O8 QSwJjtt465FjH4xKimxQNaoT mnITkY6QOAOsl61YCAoMXrBA KHTy
0pYnV7FYpCr+Ow628/kwGTMnV5AxBD2k94A6rgqW8x ohVQnp/6/xVu+ADoHFpvOINyufPlECOu5G
YofUaE6hozBwnSEPXawrGsvA Q1I98aW+rLTd79Y1ItdEHdJf8qYDflkP +LoiLPEJudRG+nWah5pj
J0PlYIipt4U/+WFM5d8sSx1RHj0vw4vsWj0R/dq1RdqISm8N772NTuOVzd4oy kFl+CI7MVot8HnL
DjiLBdsxrtwNF6+nJXSrH1Ap3b/j2c9xKvRW+4VGZp1qvve/NDxmiCum5EL2sPsoXFhWDjnu GP2T
SiXRBi6gT/aPqZlhlbYN5gL5qEBL4MMm8M 0Guf8wHhd2UtxOjB5iCl9PnC qOArKagUjqdu/gxgYN
ajbfisQN/gqsXEfsYkv849InMHgMn+5Kwu9tCQuDBm1s3IUh314lds m0fGQavAXsPEu1w2jmX/AG
W92ayw6o+FmsKcWhomYWcdBaMj/1ebRzX7tVXXTtop3g37Y6Tvm Ag17mjm1hOkQ5ZuKMQP2RHkh l
xkZsQ5W8snI0Q0f08d4QBHGk pzgeIYJr2Xn7dz2zQy7+sj6z3ZgcZvEt/6XY85aQjaVq1Hri3QoA
cwv/Wu+w8+ehabgDBrmgzqz9845zXb6eAm AAsloMnI3eW/qZfwEfhH/BUOvHI5oz+Fgt9By8s+lF
IAEp5KFeJ5CSIf7VfV97Q8BS kjYbaGXNp9id+8JLtuB9ZWlZrE1/v/OSoD9ST9cxVQnzp7fBfgLz
/A054/eFpA6MbQVjZX9iS154FgOh7e tGDJUt0G0IiOfr9QBSorSctC u/fzGZuY/SquOHoqNYUGZj
AasRp3t1ZYDnEDKSwG9lsb8k pAYdR4eCdP3xLdzjxa82HE8q YF5QMg98vzezJp+qwHXRyKDSE2vH
zg49GHYMwBBK+R2V5f45GK8b/fsIu4VBoXb/UXjHTNozYSCxtLgalAD2V7VV p2PBLx4Fq16py4b/
708dQ428YSc1uKQl6BeOqWMA tc8mXU0cS1tQSATZ6aTOKtA7 zLDGym+ajPsd0wnOLr/5Uztt17k7
WNYUyqt4R3LXYFNWYbNVExIk yBcz8naw6D4Re0n6FsoE+nRN12oe/o6XTTedzh8/npWxx00PZ1QN
h9LJlnfKRZNKSkr3MClTQwVQ IUdwRvAdv5x4xxh8Iypcatn5 Fh6CY685Gj5+wKUm+Ynztbs/7PoY
sOdF+lSavHW16MEyfjCrzWPRpHk41 LaDkST3aPK2TaTWHO6o90t0U mEyiURbM/xht83sUYFJNjYt
cwhOqKi8qegEIsS6GBKCE7x7 33GnDhH1CXCzQOuzpOf5JG1K IjsF1wmps3RwIsL+uDrxd0XXhvW7
/wQuGdlbItf3+CK4jSAqRCi3vW6O11KiOqLIk SOI0xVn0OJLcNuOtvhZMA6AL wMoPQ7Ep9CMrDUg
df8ZXyz6Ev1wDJ7P9fOpYqF+neRFejZDizxoArATk6KX+rrW9mT04I9dFqZ1qmEagKulK WTEZMwD
nvmNdP3B9TtKmdp9vQGGtXj7 WbELNP0Z8i6my6LmU2qq4fGO Iu4gFhF42TRZGBgNQPSqy0FY 3Dny
B15XLfYHw1MLlo7ycE1B1e10 4jBM0sS4voswyfkpEkzP1Nfz NL/fg8ATPNh4BSFpZbV+42LTGR4+
GWzeqA24aBEZEWMDKyk06Szi o6B4m2wwz31Aycxkz9C9sLdU HuKtNC0/dI96MArZY7umKqQO042V
mGJWobAlS0ts5i9iiF0hlRIn fCZ4fFgeltw5bGTalhDkSmsH T/xD44zhajEQbDriJgGr46Jku3 a9
uoRAAls9l04z3eiAI8NVWEbr z9sh6z03iRPkok0wPn7gULi3 nFcozUH3zz2bT37glheQi0Ad GN8Z
/zml+704+6CeWPLUO26zj7eye8alR05rn aFgLAiW8oqz2acFM2fj0P+oI1viD5Ge0BajVpr66uYd
WdBWjDCvuyNTycKs+oXxjpzrasb1nnqbIqdR1Y35V CKUBjPalWHEsKNFHQCK0d/d/aONs+yCnWKT
G0eF6/zPHQqzLOpfJ6xhvXMUhcKJi9 5HyyTjxoshnKM7quYhXX4hBN hkaHFvAVzlkuZZMHFdrtSI
YoSbZHzHUuKzlF2ksyWGqHvk nS1Sy32ZvuDxlZK2osI/MAiEZrl0yX835zSIMW9nu2J5 6qxZhNL1
NEHwAUIOLvJ37MW2gRKPgvoM Xd2y8NRSTvYThVG03bf93dJH TM/Aw5bgKENKgdcTIfnlsmiEzi+V
YY9jNnhKlxoAH1shT2UaCOpI 70BA5W09PfRekbySGGIoXP+xaJzYR3/wd31iEx2DiEsSj1N8udJN
iO+eiflm4zTRlkgVImn52/RwVAPb3iZoHFxaTikMeNl08g viAhhoVDERWPWpGOTiPXjS56 pjmy+7
E8hPIFxxRkH2HSCQwWzeJyxT uUjZGYQQO7HiRwBJMdPoQhtj XDTU27W9CfqSXJpwTBA1C3lF /+Yb
ousXayURQya2qimFAK5xI5g6 rbCPVZEIUoZCo2XjIUI1UfnX zVGWd4Gnwp1CjxUAIbsgafAA h9vv
a3iiAv8cpCnpEGHLTJuCLpbH UslRGsS+mQ3GLxJyaqyYFo63/9NS4IrVXQVl/y7SSFhdn7xzA1jW
eq339M0m2viHXiHvvumyDXGQ joViP8o7ok3q8o3zcsDaSjAu EY+N2Q61zjOCtaZpkdCzCkpgkQh y
5eEaG1/XR1MnCFc801ws9PzoJk5Vs9S QEoFW2dD1fhtiDtTAG1de9Wl v9wYGjaeimvY2kTKruRR/
ufoDxHYNu/TNHKha8iULJ0oEh8WG6aZ1fz Oz2RyPbG79ij/hydj5ZSMv2flVLqYqJzn2ndi EBIpr
L/xjgYTxBWyzuMyaZsPDuCg3cM vVtp7Ck4JjMtcap191SfgQmJ 8FfTDEy/pmPlQUWwvoWqo0HpQ5
JraH7z+rgkfH7wgoz6jgSVDqy5wTV+z0dypcd64QMgYmsT5een1UAw 29ncInyri7/dHskkBhWbSE
tqJVe0Fs8oPYesc8NI6n5sao YbrRiS77GliZAaPt/WmhMGgi8qGPvo1PapfmyZDRU HxHNIBWj2/J
kkaC4JQUH2r96k/DH/5angdrviPvNjZgbwYisvSf+apPiiXN+pJyN8DB/q3LOfcg9R8vG+9FjqWl
9jev5MjXAeXU5g2SGM6lTwps N0nSmoWNxoWsKTV3IkH3MHEA ePTGNhhs3sC0+6uNDo4qluF5LYkV
A/LuUZ3Eaq1K7X1+qODNt5Kc37CDoMwzKICJWo0X sqVlfIQl7SuotO5+DDEKxC8wILeaoPokYINV
YxoOnY7aebECPPNXFLf9+Os3/4hstvvZlBdwuuctLtolOP9Hs uymqvikTo4FlxO8xXzKR9VDo UrZ
AMclKN4Pj3sdiIubROp94PD3 KACIhTlHGOWCG122cnviyuvF G2yKyCUnMXFMU9bjNjthg9ij Plbw
EfmYRMIaeg+N/Dhsr4vAIelXIXJ+GrKF4BvXvvh0cfe+ieMa0QRSkXys1g0f166DaMqn NzxDP/iw
kQSVjA6c3f+w1qmeRccA2SOw5r7lYupNRon dWdVo4aGJFKuUan/qUARoiPIdaPL0fwVvIcY+ZE8L
WcssQhWjUMadWJ47Vm8KjVY/FxcOpAapJ2mg0Nm3NuUYVXcp TFG1O83KICRbNP9vZ7wjUkjU 2ADh
r0NgzXAF4f6oyKaB2OJgVlF1 qIln/9v/xTTEV8sjuVxBElvWgVXt7oNq nBTBpbOcw/8GQLAj2Fdy
tiFgo4u02Yd7WYF5zGLLFdAV TdkRhGYKbXqArNShpqLigeSF WBBqeMx6IMUG2hPkMsRwpu+BT0N9
cFfgwNodDzLStIRxNIOMa+VGW/6e60ZIcIo68hnL1JnIe0rVDL ST1zs+HzXggfDCRdUfTY2gAosi
uJFS8OGJNcR8+P9xDXlLJxIb5N9nIWlwqUDwP fRGMWGdZ4KCRz+3MUX5tp8LO2blSdY+JGm/JTcZ
J7FoSMstA6AIKP41FCuw/eiw9fiCT8TOXn6nh5KRgDXOO npOwoIO8rmKKJis3/q+Udc5gEUZCVx2
0FgwFBEl5Lvu/F2K/fw/KKUXVcfSQdvGqDxKX2gtTjCh ORGFf5TPtTtS3+CE7yp0VEPZkI1JFc2a
WGBkCEJhh185gvSwXqD6ejUF //x4+pR/HGy5yIiqifyg2aKGs09AKOSw mHmZN9QSU19R3Mp55pLo
NQ5sVxHoXDIJHi+f/fo289LtkbFasuF9VCcc13JBt nGX78Cy9noUneIX07iK4Onjs eb/M9hrg1Df
BQLD4oMC0XLKHMCo9L/FGqzN5jn7ekgKZvG5ASS//RVEvY2cYBbCU7v7R5ZsOVVyj WZjNkfeLCrm
iLZEJzr+zsz6gzmEe8d4U6fiwXRA68HV Qt3qEQIqcEeSOJdxOHqdxs8K O2HrgbYmsqUIPkUYaJS8
MYS4GdJlpcENXtIrQinvGNTU RGS9k2ndx7dJAYAu8ZBrv9ly b4KMprVHLzPF+CBfvTlDhqx1EGzs
noc+N5GlsMSqCVpzeZmzrADEihoM Xto6Ez3x6bsh98NP5AqhKu6m 6Ms8xs2CNmekIOX1i0PZZxoo
5kuxeZyf8fGPviSUkGDR3IDR kIqmQuPJ9f0r0HG7SfkMimhi QyUMo1ZLRuK7igyUPpYgrp+n6TSK
GWT0K/BpbON8V1j9OgEs4ohOIX+lNO5qkEfQ55e757Kh5tC1DPF nMZT1oM22t4FqCde62zuKiJX J
roYsIMtp20v7NxXVmDNUzPtl CNyKGIVjmAM7wLih11mDcfEq 7WBERiIcxfMKYDq2A6fTcTMn SW9/
Z/EmNwKaCQyHfEbiThaeGO4mc9 nPDAwaYfzw9OEo7fLw8Y2GGE bOqZ2q94NB9SxRGJXfXpXSkm LN
nGck1VKb4MzVq/fo2Oyu0xQCWR3BEM+iF0XyvNwtLoHinrrdrQUw5SB TP+OZzHOcrLJNzvUJ1oTU
20ocId30PjKA80ERqBLJoZON 3+y6AvYs73x+3dPPp/aNFPLGCbY/NNXZc3G1stfID/RDl2+XefJh
Ih+u5qk1DTsR70nkvfQLEI+piBNzUnc6VK3t8Z8nKhKMsTN cmnmWl83ZiyHlUcLhvkGJ7q+uBUzc
MLPBCXK6UVax5IYFqRGhyqS7 MntPaE+gDZthdEN6ZH7o79LOEZpWPu5 e9AAmVqVyL0hVXYvx8t28
8WA9PIVpxsIEIPx/qwb/3HPv6Q9Gu2RqHzhZHs4unWjd UL/PfEYqZPAI9r21UvXPw6XMhs0 WYQFo
4Cc9u63GTqnFUns1LXs2oX9o BzPb3r5kBW5Dr9DzhtbX5Y/7stsHeew2SPQnN3cn62zfzv2 mVQwk
k//ZfXL8cuNpVfKi7pEF3sfuVPk 1nqlapUO1X+vO9Kahc9Pf/AfkROOujo3u0yt61+yXerTk8qv1
+Au0z2csYgV+/Ux66qbq+oTK5EzBvKxKpZFeWuyN04XKd foxiapl+ZGpmma8kN/CApTxX2K85Vir
fJ2VC1NAHCpxduu+vGdYpzCOBZmSuOdxuE4cUSEp pd3Zgq3FJsBbQ6IQ7KMoEVfe F+aG1vb0E89W
X7FNHlKJy7ush4g99YuQwiUB 1bmL9syW3ZRqfN+TouZ+XaoeKFCDhbX+jy9Af6gaDGUuhNnnrG21
mmWF7mJwyYcn2EDNEnHVTqmV vkLzTllGw40qOMzcUnmYIaOq m5iSQppgTTNOFZoqLB2phuHb f0ue
Z//69yMFRwOebRhSS4SJuZPk2KL IoFMsk0uMceXm2BPu3IF5kNN cqQ4dB21E1vgoSKZdLBsxpP7 B
AuHOFf2dVFY4TuHl9L82dtut Z5BIqnUQv2JNzt0Y3yWcMCyo OxiGnmdvyexfzUBSTeif0QLJ 8txn
1XmVTjN4WoUSaeMjk3+zBH+Dhii70cbEIWD7QFIEgcPs4Ff BnvXzgYRMryC+S4B05y0hk6xj6ViA
gs7jbsnliRLwIOBvuWWm2zdw SVu88ux6FIV+eCvD/qczf5FjW6at7/IulhGzj+d8Ys1aQ7NN+H9/
YTFGmPikZuFr3gDYI2CWRqO1 aqK7WSycz70vnIXGFuWDo/1uY9fqG5NEM26IWXhQfmaVcl aCqFNA
Wgr7ZyAh83U08tNZXCkYKy7Z 181pB99wA5Rg5A8TRJw7j0Mq 0lwjfhU4HLHwuyK5tKR/mNWXt1IP
RzYdjF00Tjh14NMe710qY9sp Vk3akuBcCmxntF4c9RJ054T6 UgQPukgFSzZfeHc+VdSPIRBxP2ot
mlKSHAJOUTPxv41/zOxI80YE2X0ws+TElDPYnXaKYQFFhCL128Goy4 8GuuybVcL8/YKFCh/BSsvM
UHPZxE5SGM4uGMKf4h5ppuKY BLSFpyoT3ILi065w0sxkha6Y mlb8X9DLNDdnBmnq1z+9A7nq1Mfs
xXgKRNRHLC/L4v0d3xVOr+IsnZ2qDrU5T6V/f+87MWyHlLvE6XE6O5jA5fq+yrnzES/4/oAFDgoh
2IgJedCS6qrqTvQRCG8rWHv6 P8kAz4sOojtqHxYE5pZL9t8X TWywcGJt2JYfxvpbTmHghAwF k6ev
trX1LFzeospA1DFiHw8vynEq ECfm2ErTf+MFu32bRbyaBHtiHpHEdL/Dy468K/j1pj4B39iPVk4U
TknbwbkD1dw78t+nTgxkv3LVCJqhuELGbrNhH9H SJb9ty2QU1Z7u1LAkA9UkufT S3+q8RePm2cEb
HagZV6cx3eCazlb9niHDEBX/n9EGJH24ikZ48zmXJ3wzUXvw 3n44O2yLdk34dWyZgA1Duv14 aWB2
K/3a1FdGe5afo/QSJIB34kc+vw29LLlt8npwNh5/oF7EpFB7/X93Nx8s1UuGudX5hVsvPg4/oRtk
o9TE9pbQwh0rNEV7yfVlDYzt DNyeZcLtCJGyd9tDKy7WXGU1 Gk8npvhSLMMD7+UwpWcu0z3BnxKe
RAw1k7xOSuCjg5peal3KiFZK Bq9CY6A852gnW49dh9ItyIhy 0Yo1rjsJtlkKzxoB3wVJ7PXL ipPA
68vlVdsjg90CpE2t+9xc637LeYQGtxLhz2j+poi18/2M0hb1cv2PVH8+5fpvSWeprtzfTOO7yYRF
en4SUnYbd8a+VeZEYuUk4D1BZV/5tRUFpX4ZTAE38cabqRuU8yy AXme7GFf5wn9wgmD1eOyzLdI a
Tl5E15ExJmvzTPv5jN7phdRn PV1XMjnfoFEOSfpupujrnCnt mxgdfhcSftcR4gggT/Ylfjez06rF
0urNeKVto1mJTZMQZ9kxL3jE 3hEyCCMGf3lKfieVN8Xkg1Zp fUrlBtNb7qga5ogCCPdxSA9v mEZX
sjyZlVvpG+/1XnEMac5+M2ejDxStDeXzHYOC90uoMAUG gx1BEjeabNvZXyjhzw3PqZIY tfYGAlqy
qDXqWm4lxjmzHDVQDRx8S7kJ U5m7RsL4uwusf0u8Uf/dv+E7hgrGTpZzba8xXWcSbuEnFu 6Eogp7
m7l4mmTKcad5ej2EkEXwipOJ sZizW1QXajpcFtaZWmUT6GuO JeygaBiOTXbb4fg+RdoI7tn31eQE
BKfFAdw0GhvcPm31+UKsWBX6qqILwLFROSmjEpWer Ni5fl/YMVIfZ4vyJRINjSNFaEwsEua Zb4Fy
xPc9wtBC3umcP4R4b0968Tsz WqYARYkwgwRgzddixbSxjUs4 H8UiejUjNgUsuTYT9LTjm0Ns ko8E
Td3vTwCE3eqVBt7plQ37hCTU eqm4YZ9+xJLzcFoh9nX+3yPt10UPfFAouzQLknHN1hMP cp8Od4dh
vcaquyoq8+dbQTXnFZCKdnwyqnWkPiphPU AhshADOBGh+3ZSrBd4ci5xsVnY/T4aJmIFA9q6ymQC
XwDgTdtYcRqk65TOHuJiwFn3 XeMZMaHsqv/oT7r+GN8xQH9XZk3QCpy3rdo/vWNXz8AOuSoK8xYH
vKbqEZ2dkM4JK/Sq5nOZ/2oZUAI7uwKohsaPp6bDb5/Q3qu+AMmmkuffpl0vESQx3Pwp4pJU TH92
loV7N5KEsDMiu6j1ttN9Xzc7 dj/VOkG+dfTJv3oBGida7xnSaj8c9NWb TzHYNTTVnJ2tfqOh9NQP
r5QI+egTgNTt8HdLauOVpXCzdHAUd ibb3umD4mTGLC6ix3hOaBbsl cSEIQPJARe1K6EgG1trvAhH
ype9atYabZ5zUogjrO4PKQ0u 3qLW1OcLggceWoWr7IAS230G Q5Pw8JL7HaEcvJrHSRxT1w6I A6dD
pZ25FWtNCIXhTAVzFED8G5Kt 4IIYfA5CA0n8klv5aNOLFl2Z EyZ51yi3UFl5sjYh5tscTAQJ fXQR
Ks5rswI6O0l6s2t1/vNMDFpRQznwi8Ofoq9HljXzY KcEHm0k5pTN/E+B3N3kzJoaxymVqn4lD5YV
a/toh1DbdRecicI9lUF0bpcMNM 1B68ulYslwk8kkwlbDA763C4 7lKQ9J97iSVi3thEKXHWRObG LP
dpgJwvNOm3CXnaYy6SEgSFV9 Vd9gDyFYJYFc4rAYO9WmX0/9L6mO5lNfmLrIQCkPstIYgzi ZQbJI
MQTWB+Q/qwGax84UOFgUcXlvOoaYWyoy eTY/M32MXWd6Yccw1rbRD3XqPX5+aWoUte++NleHHrZS
ekD4qYB1BwY5Do3oTbveyU9P PRWDoJ3NQfrGh5OM8oLt1gTi +yLhydNhDTFl8yeDO3Lg1NYdF TLV
LFu0lgLUJLZq/HBWHvUYPtQyZkvcAbcBq0nM+oNt/4DQHWvGF8LNCjt1g3ITNiTeb j/vmFD4fN+f
rGg2sxmgLVt7/PfMnrISH/7XjoOAx/s7RzLDTBPTTInxLiG/Vji9FbQZE4hAraQHkRPTyYVt 2WkR
4iApxi9J6cuKLWDcWaV5sz1X vXp3UC3SIqQCK4CeuMi1U7gE eayloIEaeOkLBgZ9U0HriAje IoZl
LA9v9gxe75qKQCmUtL65J/fZQwxYhQH4lXCXgogPdrjd3f G2GR1pgkotmtcKqBw3J7TPIj IL8lmJ
yd4zVQ1utQxSmUQOa3ZFhWnH 0N2kmzThYGVWWwewG+znMp8GrUdQ6pJDPvn/GtnLj45+65m2a/Ha
LwaqdTejgIHyOm0de8mE/xLYf4wZy00cA7SPIRuq5oB2f rAg35WtzEtCI2WH1f3peRrMY +MYD9JB
zmWhPaI8eXk0ZdE8oJVRsxJI MqDbgjLLvhypeS5urolthgcg wWa6rXB+N7gqVcsZBe1tgTB4aASe
m+LHX1n20w7XbanuZPDfS12HKc Hbss6LLHcpTGHcr/s5e3jJ1yidquIyWuLbug6nO2 6OjfS1/ZPs
Ph/ZHLnVCuJGukrmkv+wxZvkvSQ1IyoxhObx9wvBHoK 8yBUEqKZM42/cQqqSebUgAgX6oC4yYPQt
J7wRx9WAVasxigYM5cRlWkRH kAR3I5mAXlMemluPOnwNky2K rOPVXbJvEBaPaK8vTJChAiAM 9jsk
I24u+srjTj3lF6IYPCyn2Znt+SynABscNstBrg8Wxjbrl4yH8 vKQseZphIZHvrvHvdeOhOM34 3Ns
gguGNTP/SostJF3t65HjVaTeOAEp9JAP LU/CVG05t7GGUldhoHw23tuhrtC aq12hV7vVmMSF0MKi
3xLTDHeJgYfyAenrweQ92eBk r5Yof7JuFl0h4BBpB2NRpUWx vKZ8CA0x0zTkDFryraDxjFCk dM7c
wg2D6ZK/BP2B3Yj87Tqen1JxopDcAEi7 1EPf7Cs98mjPKe8gUZyDF6py oUSbC9mZZ/2V2gq7pjTc
ktajq6I5Y+q7VtrdnQBMNzkZdjFAoc3u07 MJTCzcYTSBua2Ge6ey5vFg2c 0O2FIO1Nr1QVO4ovjm
YPd/8I40iOvzoy1wRX4uV5GGaOjP igqBsZK0vkhngk1BzGOI8gVO zcBBu16hh5HDq00zl+/Az1Gr
COmSuTjyiFQSEubAWt0/aB6Dcd4pjs2Z3PXmHM2G7tHw ZKl29xgLWXXpPbsRuC8sQ/gqJsQzF0YU
0VF84PCdTquih+ztf8RariKAcojfPbdqD3+1jyikHneyRe5mSv0LDe8+B/xkpUybR68Bf9iJ+23a
4Y7plwP3g8t4oR0f4U4wnKzK uf3v3YexpHojoWvqc+e/aApPSQn5+SnwbTy9hutOylKuqtQyi4iU
3n1xGw/BdkGeu98HXPXxMf98ToFuZOk 4d4Hb3SDocN9wKmXoG9lzzAV QsktSyLfq3gLaeXk6VEbX
xxIJGgBPThzvRXbwOMOJ1y3t 7eURhpCPfmWyQNWfmhuZyWhE MYA+ewRUvZyO1jXGk+pe05/Qog6a
xjiXilpB7aLC0VBHQLjTP4nU 4sKSyaTg3P0LopkGdo1MTV2s RkMEsf27wPuEbt+SgIZxPthrMkO4
e7pUEM8whD98SIaFaBeju6pc QMxa+Tep4WR4jKSYDtD5PlIwRYt1s Vax7OizB/A6roH26ZVroWVn
G8TWiKXqE/Jpl4Q1NOi0bIQTexE3F2s2Df +PPWwitYt3FNnk9dUM+wB34+VYw/zeABMMBYD2OvGe
6bm75RDWU0k/yKl89PGbzjNKi3izEDeyBVQd 0lrzvLJdH/gPKTdFMHF828vbiqKMWznlTc lNDmy6
o418nRv4NJL45pAAyE9YxLyr hXfkecH3AOKtVLyHZJ0gQWFe I+HpPcGIOIgkxxI6ytpOAtuCvd 0y
ZKVG6KXd00SaCHAE/Udlc1jgDDdUOriYWM03swsqu NO3VoAaudF26TfFC8h6Fr+lW04z0i2jCltv
pd0AdG46ii8asIyMZBCd72sa SRDEMDI4y152pQVzlJBI2MTz vmUczcHkQ71OHbOjNVl+5+Xf7JNa
5gpMz5VSsCm7Y1JGSzB+GK8DSLaeve2EY01eVdvKLCKz H1Jh+nRfGKgjEp8G1e1xGlW+0aUQLccJ
zuvLNN0DoOCQLncJtMZUTdjH KtwwaT6QW2do22DduKZrxMCm f9+EcWQ//Ln9lb1SNsldUJc4zAEs
bKRfsGyWsaLArnhFmMJizKCM k3tQvTw2+5SGWxNXm6uSi5ywJfgG3nQmR viOgRSHnISIWiFz1bh7
TCMGDZV/IsO1UBRlZhUQP+g7bxFeyRyel1gpMGzCGDV79c HpBb95OAI0Fo0W+bLhIo/eUMR+gXK+
69ZXkrjxSyQfo9QXTustMVOu hsXm2ostlK1eQrbsPQgz+LNYBAMTCiK6Jctgv5/T3BYdYvpWOo8O
ZAN72sAtUTnk/qO1VpWqvDF+7ObbrlaIZ0caEFHBW2bXARbj 2oz39I9t+cfjcu8y1QT1YDO4Rf3s
ilBqDwQyasW8cXpvkaxmgbna v/rxUmTFGtkyFxMBC3Tt3ghN/tghPwscWliaG2o5RhEq04bZj QEl
QWtJPAsL+ukl3BdAPJZfq+J+QKJ/TTnQHI2wzHFnGKqRfAmL+Audq+M+xGWHJQ5gDBdTSzBShfhi
bdW9MQivU4+hQUbv9mXdI5SYX5zSdkN78VU LOBO6QZ2f8Rydmy9iOq33hEy UQDa4/Jpc3DvJXxxL
WGsCaGyhMITwJ3f/NZF6KiWCKMzp7sSp+DHadOwE4tK2pK+/ifik6BZskHksbrk3YigrXLKs NhOR
cA9+3BetOA+09n3REzDH2dTb/gRjRL5FcQXXo9YQXP4n90gnB I0qvCYptcq69JAv0zI1n7BgF yJQ
UY2izg1thW0zEmosPglB/wzquF7/XwL4Uu5EAt3ZPCBRSbH8NKKX 2rXic8ngmG1TjU0L18dPmudt
qkX0qTqW/9v5oqY9E5a37zrKOmFD5Pl/KwdhmUgABy6G0JQ4mU7WQZW1 HLmzchXHFHeAckgL64M7
/VGGO7PKKPWgOzhWCQeB+jTOEWgUcXyPjJDZESTj0Ae7c dAPcKtbcrS4Qf8+YtyBAnWOlFSYUSDg
UI/Gs4ZLpDqkAeDmxrF8AcPwglO 5ObN76xpnijLFYjTx+AB1s0dOhe5NtqXX5NusZferg C+flTvM
crILjHQ/SmSXJKcPxXjxedvAX9KRxLke LZ00sBRNvm34ccqQFHqVBTfh vOdkC4jmojeY5M1prbFu
MqkcXFKEuVyZN+b0VEqySt0A24HBiVhlZJFR2T 2Njf3gjDClywoegxemJfrCaN jDz/RWSX0yoDsC
qjzBUinAyw2KyCKkHPyYxISP yfK5n52uvGCcpbbsu3cAg0gG w4w6kKllZiFxkXrMTrZOTypA ekz2
ZfnegcS7JtXw8vQXmfLpOFS1 KW1C4Ic7zHHGQucOu/FeoZvtdhOaLKfss/WyW4FKIaiTfe2jmFSv
QpLFSDhzxIsjk1HZ9zDZIeAm dF9ZDjRFjUIVxddzgcaW/0gXEq35XF7iUg+9zjJNs+u5OhMj1moY
f2WsVlAVy7oc3744scOh04O0 5ogRdP6EHHPY7ok0jhrqebJb kIE0CQzNha5CPNyG0pi81eCK 7bXV
883TUKf9Zmbq0Ef4Td6pnCtr yGE6B88dYuS825SEmfo6b2ha T306nnWbwiZT6ePCjntmBbAW lGH4
hnY9etP8jv+FAnkuiCjSd7YfV1jTF9BeLfi PI3TCidf2LmPv9LovmIinGNo MXib4IV++B+XTzgQC
g88shJ4WszS1eNiWYX1pAX81 b9RiKXuaMBCybS/XeOZ7vYOyNmbnBnAnxU2PtVc LwU6icq/8TjVz
FdLl3nEUuVwvOM4B2aIvi2Jf 5WI5xB0QlyF8VFnzkCYrHIob t2pKjS07oZCuy2l0PeCa5etc LJ/T
QUVqwf7nR4ZmfKb5W2v4/tD0M8srr7XDkBprvmOYuMToQ IPyuwMqpyJvzJZu+UrWj8n0qkaJImia
Lh7Au5jnnz+rTtzuHkeVUSD8ElrRV6eYa+JyREOsJ9k713qZd/K5eM+ITOojefevSChSCkpqmEle
6MKr1QQcU914biWF26j6sB0w nobrnhP6u+1daY8rGaUjEjuIn6guHIcVvT b1JR9rl9MMMyxn/d5X
OHw5u2xc3/NHs8/JKSYV+YVyyOaGlCGCAE2eg2rjpDo0q CC2l0iueJ+YKh0ThIt+ptgBOOp1WnrV
VWuY63JFM3hI0KhZEAKYORow hG6g5oj+SCNgMkQnUkswNk0JHxq+6W2SCSSkNtW6nT6tjbIphDFP
zt+AnN8DyStOJ+Ia62xU9m2429kAP0dcRnC6pc BOxRyiHbrEPjuSxWPMyip86E MT/IuhXAIjSPii
s56qdKhhjUI+wpw3r/pQaX8qe+3dCw2od5eapgettYTR3kQYMv z+9/eGfo7BpjgF4/pNRNr1Z8+M
DVbTRAGk48Cr35hZTBREvEou hf4PsJzo42/5TSkNgW3utj6C3wilzAUMlGp UMFzKMiwEFoquBFQs
uxfKOkaappfE0XpzK8uYKvXa u8Q1ncDIkKmZjFC40XOyGWxX sFtP9k7Z17xwS8YHvOpvnz3b 47z4
pKKzZ3QCNEX+k0s2fVs4TpKGNbYTF/30K7FXDaIc7hLdPSk6E/C8YwgZMDg3wL5WErSHe8OMLT n2
Z0KwRel4W1j8W2BCzzieKPOC iOuuUQImf0XJupYcaM2EfctA mVo0AWo3MY1jovC4brZ3v1Pe sfDY
gwHYoK65KCjdRKC4TTHuC37b UnNEqdZAZM816qfrYMn0yVVG FOO8lYOf8m3C1mU2PxjbL+SB8UZX
ipQdReiemlzjBS7ke3Rcf7OG gbVTBQHfb02bfzeP8LPDlpyX mYVutRb4zCgkRUNhXVFFu3o8 yrKF
2lyys5yXc3KEhs6mnv1WdmBt KkaY13MqkCA02PpQtqq9o0KZ OszkN8R0jj8XAsEr14Vhpx2Z YA2l
tGB5+DyMzqF394abnABpoOVeywLtx rHQgde3mluaPg3NquXhrX861 vdIPWm2CAcQGFSxThlpwGTY
gL+YsbbnaxjR73pzyy+iw6lOpvUs1ZEi4mK5i2UNqDM XOGdNW+aWzm+35zRPgg4SJ8wnNmVTh4Qg
eyae8SVyZDe8DnnjzA7SuXfl o46QFPFLc4WN2flrL9G9qSek mwZM6Wcdx0hTENeChbWHLUvw /W6e
OM0ZSHZXAjkMO3eeBrSTIeVN drRr4Bo8sPCs3jOf7nhaZo6I VqSRjmqL6EX4qtFLZQBi6Wqy WIKn
iF0pEyJvgGyi5y9tszhVu7sP KmpIxr9udUhQ67QI2PbGfms9 DS+jfv6L4zv40OlwQjkwEBpQmrC 2
T+JQ8FMpDS0T0SaHFtC7iktKrD ybeSYD1v3gP7lqqR86QqI3aG pRzAFzpDFGalgbNo1p17yJ4h cw
3QP3kWB/eGCjrGDm2E/RX74DHhneboiXSy5ZzId7VoA xv27B42esb2zoi+gXJAIRE4AhfE5TewKR
M6DJTtVPtYwmWyDwVvSvdaGY uFF7e/BrGS1hgI8ojqg6gXZGoo/n2a1AGyTEusLWjFYkCyuWD9p B
c3Y2tBt34s1FXpDt5mwkEch9 hrFD+1NqKThm7SmSOQezTbWveQfyS mdT0MrG/glRGLbitPcp4+LZ
3N1OfO+f49k9GSnZweyWKgJY89s6BlK d5gQxF+cNiiXxRMhEVdBlbM3HnFPUSb BKZr8ByE+YE0v3
BfzXViQSijCNeDLZmpmz1PXS ADTsAJR6CmW7k77C0z5loZho XuWjNG9i0jaYITJ0mGjGXdvJ ENVS
T3mRW4lBoTdg4Z/xy7Nj4N6CUVCEbldK2OMu1U1 7z/aPNcRo1cvwzxEhHxcxjoYnS0 zO3BZmnUnD
Ded6CWvvAsY97mzs0Bg7lG2R 2TjooohSMohayfNR1R7Rxi6N eZF6wpx+vImlRb2ohziVRZesonI7
mPEK7bcIsZWuu1w91z8ed1oc MUsz4GRY5detslK17+Hu352APfYNhpP0kRx5V2KzWM siZzPg+0Gl
PgxUOMYIuLeZghAI7kf5/0P8nE8w0Jki7o9igkL06rE6A jZhPLDfQg9gEyS1aU4XGNF2X yyfBora
IjV6iVNmtRJERarCBLvRpgg9 49VViwHmNdkaz9Jb9UNP/ToOAjQlCZpL14vI9cI4j0wnF ft7gTDZ
XCyXocChZnCNk52vblTyGrZN qnda+30WtMsea7HUcDi2uYB66aoz3 ndcoRRA2wMTUuRsExI2lqTp
q4t46psqpqsr5MZIi4Fp7Ad6 4QXNC3Y2tywBBAPxxkQ5idWc MmN0d6NeTsWGG7k9H/d+p6OYANH8
m4VJeGYwFffSwIj8vbIAAKvf xSwDlGhrAAHEboDgAwALdLgA scRn+wIAAAAABFla

补丁2:

/Td6WFoAAATm1rRGAgAhARYAA AB0L+Wj4Cf/A7hdADELiIbT19MqZQolIwjL pRiPutAOgiyFZ2qT
ImmeMzrM+j7gdkO71MerzlMBnE1P1jggd XI1n34y3vEp4YMUOm+UpQdEj8H9xSQfon54qHHjYPq c
q1moMZOk7pUcv+ih3rDdXyVGeMVXJZMkJCJNLr CssxPgcmypUKGTXK3rZvrN2A CjVl1c0GTMsCaO
vTrbeef43Pp7FDGpm0x+PiCPmxyyPPoaegl8yj5zTRQU 5gnoXCT6N8afmBZM+f48Jvdi1HWrSofB
U+Mv1F44KJ1Z8t9uqZ+h64abEJH7a9ATG2kNQ8IR2dx mpxbOceB+P7eqqT+gf58Y5wiG7n8iPiRc
AxKhTzE7ECRZf9ISey16YTVa 0AayhZ7NUUWCLeb9xEcPQ9zc 79u8fXduFQYvmjBk3G5L6r51 9qX+
v1YjicWMz6hQ6+UmxK2bNYwKmDd8eB81yQKdHA DHoUMRFKcBU5UCZSwpvdonI9 nQd+CjjIX/Cv2z
3cmwJp3OuYxyhRR/mPJgGZzWh4w9eBcHyHTOU45H e2KmXX18hd8GkwQ91KqupI+gxq8zpTwvFwyY
ZLTS1afrHT7F59oBy3a1oemS G8Gy3WLLypSlOLNhuNWZ0Vil GusKkPzYmQY/Yqnw9Z+OMj1u+maJ
OZhPAjfJMu4EGb1h8Q70cqxO P8fP6nJzvfqjPbIi7Bvd2PKY jPrOVV/kb6YlNZW/p/Eivvbm1LQ+
WIh7zQ8tzYD1Vuyb0hfeR1ZK xbjE/EEzqJe7CLIxeJzyUpIFHo287 Hf2efS2GwCKBaGdEh/YHdhu
myrpNXJx6oNxbyH2ZcPSbd8y eo4ktzbWRthKeNCGN9wLrGnV +2ODLC8OhdXJh1xiPwX99OXRq rc4
aZ1dA4wPADStCNsVsYlwdu0q 3YZD/bdQB07r6dh2dwly8T1wnA/elozk4Z2RbGii9t7nGwxMmrV v
gxemPfRqIx+O94GsLlfUQ6WKCTTPyEf2VVz MzPl8uDXkiAPsJcBclZnogt/FueWOX26LCNEs8ITb
80fJxDWSqytKOTGHHgpDx+2ROJ7TQUQYQ/koeR22QfhgOjBBaauLMfJE/QGJ8KjJSFWR8HZhFETO
8vWQoTDGof3Rs4lj0cN+W+K59leg32jwUDzaVmItJTO8jT XebdXMkeT7iRQXiqPaCcZQ81 +WKtp+
daCfSVAwUsHZ5dUpxSJE3lMu Y5aQyZ+RR9wBppgvdooj5vJp8yJJUoW lv59JtynpD5youmQqifJC
YMYgp5mY2BigINtAcQAA/up9J+DiWg4AAdQHgFAAAH/OP3mxxGf7AgAAAAAEWVo=

-----------------------
PATCH 03
-----------------------

/Td6WFoAAATm1rRGAgAhARYAA AB0L+Wj4Cf/BsNdADGLiIbT19MqZQolIwjL pRiPutAOgiyIjgPa
7sj81REDpdOjx4pZArDB7uyU EnGnXLx9OBez/LSADVCyFr1XG8is9H9zpRj87 xbsD6E26CL2oJ9S
aus0Ah8YpAWkRPWLNl64O4Xk /VYz1I3zgcejXqlxCGa57qE9R iGaGFHyAyOcx5tgYHcu3FZUk TOI
LehgPXQyIJ4DbO6g4a3fj2LQ akoq3JVagaB+nkB8fgV0D9D0daHf6LYJifzo o758Ua8YL4IN++TZ
+03vW3SYyJyeI4K6s11m5jZ3v YPn0C99Kbsy2toYj0leHiNWw T0ZuR9s+a0FaaZcfaVusaheK+1G
T9O1YQcVYbxL/UoLZF2sSEjkmodzjLvtNowPs f8hYQOom7CIByfMJ9Mu9hVGG aD80nqhN3PpjNjn
/cxJ9GBH+/bsldekpUyEUm3pUV4YYvDCuv 7tFYBYNCiToVA2Nv5dJiqnxQ +F/AqwVg024kj+yydF
j7IqBuvxHwCZr3CzU/fakSU6UGML7SJDPdIBnB1k8B kU1WHbGRbX9W158Ews+5bT9NZ96magKhiu
l+aLW63mTnrfMICj5HTKjtZovm AILtGKhBAvJZRT35WfFu5tGi mCj0fwKA/X4b0BmUQdphU5k4Se
g96iwz7/U7O/aZZhHZbMjtdrzJeZhsDzwpYE YHg5xONnY+hbZl6T5dlZ5M8WzfQzTAO+m+pLb7DX
g14uTliMx2Tl9YfhiWvK1cQp T+XqlzUX25FOYAF249Q0zmx9R8 3A4cFuvto0D/kPT1XVUurj/9Ep
yIH5LK584RFD9ceh362o1bRI sgQXy9T0gibhN9QWgBZviKuZ jpP1Sk4vOCL/KvdwY+lCf3Nsft5e
GGtCnlsSZmSMRBeg+w1e5ylIx1Fbioz8qXu1e2dB1 FlCZ38dexFRw16vK2tUT/gESbRFQwUE+Pqh
gH4i2biZ1OzHW54Yl7vWcmIz +gMl3ZyUTDL94NZAtiwDXoJKP vCYXBXdIG3Hrv1oA5og7SauW dsc
Mh8aRB1b+bWciZPkRpoKrE+3PwPBdf4xwKtAKs0zwYcD+Aih2PKdBY14hHpS3kVO9saKy wJyVU66
elCdXgnofcub0UI5ojWXGqNB 2gmV5ZGjdeHQujcKDw00Y5r5 kH/XjC7zF0bWwFjCjRe2FVHFNUA L
05VXvJXboHVeZ8bzxVW9I+Y9fd9T4ILo3TidApvnEvNi3E ycAaspCUQjZ5hwDD5e5/Hu9UFF75Da
UfVEacS45aJgbz9jHN6VhiKF NE5lUBZcBIVNIumhk/3OW3b+BEkOsKd3OmV8Wqu+9VvB+KAIeDFS
6K76vrxOvglUJMBZlGGaGN8i tFDlXSpkAkgNqUZ0DZsXlt47 bmz9D9aKzan1AGndIMB6JxvC /rIu
XUfanjnKqcNpYfXyDM6Bd3uG jyU2D5vTsE6skwEEfo7vyR3o CG+AdX3gABQuc6b9GTF+352sSp9t
MdXX0o2w/QRw3FVWIloqylaIXAA1/C5HdyZP47BzhIvSyCBgayy+sGilKIttgQAmSxFpCmSEBvVn
pgOt6OXxx5j3E4PVvrWoaZr+6P2JCRkYCT+zvnVGluWub/y9AzdiPbDcFZnz4bgyIr3yuR P2rurf
L2M3Moour7MbrlYZ33qBbH5q A6BkQ4Y+AcAdolglii5P+oTHOlnfIPzBYQ3Zow393Ml0H NaYizxi
BMYQkDAkgD42W5by/hLhvb/AHKKptcU2ELaZqNM1QC63hEA SoovihatunzI5LTq5CZkuVCy VxTjr
WOqpUI99fWQqPEGG0WA+ZhLVvRgyvmF8u25CazPKbTXl 35xuVb72ie3YzZSde/n+dJO9vLdxWtZ8
1TdShPVE/hqRVA3H7pa2SN9lSvsN2aNoX nmBMvJyBknIaf2VxvNl96UOO 4veb5AAKaXaaZGvhM4Z
iY0GYk3zK+z4pPKS8gh4WaDXndQ4NivJHt DTw0G9WxQZ5X+iIKWrC8eaOiiLQjcOW1JpfM4 6Wgzz
i3PrZW22foOT+bRHmVZOlvcATivGz1RpG0kZM argDdGTkdRB3DHofQ+L+SlJlK/hZbyykAZC3heW
VePYCquxKk/mm293kmfuZyjbNmYbsv2W3io Em8gtwmCQMnl1eBeYyNMPRto C/7MJ0dT7VRFEwzy/
FjGHFla802xIssQcIqEpwf7E inCSMnuZ9h4AYMx4XbpFTLOC jwYv9zacOYi7H8/1phjqsgTlLHXi
iI/VtEoYvDNfSRRKeRmGuTXnRRJ d5eQjpfzQysaAv8ioR8Ydfv8 Dlnk/T35owGC9L8Vb8QAAQul/
pSIjDUgAAd8NgFAAAB0mSFmx xGf7AgAAAAAEWVo=
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/c_c123/article/details/45582375
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢