- Fixed bugs in entralink editor and trainer info editor

- Added Memory link editor/import-export
This commit is contained in:
suloku 2016-06-19 13:56:53 +02:00
parent 364658ed67
commit 8bdeb025bb
12 changed files with 1954 additions and 266 deletions

View File

@ -62,6 +62,10 @@
<Compile Include="Editors\KeySystem.Designer.cs">
<DependentUpon>KeySystem.cs</DependentUpon>
</Compile>
<Compile Include="Editors\MemoryLink.cs" />
<Compile Include="Editors\MemoryLink.Designer.cs">
<DependentUpon>MemoryLink.cs</DependentUpon>
</Compile>
<Compile Include="Editors\Text.cs" />
<Compile Include="Editors\Dumper.cs" />
<Compile Include="Editors\Dumper.Designer.cs">
@ -126,6 +130,9 @@
<EmbeddedResource Include="Editors\Medals.resx">
<DependentUpon>Medals.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Editors\MemoryLink.resx">
<DependentUpon>MemoryLink.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Editors\TrainerInfo.resx">
<DependentUpon>TrainerInfo.cs</DependentUpon>
</EmbeddedResource>

View File

@ -487,6 +487,7 @@ namespace BW_tool
}
}
pgl_region_box.SelectedIndex = speciesbox.SelectedIndex;
}
if (exclusive == false)
@ -495,7 +496,6 @@ namespace BW_tool
ok_but.Enabled = true;
}
pgl_region_box.SelectedIndex = speciesbox.SelectedIndex;
}

View File

@ -120,7 +120,7 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="sprites" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAABAAAAAEACAIAAACiR5NzAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
iVBORw0KGgoAAAANSUhEUgAABAAAAAFACAIAAACtH5kfAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE
sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs
@ -1212,7 +1212,7 @@
u7mAFEn/Iuvni+mqk2jzhSrjlOHqHocAtQFlpqkjmd5rxC/nk1DkvQ4BhNWEPqs6vc/2r18T+sxeb4KU
LO7lIP2f3z4h9wDhkGJFhOl1gaHpdZFPCH0NRaxqHkixIsL0epB7ALR+2wNAnuxV/2APt2Bn0PQ8Ouj7
h+sJ8Fb753OArivQ/L+zAYDcAPQ2AxagLCsFpqcFDcDzTXm9SHzv7AcUY0VGyBWy+sfH5MeSjBQrIkyv
Bzr3H0J/hPHPAUyvC3ZGDV+65wQAAM0ESURBVMCI+hfHNQAEI+6l7zmGS3e2YAQokhQrIkzvilKfI3wS
Bzr3H0J/hPHPAUyvC3ZGDV+65wQAAP/0SURBVMCI+hfHNQAEI+6l7zmGS3e2YAQokhQrIkzvilKfI3wS
+lL/HDkBx5Z0oLYiI9T6ezcAh9aPBuD9dS7HyoIFHNoAIOtD6MvP90+7SooVqWzrdZCg31L/neWT/XVK
tukBWvUPpqf/w1gDEI5gVdcFjWBvNwJBjEpGIksfF7nc/YZmhklJZ3yCD9LQf3v9vwg7HAE6nif1zc0N
2/XLrww9AHSXKVRD/WuG4IMaAN61dRTSaxZnqAcgzNIzptdPjut19kbq3xqAcFq0pHjSa6GNmZ4A3S9s
@ -1852,242 +1852,682 @@
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
6oz6SWyu/w8CUyqP+lDqeAAAAABJRU5ErkJggg==
qSBML2Yk7imF0C9af/Ofi9kMYZa4P9PpPKT/6noaRBtAgKUcCnsoxW8NgIYWfAT/r733hW7cSb63Fw4c
GBgYaGhoaBhoaGgYGBgYaBgYGBgYGBiYc14ycODADwz7vU/rypXKbUmWbWV3Z7/u8xxNdXVVWf4z9i1J
diiC4hcaeWrB42kqfYr7rPjDjlWGpQem12vIDcWvUtEDYFtwjen1gFyU/Wq1ktAPuR/XBcmjKcGWHphe
ryFXin/R/LlfpjoJgJHD+shivRPq6NvA5Rc/mz8IoK8FY1hkJ6bXO6EU0l9/+UtTGWNoVPqegdB/fn6W
4uftToY8bUT/2K/gb5tLkEFH4hnZY8E1ptc7aIbUvzwYqH/5P8N6sPe7DHVC3zOWVxeBPPvVP1SSvYYK
ekCaqp+2hXViel2QqwZAdvtUpRGeSOnD9Hon1OncfwvrxPR6J6XUNR8A7V0I28I6Mb3eCa9DXfyj+rJx
WlgnptcNquk8bPPzJO3PfcqO87MR3Im/nHaQGEIfo+z312Grlh6YXu+EdOn+pnDpB3T438I6cb3+FYpI
6Le/BbRzMpU/nL1Ukr2GIsh9Kf5sW1gnrY4eHJRCjkuRZ7tdPnnkmtlulweH6XWDInqbZGAPOPswve7M
Z3EGgFJyFmN3BqCcDcjxFaHUB4gPFCozZOO0sE5MrwcqJXFfy/1sK9LSA9PrnZAu6a9SYVtYJ/bfOUB8
z+dF5Uv9q3IeOLVKWJHsVQVhetGgjg72h9aPrkB+bEs5FCR+3/N7uvoHXfCD3GcbHk3Dcwqr3VF/hjwY
TOWPsOMoRen0dj/5HyN7LMUwvV6jIlnuxzQ8A5hez5Aecj8MnNnDFo8lZkyv11w1l/urAcDGU/abp6CK
7CSL9T5um78EDBhMVT8HDGB6vQ8K6vC/+fcipTc8EPp3d3cofj52sdli45mmAWCnQ131eQYwvV5DkdXy
lrcDjPAwHf71z8De7wJy9UZzt7hE8dsq4Oz94m+mkuw1pOuoD0a2LawT0+vBbPfDPtTh0dDj0+cZwPR6
J9S5QsPtjuCGbWGdmF7vhFKdj4+FdWJ6vRNKXS9m+rnPbFtYJ6bXDYpI7mOM8df4yylBrq72wbAlGF4N
TK93QoWr2Tx+/CdsC+vE9fpXKNJc71OqjfF3UEn2Goro4h+MbFtYJ62OHhyU0rH5pvyn3S6fPHLNbLfL
g8P0ukGR5+dyzQ/GGH+N6XWD9Pjrv2P8NabXO6FI/uJv2BbWiel1QwVR+brIR4o/bK1aimF6vROKxOdI
ti2sE/vvHJCuC/0fm1/6t1XAqe8BQ2eAML1okPgp+hvDpuVWqqxDoQhaHzCybWHHQZ34LaA+zylQpHy7
I/3cZ+05Eerkg/1hW1gnptdrqKMrfzD6PAOYXq+hyN18DRgM8+TITkyvd4Lu1899UtCW9pLFeh+ULd+U
O+TAf2B6vZPyODRf/8Wwpb20On3fiB5AY6T6Z+xX8MB+M4Y9fZhe70TVhj192PtdRkUY5g/a5f6AQiXZ
O2nrVPZeTK8HVMh2nnZ6+jC93ocK1vZeTK/3oZq1vRfT632oZm3vxfR6jaqZE/r8hr+cvqIi5gyGV4Xp
9T5Uqrb34nq9QtXMCX1+p5LsnbTVKnsvrY7eN1SztqcauWa29w7T6zWqZk7o8xum12tUx5zQ5zdMr/eh
arW9F9PrnVBtfnkNqhy2hXVier0PVa7tvdh/54zqMMwftMuDbxGmF2tUwZzQ5z+OXC3bk1AXrD2nUFer
PaegaozO6TCm1ztRtWFPH6bXO1G1YU8fptc7odRBl/1kslgfgMq69B/DloYxvd4JNQ+67j/T6vQRA8Wf
ab37xigRfwqm1yfH3u+mp5Ls02J6fXJMr0+O6fXJMb0+OabXJ8dfTlNjen1yXK9PTiXZp6XV0X/tML0+
OabXJ8f0+uSYXp8c0+uTY/+dJ8f04pn/MUyvT47p9ckxvd4H0plhzjFksT6MbsKcezG93oeKm3MMrU7/
tvGvl9u7v5rHp9tvxfTQX8fm5eFb2T48fyt3T3ffytvN9/LwdP+t2NM9OduH39/K29Pbt/L4fPet3L9u
v5W77eZbeXi6PfM/jD3dk2M399dhd2dyHh6fv5Xfv56+lYeX22/l6fnpW7Gbm57qFfV38X+iAZgtNxB2
+MdgeihQS2fO/0KyWP8OTK9Pjun1yTG93sdyvTQsoA/T630srpaGBfRhT/cw1/MfYM5hTK93cnPZ/lxj
9gTh7MT0+uSYXp8c0+uTY3picuzz4Mz/GPZ0T47d3F+H3Z3JMb0+OabXJ8f17tSYXp8cu7npqV5Rfxdj
G4CraljAfwrT650g+v/8+VAbIMMCBjA9JKEj42bdXu6ZAyZkkuKS6XvhhgamA5henxzT68bz3QLMaQzH
mF6vkdx//fVgjGwDTK/XSO6vFxu4Xd2D7JFtgD3dw6D+//l1e1APYHrdkMT/5+ZC8LKR53X5r3DKY4mB
6fXJyWL9OzC9PjmmJybHPg/O/I9hT/fk2M39ddjdmRzT65Njen1yXO9Ojen1ybGbm57qFfV3sb8BkNxv
f1UuDfkt+GhULQ8L6MP0uiHRv9i+6Lf5owEILL7G9FCROOulfgTgerkA/RqAhZ0C1VSQ7ek9hmT6MNRf
Lz5Fv02HMb3eS/Mju1+wgB5Mrxso+48/W7arxU9tZWhVtgIixTC9biDxty8LE/0xZWlvD2B63ZDKD91v
xpgewJ7uAXT4nwbgoB7A9HomS/8Q+tmT4eVk6cL0+uRksf4dmF6fHNMTk2OfB2f+x7Cne3Ls5v467O5M
jun1yTG9Pjmud6fG9Prk2M0ZfCoxzCkGlr5QvaL+LvY0AAjxVu/3jPFKvY9G7R/fYJheN3gKJf2jB1AD
IINVi68xPQRkSfpL/ec2IA/LGg+5E/YYodQ7afb0X4urm7oBwNks7mkDTK930Mj93/cPxsg2wPS6gcRH
3wvsP28boWYgL1liYHpdSNbX6j+2QfQA2taYXjfQ97Xuz8ZUDUBI/29qAHid9Kl/vYosNzC9PjlZrH8H
ptcnx/TEAHqcGdfzlS0NYJ8HZ/7HsKd7cuzm/jrs7kyO6fXJMb0+Oa53p8b0+uTYzWV4q/y1Lr8sZH4x
vPpJ9Yr6uxhqALjzrRgfHIRZ4ng6pX8ee3sA0+s17F5I/wx+i+wkiyFSsi6H2x8/Xy7KzzDjRLUHTHEy
cvp4SAzpH4YKxrCUPkKpi6vLpdCUOtL6bEFLsq0rsMTA9LqzuH5fr/95ekLxYwRMcWLs7QFMrxtZ5SP6
QQ2AmoFYGt8AoOND6EM0AHJmQ6gBkFOGFTS9bkQDIK0v3W9OSzHs6e4kq/+3p+X25uqUBgChr630/Z/F
JdtO9d+8TnulvzC9PjlZrH8Hptcnx/REJ3qc76+f4CD1D/Z5cOZ/DHu6J8du7q/D7s7kmF6fHNPrk+N6
d2pMr0+O3VzAGyb6/mVRPqRsSeBndX8PUL2i/i56tTt3u9XgzXhvRm1rlAerqrAXu4m+MVzc9HonVDhO
/UMWQ2RJjgupf7YS/ZLpkuy5DcgV9kJ8FImbkFM1c2WGpdeEUhdZ3wMeisgDkvgxZYkARUZAlBKm17/Q
o/7FyB7A9LqBsv/1tMpC/yD1D6bXQ99L2W+2exoAAvDkPsEKml43Quu/vf36+PjABgym0zYAiP7cA8DI
HkAyPZDQZxuK/+3n5+X+QD+AJ5yKtCIZ0+uTY3p9ckyvT47piRr+kyL6pf7FZlHeWi2sD/s8OPM/hj3d
k2M399dhd2dyTK9Pjun1yXG9OzWm1yfHbk6Ut8fZTxP3y8UPER5WiSEyhznVK+rvoltbc4ebC3C+HJ6/
ubmR9MdoXc1QJClWZBji2/xmqHJtawwUN73eh674v39+Rf2PufQ/MD3EnkiaQyPUiy6/v13HVIMpzlDq
VmSAXH+SBiOUeoCID0EvcU+RsAVTnGFrtVb/YHr9C82VP8MNgJYGegDT6xkd70ffh9bXSQAIjwIsMWN6
HUzr1z1AyH0t5XgrBabXjXyw/+HhAenPwAjn6Q0AQv968wYPT78Decb0AKHUReh+GdL6OgkApv6DgR7A
9PrkmF6fHNPrk2N6oibUP/9hGTIsZgD7PDjzP4Y93ZNjN/fXYXdnckyvT47p9clxvTs1ptcnx25O8A6Z
D/9L9788tUQbwOr+kwDVK+rvYk8DoIEEb/4ozYPkeNjtcjPKg1XV6SPqq6DGcQ2G6fVOyEX3P8/K0TK1
AeoHLKwT00PS34JqbBH6agCg0edtQPgJsyLDqCwg/amG0FcdFddQ/TE9QCj1jHoA8fExh5gG5u9U/2B6
/ZPm8L+EPjZaX8f7QbbaA3mOaACQ9b+eVuh75H70AFn9s4pfYQM9gOl1CEEf4v794QY+3l+YAoY8ERDB
VgpMr2cQ92POAAz3APZ0G1ezhbT+29MyzgDoJID8l4s9f0pMMj3gxRaanq3kfij+mAbRG/T1AKbXJ8f0
+uSYXp8c0xMGT0eof3noB+aXywjYi30enPkfw57uybGb++uwuzM5ptcnx/T65LjenRrT65NjNwe8VUrW
381+XjbjZvOp/gUeLelEwcCVQvZy+usY1QCMGeVhrer0YfVR+dFUZLtdbkZffdPrhoQ+uah/eHov3wbG
Qz8wsg3IYog6kuYQNhI8tH4gj5Q6EJzrDJMrR6nwRM3wDxcPpR5k9Y+Nyv/xcCut/+d1BhjhtGArBabX
P9k1AKH+ayJmoAcwvR6g6aX+JffVA+ABTeUhYPgkgOl1kWX99mUh9W/gjFMB0Kn+wfR6BmWP0J/PeeTb
TiCQhyUCMCwxY0+3gb7XBT9Z/Qv5j24ARNb6Ns0ouLMHML0+OabXJ8f0+uSYnjB4OuyQf7bHYJ8HZ/7H
sKd7cuzm/jrs7kyO6fXJMb0+Oa53p8b0+uTYzQHvkAh6kNoM9f+wbQ78bz97AAUomCyr01K9ov4uulX1
7SX394tGf5z//LO61FZGu9AMgkmxIgNY8TGDFCsiTK9nEPe65kcX/TNQ/4AhZ7QBlpjJYohEiW/Jbhko
ch2kN3BqVcG5zgC5bBgqqKmQJ2IG6odSr5G4l9aX3FcDkD19uj8wvf5JI+6l/j/e39j+vn/4+P0GuvhH
zugBDmoAEPS/nlat+tdo2oAv7PyEDZwEML0eIOiB1wsP8kcl/dki+tUDKNLSA9PrAbIecR/wCpfoF0zz
Kh5LD+zpzlzNFlL5Aw0AEGaJmSzWgVda/o3/uOZnL+cGAGazhXn2YnrCKG8XX7/1iydP92KfB2f+x7Cn
e3Ls5v467O5Mjun1yTG9Pjmud6fG9Prk2M0B75C5AQjFr6uA4log/Ar4v9gAcLcRN9xnBlof++XmGiNg
ihNDMdjlkarq9HG7LBeuNMK+HWoqqKOyTNuFZhBMihURptcDHeY3mp3t+FGggR4giyFyQ4JjIw1Dghvh
VwzBuc4AcRNhkH5KgxFK3UDWqwF4364Q+oAh1APIowZgoAcwvd6SZD1CH7Cl/kWZNv6IVLDX2dsApCGh
3+c/ogFousXy2L4ul7wseag/mgZAh/zxUFwxRzQAlA19//DQVPvaY+CMAIItPbCnO6MGQFpfW8qCOQ9q
AICdiQYATOgDQl+Grv/JXwyoewDT6zWr2SWMcXZien1yTK8PgPrnNX5oD2B6ooanI+z55fKg63/APg/O
jOdmsRTmD/YG/Buwp3ty7OaEPrVrO8jObP/7sbszOabXh/m5nJlnL6bXJ8f17tSYXp8cuzngDTM3ABoo
fp0K0Lb1NuP/bgNwe/mp/iUdMtEDEIZRHqmqTh+oefUADMn9UP8inIpRvBURptdFqP84A9BHBPT1AKaH
2BnpcoyP9xfp7xDiYcSWQRjBVqePXF/pmhrhV8xA/VDqBimIexFaX6wXD0xxhodgSw9Mr7d8Pfxf5H5S
/6I4R5wEML0uUPNF5acj/Xh+P92rMgZT+RVD8KENACDreSly32kAAIMpz6ae0FK8UeoD6h9Mrwsd5pfE
D6GvykKeCGjjqzpgT3dQ9pA6u2P/seeCqfwEMCXY0oMs1gXBIf0R9/VJgLtlec3LZhXRr/jjGgBu7mXV
vMIb0Q/hschOTK9Pjun1Ab6pAcjwmJhnL/Z5cGYkyPpfd09/nl5AEj/kfky1Spg8/xHs6R6G18+hLyG7
OUDNN++8H1L2YY8P+Hdid2dyTK8PwCO/fizHOs0/jOn1yXG9OzWm1yfHbk7wIKPp72Y/G4W/KFf5N0f9
AzwaxAypf6heUX8XvdftcJ+jAXh/f0fuRxvQ2oxdA1Ae0KrCAMSTq/qqoMoZW+27CdPrEOrfTgJ8JAGU
/TneSoHpISlvaW72StNakce9kE2w1RmAYOqwZT9Jr+vnLYOwgfpo9JqryyJnQ9/rR360radAcN9JANPr
LakBAOxQ56HRcWo1GgClWCnT6+JLA9Bc8V/XLz3ALuDQBoD7y0DZ03bq4dXgqdTrJyCAMK1aEWF6XRB8
u7qfz+eIe2qG0FfNmGqJMIJJsSLCnu6AeErp1z/r3QacLBGATbClB1msB8RHD1Cjm2OrqXS/DCA3lzK9
XkP8Pc1/o/hjiwfDIjsxvT45ptcHUANwaA9gemIAHhAN8w9jnwcDXMx/CvP/93MxWwmzjybEfZb42cM0
2oPwWJF/D/Z0D8Ar5zdv1Ov1QS8huzlAyj89vqHpr6+vpe+ZYjSvzTIiAIOYCLA6/x7s7kyO6fUBeGTO
DUDNan4JYdg0wvqwmxM8yDquL5UviR/qX6uxpFWr8En1ivq7GBLu3G0egg/kwke5eKYYO8qU8f5CQHm8
qtxhSEEfSOJj0ErIE5RpajDksSLC9LpAykM+/P/78S7vP9NY0tcAOtU/mB4Cye72LpSf4WltA6dWZVuR
AUhB3Kum7FD8IfrjVmQP1JdMzxAsTa8tQh+eNwttw5Dfgq0UmF5vQccn9d++fpJAL1NePlUPcEQDoFKd
9cv22AZguy2VGTy8+ZUj5NQjz1CwFRGm1wXBaPpF88VfiiDxGRhxW+HRF4KPawBIR9+zRZ6obAZnBBBs
6UEW6xlSGLkH0AU/OvwvCMCv7wxEPNtcx/S6QbDUf83IHsD0+uSYXh8A3R/Y0gCmJzrhcZhfLvVzQICN
x2L6sM+DTqT7ly/X4vvagE358OV17v5TQOvPX97h4u6pSP+7p3Z6bA9wt7r4+H2fxX1o/X/eXsGcghQS
rdS/AXu6B+CRf5nNYPyLB+zmsuLP4p53M6Ya2HjUAzANG8OqHcTFouyMtuOxuzM5ptcH+Lmc0QAcehWQ
6fUBftzcCvMP43p3akyvG0j8jz+PEIZN9/YAdnNBebU3JwEwGqnffhs4vvtb/hfsPfwP1Svq72KPdi//
J3cHJmtYIsBSxoCmZ7wtL9QAFK22/VK5TBGITQNAGMGkWBFhej1A0IfEN/Uvcg/Qp/7B9BCguWWwV9io
fFoIbPY2YIoz2oPIHYmyqHN6gyGZniEYNR8nAVD52LoEiG0YOFmS7seWYaXA9HrL4prgEPc8lWWbBHo4
FUMw9vgGAEiR+i/H/j8+eChy/TL9+GApwiw9ML0erFYrZD1bcku1Ru4HTHGyFGGWHpheFySi7NUDgFUO
W6uEEUyKFRH2dGeu5z/YyVJTvVB68Zdp8/+LgOG/BpDFeoYKqPkM0r/cVroJBg1ADGXJCEyvGwSH4q9h
1eJrTK/vhZrmGcb0eiauWcJG9Ovwv1APkAP6MD1Rg9zfLO5C/T/dzt8fi2fklwHs86AmS//MtD0A0l88
XpQmwFaPBpW/eX+Hov4TrfPwHoB9Q8rDr9dyyL8YX9W/9QBqFQhW1tF3jTdjMOcY7OnuQ+9mUv/YYAF9
2M2hB3hjYWAg7rOdR4RlG8OqjQfdf//nT2xtdQC7O8bl5R3kabbztA/T632g++e3lzQAbA/qAUyvZyT3
eUJl3/76R6gHwK+AiO/E9e7UmF43JPRfH9aS+xk5j24AoLzgpe933/eNgedztUr8QvWK6mO+fjBjWm4W
N2aMYU8DwGPBf8ubm3Ipgg2cLDEsZSQIepS9xH3WDQFOlhTTp/7B9LoI9a+TAE83HfVxRgCMPwOQkf7m
zQsJmIuXaSOwCLCUMSiLu4/Be/EpDUYodUEwUl7X80jiw/tbeTuQ+hdl+vak1Qju7AFMrwMxDGS9DvCb
9M+oAVCYssY3AKtFkZZ/3spHl5UNWCKAsL7D/2B6PShZjbiXvqcU6MGXnVcJtvTA9HpAinoAHd1nxJML
8mh1QP2DPd0G4r68ID8+LheP+fVZpuUF+rL3b4FJphvsT9b9Ly9NR5Hql2nz+mcV29IzptcNxHFzLmQe
ol/IyarF15her1nPLkE2u/prW3rXeqkP0+sZ6rzez4D9lO7HE50ATq3itMSM6Qnjel5ee+h+RH/0AAK/
/UBQJ/Z5UBMNwHy7QMKynbwBQPe/XV0A+8x2wh5ADQCKf/5SFH9s1QMc0QDcrS5etuUMgEDZv60+zwZk
9Q8shfQHEo87CcD79MVme7H9dUQPYE93J7yb8VB9vC5/r9cfv+4wmOK0sE7s5oDnjiGhz39SFIJsG/hZ
la0Uq3MQiH6eUDFtA7DZvEnos11e/Q47/MOYXu+E+24NQHk0qrBOTK8HofhXL+XtOtS/wINf9nAP4Hp3
akyv19ix/8xe9Q92cwGPwI1OOPJQb8tv/lxeXiJ32WqqJcVY7heqV1QniH4+ENmGYQEnguinLNswLKCP
PQ1AeQhuihyxHkDOo9U/kKuj++oBOutrlbCBGzK9DiSGpi/b2ez34534aNRJTFmKMCDRSoHpoRqyVLaG
JQs+FPYQFcUzWjqKVLlMxzUYaPQMuxQNAEZR/+X7vh+383ISIGBa6m9XBBBG8MgGgADUvGR96Hs+S3SN
PtswcEaHIANIt4Km1zPIevT9892irz5Lw38EAEyvC3ZDnRUjhH4Mk/6KYWtFhOl1IJLXM8p+0fzSf24D
Qv2H9CdA5wGsSGBPdw2PQ37lZFiy4BrJ9Bp2UqOU4h3n8kd5oTZlMZjixG6D+nsA0+sZstQAfLxf5wuB
sPHgZ5UYyzJMr9cg8RH9EvpsXzdz2VQO/wCm1zNUQN9vV1dS+eztx583NQC2ZIkZ0xNGyW20vrYa2WPx
NfZ5UEORy/VlqH9t8eC3yOOgDqJfh/+/owegzuch/2ScUp9cXQgUl/7zYg/dn6cEEEbwKTdXGoDtr+N6
AHu6a9ixX9ufiP4i/YPXJc5yN6t4w24OpOwZEvcyfj390ZQhOwcwyLI645H658H53I7uAezuZKT4EfqA
sV5exjace3sA0+s1PMiIfql/oWl5wVTBNabXRaj/kPh5WnsGegDXu1Njer0mGoDb21szTmkA9JP/gMRn
G0f9w5Yf9FeBe6leUZ1I98f4pgYgxjQNAP8nEeIMDB4aG5LpLFnWeMjldQ6qw+ChZ8jGqVVsS8yEUkex
MWRrD6Xsn5pegqWPJH2Y4tRJAMKa8A71D6aHalBR5Er9SMDJwJkFVnMLZYRnJKTEbhtjqm2+6nVSpOml
/pma9M+wVMdbQdPrQAyjHMtv/tavJL6cPCB6uBhqD/R3giOg2F+rmV43EPer1f324Rdb0nN9PAOX/gem
14Hc5qVUjvHrddJUa4d0P0N+hWkwtVJgep0YXs8S/WoAGEx1mD+GPFrVVUA4rZSwp9u4mi2AXH0NIF6f
TLU0/BugsK0ku6Dm3XKmA/zxgjRyjKUHptczZCH30fq/l5egHoCtpviZEmNZhul1Q4ofdOD/alW+Aakt
Hi0N9wCm1w1Ev1S+DBoA9QBM1QBgWIphesJgPxH6ofjNxrD4Gvs8CC7SV36pw1AbIOnPsJhDkeJvjq+1
DQDbbOCPGMsdw0X6sm+5jaYN0LF/TS1mPOT+el2i6dkWu7kE6Gr1S4pfaMqSBVupkagB0IfjtA0A75Y8
DEX9Vw0AsESApRh2c4J7qvcuDCQ+it8aAE1zmFUYD1pfov/+zx+hNmBkD2B3x1APwO4xeEDemk5JU6l/
wLasjOn1Gh37rxuAkRcCmV4X7FLW93sh3ioErnf7uV3NhfmHMb1usGPS+ln3hwEEWIphNyfIkr7HeNn9
6KfkPmiqbwMz3XMSoHpFGeQi919ff4HUuWycpWwVfygUQe6/vrxDW7+xcY6p39sAkKwHAgPJIrt0Azfl
Fz9l0wOwaonjUVnVpE4e+Ck+LP1FKHWynmebRrmVwRRxr8px7D+DkyUC+o79C9NDNeQiqqQ7swBVD6AA
xv3zK8+N7Jy+FxWUbgsBp+IsRVhTuIzwiM1XvQ7EIOUl69mlq+Zn/p83CxS/vgQsQ34CJP071T+YXv9k
ca09R+W/r9c3D3PQEXrZOupPAJHYUKt/CKVeg8SHl5ffQA/AVvU1hfJonNAAMFpp33QCGmoAMPgwgFhl
S6KVAtPrxPCq5jPPegCcNuSX+j+6ARDX80ZnfX197pX+YltJdqEizZ9LL4qw8/UZqwxLD0yvZ8h6e31U
A4AdDQC2GgBWS0yVmDG9bqgBoAhDxp9f5XWenUc3AKRL9LNVG6AGQNI/lgizxIzpCWN+ufxz8xzSP4N/
zNcA7PNAoOnR+pL72CH9hfnh0B4gVP7jxY/m47XtAcKPB5tVTbGtwjBoerS+5H6R+DvpL8xfpof0AOwb
al6CXsr+4/e9FD8GqAHAkPTP8VZqPNEDTNsAsEtF6xfVkHoA2Y2z3McqK2M3J3j7IpGBgdAv3wOeP0j0
s8XGg53DrMJ4dPjfGoDSA5zWALBXof55HO5vb4A3fBl6ZNQD4FwvLy09ML1uoPLvXx86GwD8Y3oA0+uC
fZttnyTuwzByAPFWIXC924V0/8f78s8Lb8t8YB3QBpheN8qDv7vc/3f5G/9F9MuQkwBLMezmgBR92Xe5
aCV+kbPNMJtVYohsm4GqVKF6RWXIWr39ARS/tmHIf+KpAOr/8/QBKH5tw5B/76mAUQ1A2PxHLf9pt+VL
ukzLxTrH9gBRM9S/bIYMFefmLNHIYp0iSDGkNlvsUPZs9TUAXfmDodMCWjqlASDx5aL8WgsGElACSIoQ
j8bj+rWIxNUKA/BYkWGIp6Z0WxZw7Y3uazA2lWQHYkLfM35tilhh3M6XOurPwKlVTRlWRJheD4hHi19d
l/PIOgnw9Fa+rcvAYCr1T4AagKL+D2kAVF+6X2cAtJWR/ZZomF4HKvP0aeiJyzaDgJD+MhRQ/FU10+u8
niX3dYwfA3HPlqEXvIY8BNAAqFXo6wHyc90J6p+XCnL/evMWMMW59wsAsK0kezCbXQm9FBmf5wQ+Pv4s
impnla0lZkyvZ0h8erhD5WsLPHQywk+MZRmm12uowJDuf3u6xmAbHobFG6bXDdLfX+5C95vBkr4NPIDp
CeNbG4DN+1riXipfl/7rywDhjxirMIyE/sf285B/SH+M7IkYqzCMGoDNr18S91L50oWgqcVYhWH0wpCN
xJfur2Gpjj8avSdo2NIA9nQb7JXek8uQ7g/13wwCLMWwmxPsod7lZFPn6v6XDvyXBuC+HAqN1Yg8AlT+
/Lk8pxRkK/UvG/+YHsDujkDQ88bOfUff82hI4kv6g1bx6/C/Vq1CYHrdIH2gAWDV4mtMrwfkMuqLfzKs
KsxyM653K9D60v3w6/FfMvCM7AFMrxvsm0Q/RnwVGCP7LcWwmyNegj40fdnudP9l8zUAhtS/VhXcex6g
ekUFxM8fi9Dn9Q65AQgIKGWr3DGQ+GvzhMr/4P/Tr7YNCOkvCBiuP6TdyWTI0OPCf9TyfxXRTw+wk+yK
ORSlq6DVpzhb9QB7i4dSDxEW5wGw8bONi3welkuQLacCokiN6SGDXBoA0M1pYEvrSyMycIZAtwrDEH9i
gyGZXoP610U+7BXjebNA8esMgAz5CbBEw/R6wG7oeLx6AAa6P5Dn5mHO6oD6B9PrAemqjyHdj+IPYsqq
JRqm1wVZPMJ6VDE0YsrDQkDzLYCi8JjixLAiwvQ6YXzgMTD0av8U9w/lMsHZ9kkve/lR/7JlWDXIz3Un
l4vHIvrnP6IHKEbTFZzYALA/FJHoR+jf3d3p9Ynx8lL+EBg2MZZlmF43SGesZpe5E2CLR0sWX2N63aCC
FD/bBz7Jfj0I2fITY1kZ0+uZZgfbkwCd6PA/wxIzpidqnn9u1APoe8Da4sFvkZ3Y54FglyTupe8h1H/u
ASKAeKswDPES99L34te6/EUeCE8EHFFf4l76vtg79S9a5y7g0PoZcvVrP/Cy/fyKsK7/seDj0BsFbz7l
8NhNef+Xx8I6safbYA/1bsb2U/03DUAsWYphNxfkPcR4vntH+r+tbthi56WwD4V9K0/lc1H8soX2XI0B
tmUZdncEWTQXbFfX11L8PCZshWz8rCqSqVUITK8HP5czIB2tX/Z21wPIkIdVhVluxvR6plb/s+27eQau
/heud78S6h/prwP/oDZgZA9gej3D3ZfcZ7tFqDSKX2g65iSA3RzBiPuXxUVuABD3OlmNBJUhua9RGoDF
RbQETvWKCubrB6n8aAA6OfokwM3iRir/4eZBDUAGp4zhkwBjtTv/S0OgY/BYFMHejPIYVfFjKI9uk8tW
pVRfAkgeBQwgmU6YdH++CijGdrZ6uinfl2UbBk6CSQyt34npIUGWBhLno7nggZrS3yHHGZLjClC81dkL
KSc2GJtKsgs1AO9vTzrSj+KXDRhqANQJWKJhej3T7Oy/0PeofF32Q02GdL88svvUP5hez6g+Wr9c698c
+Jfo14F/GXtPApheF03ZovWR+Gw15GGwKunP4O7Ij21FhOl1UKJe6nQCOsCPRw0AnmgAJPoVyVh0fRXY
nm6DdF57utqHbcAU/1QNAIYaAAZ34c/iskybH01iybIM0+s1aP3fT6UHgD9/PmTIY5GdmF6vYQ+l9SX3
RUxZtXjD9HqG3Nfmd37iJEAGp1YJs8SM6Qnjer5a/1x0NgD4j/4VIHbpcn2J0I8GgKc11H95le4aAKZE
Em8VhimP6sWP3ACE+s89gAKO+EIw8Rf6vm+j79lhRghETdsG4P2kLwTrD34Vmot8vtD4T//7X+U//oL3
tzKiAWDgZMmCa+zpruG+l4djp/uzzZIF19jNdaLjHdfX19vLRVz6bzHHQSk9oXEhUHlCFxs8GKxafI3d
HSCLu8+Wgcpnq+P9GZ0f0Kpahb4ewPS6QNO//r4XkvvPq4WkP2DjwYiYgR7A9HqGvZLK522TLepfhAeI
sSzD9e5XkPjPN+U8NaD7hab4T2wAgN1bzS8R+r/fNvkSIMDJUnn8q6yM3Rzx+nFPbRnLRbkWqBGbn0NX
/qgNyPFWrVC9ogTBOvy/l+NOApDya4NgK2cAAIM3TNnl7TT5YaD+KO3OGw3vO0WD7AYV9UhhWPARtEXT
GF9fMl0KjIEOlqFLfRrBNtP7JmPW/MEvHfvHv9i+gGxGiP6M6SFBSoh7KEYz9NYsdY6ToWAZ41EKAwlF
fbZl945qMDaVZIe41EfGy+JGW6Q/5CkNgGLAigjT6wY3oev7pfX/aX7qRzZLH82PdWJYVsb0uoG4VwOg
HiCT61tWxvS6IIWHF5WvLQ9+83h/NgA817PtE2AwZViFwPS6QMrDE43orPyipYS+pD9Dn5c4ZbDVwLY6
YE+3QQoDA9F/uXiU+pehPwG2twfYVpI9o/qMkP469s8UZ/zvsKxMFus15L40v/yD4teBf7bYco7pAUyv
1zysyjd9JfpzA8AWP6sWb5heD3h3WS7L/0okPh+36/VWol/NAFOcUv+EDVwIZHoiUx7h3zMUf3nk04VA
2HiK/3epb1mGfR4EJKLsdZW/XuQfv++L+m9+zB4PfgUwtdwxkIWy11X+Otz29ljaALbYePAr4Oj65UL/
5ip/bHa4KMXf92Xb3B38CjiuPsRPAJWf+7Qe4I7Otf150FN6AD4K+RDUm8/Hr20gD0sEWIphT3cnPAK8
lfKwxGCK08I6sZvrRI//0+ObwD76MTfQ+pQqJwHSlVeAB/9xlwCVvU0NgA751+gkgMKYsrU6wvR6oETp
e13tw1bI1lITNXQhkOn1DIn6rU8MdH9TqQzZ+PULoZZluN79CunS+r+217r4p5wN2F6rK2DV4mtMrxvb
+fJtXm5FbQA2npD+mlqKYTcH2iu2DKl8NQAYD81XfmWzZaoD/wSwzUU+qV5RQPBr85VfxL3aALa8oUnx
Y4QTCCO41K/q9FHq745rSOtTE1uin8FU6r9MqN9/kvOABiAPHh0qMizyaOwm1AOMqW96HX2mrS73l77X
wNlWb04C4PnYfRV4i5ZoBnauBqaHghK5U/l6lEOgy/lyURSbZY2ExBD3UIxm6H0/34qCZXSyqSQ7Ul7V
/nks5wGY6sA/IPpBNv7SD2zLXwRTfGcPYHo9w14h/VH8v+8fMNgGTFn93fxkJ4YlZkyvGwj9l+fyk/b6
xU/x62nFNNe3rIzp9YAXQ2cDwJSbo2bzkDQ/z9pMLT0wvS7UAITcZ/CCtyE/lcOwIsKe7j5C+kcbALy0
TmwAYDYr1/hm6c/Qpf/x6rWUTBbrBokh9Nl+vF+j/vXjP/IAMZZlmF6vWZcuopH+fz6iAZCNf/gbwGB6
PUDTC/4DUY39jPMAGExxshRhlh6YnjCow+Dxv1j9jAYAW69JhsXX2OdBRhWQ+KoW6qrYHx+S/gzLGo/S
kfid9SX9GZY1HqVvrlvFafXxN+tH1icRoY++L0Z9EqDxsEQA0+NuhTeBi+0vtnzaZvUvcEaAJWbs6e4j
vlqmwdQC+rCbq2H3KMgDzrje/WkwPMO7PQb0vS70h7vVxT+v/xLYcmrVsgy7O8h6He/H0BU+cfh/s3mL
LegkgGKYsrVSwvS6QZbG+vkG0P0yWi8vmyrFML1uUCEO/Jcr/j8+2IaHVYuvMb2ro/uATToGcr+lufKn
nATYeaIHyFmG6fUMuUj8gGkMSf9oDywxYzcXkCV9L7kv9S+k/uXX9PLy0tI/qV5RQHE1ABrYEuhqADCY
WkDZn6pOH6X+rgFgSPdTU8f7pf7VCWhM1gC0j8vOxm+RR0OpPHRD7LSF1ZheD4qcb0bYVNOIqZoEjOfZ
Jq4gYprrmB4SJWZdvmrMlsf3/rk9MI+foYt2bn/8BEscj25CBfUsMhVyjmwwQqkHagBQ/0CFaAB04B/U
A7BUrhFqGgAiSTm6AYAwpP5R7UAAw7IM0+sG6c1jU0b0ADohQBug+pZimF4PSIwGoGj/dEJAZblFpnoh
MSw9ML0uUP/r5kvAYVBBQl+DqfyyGaVhqOqAPd2doPV16X+gNkCVLdjYVpLdQOtL+mMEagNU3+IN0+sB
iW+vj9L6OuTPtvwi0M5WD0BMiazSA9PrBvo+FD91Wru58if6gaN/BQhZv25+8p//Q5L+7DPIxskSAQPq
H0xPGNfzlQ7z63g/6l/nBPBgTPKHwCiFoiofV7/v3x7LBe7YePBb5HGovirH9q+oTwVGe/i/qwFgSTGW
OBI+B9H3vMn8eriW4g/pzxYnS5M0AMj9p7vVr5fb3+s1YDAd2QPYzWWaT/LyK0DaxhmA8DTrx7cBPLBI
/LYHaH73s6WxtbT3wc/3JR/sl75nLK9+l0+Xnb/l40M/EEQDoCziMXI1YXrdoFeX4seg2ry57j+c6gQs
xTC9XkMFtP5yuVQDMNuW7waMVP9gepcslP3nZT+h/ntQmE4RlPvytRqYXs8Qn4U+6OIfOXU5EAZhlpix
mxNF0O/kfqM0P3sAGeEcOvYvqlcUkJL1vQa6XIf81QzkcUQDcHW9VQ8QnYAO+euEgEYEENxX/7AGQP9j
GTw6bC3saFQwmgpN2WML6ySL9T5my42u9inCv1FsUvwYDN01hlYZOdf0kFAiQ4qcN2JNJfrhffe7PZY4
EhIpW/YkNRjQ3MhhDYZkuiGVT6la+me7vbmd04oI0+sG6dvdr3wGUv/4y2qVYpher6FI82ovo/xZgMVP
NQDAkgXXmF4PyOXxR+6zle7XlqGlcnO7591yM6bXhc4AiOEGIEdaEWFPdydo/dwAoP6pbzF9bCvJbmTF
H0NOi+zE9HqmPLK8/HaXAKH+hXoAUIBlGabXa6hQhP6fj89moBH9agBYtXjD9HoQ6l9yX8QlQAEBwz2A
6YkaKmwWd/PL5e2qSH+22HjwW2Qn9nnQB9VKwUY3M2z1dFT2r6t/syh/CdjVv2gagBOv/7nYbNlK7vMJ
pQYAQy1BBFhixp7uGj6nUPwf7O7dig9IwGCKc0wPYDeX4XFG5Wur9+dsxKpljYfci5unVvpjyJahNuCm
iEjLMvJ9ITgkfjQAm035T4onnwEIPyNOEUDdA5hez5Arlb+4W5czeG+XAhuPrgViWJZhet0g/X77gPrn
3UxbwPnUXCltwZ243t31ANr++V2UK9si919u/nnnHatcApT9EW91hOn1DClZ6D9uFmoAMFbNXwfDJsay
DLs5oa/5hvpnxEX/Ev3ywN2svAws/QvVK0oUgZ5++1+jz0Owpe+FFFjdvUUDwKgP/BOgSEsPRolsHgIe
kUYkf2p0izkF6qs4g/pMGRbTRxbrnVDq9+Nd+e7v7ur/ON7PzcnWTRfBXaWbHgqoI41e9vVf5WL9uBBf
0hzDUsajOgzp/s4GQzdniTWS6TXk/vP4IHGvswHPG57a8ge/MCCvEmzpgen1GnL1cz36qR+mn0YVXJPF
eidRn4+rtunafQfAIjsxvZ6hAs8vIzcA8VzwH0wGwxIzptcDJUrZy2aE+tfIq5Ye2NPdCemI/twDWMAA
20qy10juZyxgANPrRjnMf8/z2yr+jE4CWHyN6fUatP7DqvzYP3L/7en6nQ/25oqg8Fu8kcV6Bk0P7CEP
vqT/tvmzX4ChNoAlpoq09MD0RA2K/+l2Xr5pebkU2HQCYw7/g30e1JQXXyOd3x7Lb97H4XOGRR6HSn1r
/cXsUl8GENh4pqqvHuBlW3Y+YHqi+hf6qEXrs7dS/0JTrVqKYU93TVOq/Pw/b55SscVoPCxZcI3dnEGF
GNpbRjtvhsUfChXQ+pePf9D6vm2Oqlh8Tb4vxD81fxZN6j+cy6vf980fARDYOvyv1dwARFZgej1DMAOh
/3M5Q/EX0f92KQMPS8O//yNMrxsUQeu///oj3c8WG4PtyB7A9W7Dprm2h+3b841UPl0M6h9oA3S8Hz+r
EWkVAtPrRtnD5ru/KH6pf/Ha/BIow+Jr7OYCcmkDUJsMDMl9ocqS/hqW+4XqFSU+BXoj8QXT2jMs0PtQ
lkDoi7b+bppjLD0Yq7N5mKSS+Q9sS5Og+mwPrW963eDJk4YrY7nBox5AQ25uV/0AnpwrTA8FqsCQzZum
jvrHUkQeBxWswZARqyN7gE0l2QNyJf0xJPox5GfczsuVP8PqH0yv15RSS+Raq9HlYeSYAUyvd5LrM1X9
HDCA6fWM6jSvkfYngEL9M3QqgGFZhul1g/TmM7EMVauHpRj2dPeB6KcB0LF/hq0OsK0kew2KX6/Gg6S/
ML1ew97qi7+G/iKYBdeYXu+EOvq+b3lomjFS/YNk+gAqqE5AHrUBckJEdmJ6ohNK6bIf7DgPkAMGsM8D
g5qhyPWFYCg31Oh1DIs/lFxfX/yFb6r/eltqquxU9YUK6jdAM5PU553h10M5XGINAE6WLLjGnu5OqMZA
+/7a/hTyWFgndnN9UE17qze6vHQiZT9X5Skuh/yD5logi+zE7g7V9Oe98rF8XeTDltWwYxWnegD9HFD4
hel1Q0L/YvVTR/2FpmDBnZher6G+eoD7bfvJjo3nlAZAqBpyvw8FWJZher1GRbbNd39D/Qu6AguusZsT
FETfS+6jOevD/M1t7tnzluoVFWT9PYwljsSKDGCJmbENAA8HjxQDw5YmgbK8NejdwZaGMb1ulN1uLv7B
MH90AlJ4DNoApjkMTA/1QaKuzMGwpeMoe7Yb9SmFTmcnm0qyZ3S1DwZ1dNoIo14dwPR6J2VvaZCa63+w
bXUY0+udqP7IH/43TK8bVNPQK0R2LEXYAKbXa6ijVz4D21b3Yk93HzrwTwNg/r1sK8neSXk0fhYO7QFM
r3dCcYZOjzDoB6DcYhVZY3q9D91E2Kh//THgCOgjlPoATe3P3/rE3jZ/CTg7+zA90UdzC+0hyWgGxmCf
BzVN4X9dzFtRiHH6138zKqUfApJx+td/MyqlQ/4MlCKdgGyLPAUV1JhQ/QveGbbLC132AxhMcVpYJ/Z0
96E9511UW/UAFtOJ3Vwfuze38kCN3PPxUJMh0Q/R5llYJ3Z39Le9skeKH4kvP1vJ/egBMMiKcwKG6fVO
SMxDbQCGhXVier0TlV3uxnj1D653K1S8c1hkJ6bX+1BB2gDQ9wHGqH+wmxOqxhh7mH+A6hVlZCFeY8FH
YAUNC645oAGIYUuT0JZuhi0NY3q9RjXNCeGXoYHIyzFgeqgPckcq8iNods3LdjprJNP3Qin9BiiGLQ1j
er0Pyh505U9ger2P8lAccuVPYHq9hoJS/wxsW92L6fUaajIkbTFsdS/2dA9AA0B9c+5lW0n2Tqh8c/kD
MGxpGNPrY+AmGObsw/T6SHQT5uzE9PpIVN+cnZie2Isqm3MA+zzYi+qbc0L+9vrwHTeBaGag+yX9GRbQ
hz3dY9D+m7MPu7n/BrT/5uzD7k4NpZD7bAc8ctIGZI8wvT4GSjHM2Yfp9TGovjn7cL07NabXx6D9N2cf
dnOGSpnzMKpXVB8H6fIjOK7+AWpbD5Y5J+S4+qbXJ8f00ADaf3P+x5FMH4P235x7Mb0+gOqbcy+m1wdQ
fXPuxfR6J6qsYUt7Mb3eSVu6fGj50l7s6R5AN2HOvWwryd6H6ptzL6bXJ8f0+uSYXp8c0xOTY58HZ/7H
sKd7cuzm/jrs7nTC29peTx+m1yfH9PrkuN6dGtPrk2M3Nz3VK+rv4nuPhfwb2N5dnzlz5sx/OU1/1A5b
OvN/FtcTU/Nyd/+9rF++Fbs70/Px8b3YzU3Ny/vzt/L6vv1Wnl7X34odj5uc6/vNt2JP9+ScG4BvYXZ5
YZ4z381ydhnY0oSsL39mbPVoWmGYhgUcTVSrjalQQRsW838cHpD5Yra8ngPGtI9P83h3DAs7mquLn6Jz
OgmXlxeGBfyvYp/Hk+N6fXIqyT4tdnemx/T65NjNTY3p9ckxvT45ptcnx/R6H8v10rCAPkyvT4493QOs
r68CWxrg3ABMT/nRucX83APMLy8EditJvkcXSvQ/3i+CSdoA0/dS/A/rWeb0HkAPy8P6ypDfgg+FCtfL
uZhdF2J6enFo9vFf97fX+oX7AI+WLP6/FtvVSfa8eQDaEeo/9wAxLPEgSL+/Xb0+3Ro4T6wsEPo3y6v7
9YytdH+eWvARSO4v53xuzQOm07YBqpaxgBO5ml0aFtCHfR5Pzhex/h1Ukn0A/Y6IOYexuzM9ptcnx25u
akyvT47p9ckxvT45ptdrJPdffz0YI9sA0+uTo2e5+ZTo/a4Civ/p/urj/ROmA21ArnZuACYgtD6G1P9f
1wBcXV0aFnAoRfcv53C3nBd7u4HV5lMVWfzRIPTvNzNE/93NdcAU5yk9gLR+6PuQ/tvZ7GGBQJ9M/d8s
L036Byyd+ECRLq3PuERU7ZDHgg+FCrX0z6gNsKz/QtjJ1bJ8Q7pzehyk16I/MP+ht0W8UtjebpYm/QOW
IkzGoSDxZ5ctKP7r+QVghPPEHoC9ytJ/dnUJMWXpuN3OSO5/X4Mhuf94dw33N0sZMLINiE/lTprnrfuD
f2Ap80WsfweVZO9kdlt+b1E/NIfB1AL6sLszzPXi0jz7Mb0+OXZzU2N6fXJMr0+O6fXJMb1uIPG3LwsT
/TFlaW8PYHo9uLpcgjmPgKeY/+bS9J3/3xH6rP758xHqP+jsASiibkHVzg3AqUjxZ+kfDQCfaFO1AT+r
YQFH08r9+3WWbkxPaQN4baH1OxsAeVazyTTozfJiMb/K6l/gZOnomwjFj5HVv8hLlngQ7J6JfmOSh2h2
Pd/crbYPNwFTnKcUJ3dA/bMklsde7jK/vARzTg77xljO5nUDgLNZPGbnycoqfza/gsfb1e31TMgTAQf1
AETeU6oR94y9DYBijjghIPUfx/ul/qMHkPOUHoD9yXJfutyUOgGH7naG3Fxw8gaD9FD8kBsAsbd+/mw2
yH2bl7tvfjG8GnwR64PcNn9IUdjSEJVkN9D6sH3ndf9DDUBMwYJr7O4MgPr/+PN0cA9gen1y7OamxvT6
5JhenxzT65Njel1I1tfqP7ZB9ADa1pheB0l/WC8eTu8BeIol8VHt0QNcLWagJZz6A891D8CSeoCIJ111
WNXS/5UGgHtuwwKOg8+UkPsh/YWWTm8AJPfX62tDfgs+FCT+8+ONqbeApeN6gPLwbjcI/QDpX5hdAdPc
BljuQZCO0Bdx/Q+E89D6i+b+huIPoc/2U/0vrkBONQBsgyi1F/ZtfnVhit8g4JSHiFy0vql/If9xxclC
3D/cr/Q6wQg7c1wPIOkPqPDJe4Aorik7Jq3PVjcHsq0rsMRhyIoGQNL//ek2NwDyRA8wvgEgDGUvNb+5
LlkS91n3C/xqABSmGAwr2Aey3rR+qP/aeVwPwM5YA1BzSgNQ15+2wSAxC32GGgDZeckSM3wGd0IW+v6h
+V1dWxLFf/ljbw/wRaz3INH/8f4SHNAGVJI9s1gsNi9XyH3AuH68gOzZe0WQ3Z0+pP6f75cH9wCm1yfH
bm5qTK9Pjun1yTG9Pjmm19HxIfQhGgA5syHUAMgpwwqaXgdJf7G4Kn+qNfxBBOclcwrSQ80D06LmN0tp
evUGfQ0AEKBIpZAeDQAw/d9vAMqd5GN+PYPL2U+QLb8FH4SO8We538kpPYCk/83NOkv/zCk9AOLeFFsn
R/QA5YFtDvljSPRrChP2ACTq8L8uAQqe7lcyWDroJADqH03PFh0vxR9X+4T6D0pM0wYoOFALMQZ2DH0/
0ANo9ZTHRyp/oAGAI+qTInGvNgBiGjyl8wMH9QAhwaXC9yaO1+UQxakMeKgfN6dSMdVNKzICotQAJCLu
kfVF4vO/7Ok2NwBS/yLCRj4+hKHjowGQymcqIxPOoxuA0Pem/kVePaIBYE8Q32CKPMOSYsbvdkY3YTWN
U4qHxBdXu781FlcEBTgtPTA9J4i/m/00cd/+LRLelFIYMfXfMc24Xt8R+t6kfybHyOigkuxBVv997O0B
7O50IvX/z+uaBoDtYT2A6fURzJvXjDl7sZubGtPr7JiG+Ydpc7qyTK9Pjun1yTG9Hvpeyn6z3dMAEIAn
9wlW0PS64F0tegDggaUTMPSAaxCjHqBuA1iVWJdqZ4uOXzwsBTbOgQbAgqOIVsttm57+67D3U4M7iNbf
3JSPQAZGttUGWMpIkPX1Uf9O1ADwWZPTxxDqX2TdnzmuB1ivFgPH/jOEEWzpe9GDXK75iYt/vqEBQOIj
9GkA8g4j+nFiqAcYX18NgCjH8ndan2nYRqv+d33CePWPsr9ZXkri3yxm9k0Apjjb1SbM0sfAHQ+VD53q
H454/ElB4iPrpfVloPhb7lcCJ8+CYg66lazCgVw8bDWyzZAuF1anE8JC0Evcq4hsoRsNW6sj65OIphe1
+s8NAAYBEUyilaohRgf4EfTbzUw9ALb1APIAAYTJProBmF22ZwMy4TyxAQCE/vZu8/RwGzAN9Q/jdzuI
+t/UYJjKZwo6AyDbVi09MD0n2J98+F+6f7Mbmips70mAL2J9RxH9v2/Ywp+XB9P9AUuKUbAVaakke1A3
ADoDkD2TNADcfWsABh4Qx/R6P+h+bfk4LPWrgG7s5qYmi3X2an11+etmCdh5aQAilUJunWV6fYCrZfnr
xWzNP4zp9T7iu4lm78X0OpjWr3uAkPtayvFWCkyvA2856PtQ/yH3ZcSUETHB3gaAaZHym4bm0L5WO9U/
KEbxJKraf0UDsJxdHISlB/Z+muHehfpnG8f+McJ5XA8g6T/QANgJgYi3OgMg65fLOfo+GgBrA2IV44ge
AE2POLNL/2sUcFwDEKK/1f27q4Cy+hdHPAWkIO6jAZDiFzQAbPGoARh/EiAaAJQ9/3FN6A9MQYnjewB2
qaj8JWK0NAD364WBsyw1Mcc9PvQNWej3oe8EW/owxGf1b7o/UAMABzUAWaBLeUO5xZ06x2ZEQDBSoINu
Ap62C4jKRl49Qv3TwCH3JfTXy5kRLYFOAiiedCtYQ4waAFAPwBbmC+q0yDOh+mcKr48bkB1LWj2oB+Dj
m50JgW7qX+QegGBSrMgwUb/zJk5sMBD0N+t5fcV/7QGcBPf1AKbngJ2RrL+b/fzRjKKkvw48WtKJgoEr
hb6I9QYJevG2/Wmi3ygBu+DuHqCS7EKX+OcGgGn+DoAgQJGWHtjdMR6XRUuF+t+s5rkHYNXiOzC93kPo
frYy1A/sx25uarJYZ6/uF1edDQDTPGxJKeTaEphe7wPdf/v0/vbPx3r7clAPYHq9Rlr/4en55e0dgz1k
i41HSxZvmF6HEPQh7t8fboBXO1PAkCcCIthKQa3X0fdZ0/PaAf7v8D4kD0b5P9j4I0x+qwYUlFiPBiDU
PNtY7UPx0TMo/j/fABRBfzN73l7raFYYnbBKcF8PYO+nGe6dGoCQ/hm1ARiEWeJeJOgHLvuxJU0PbQBC
60voZ/DM57OwD20AdPif/z7SZ8MQdsRJgPnlRRb9gOIP5AkOfQqIZ8ck7iX04yogPEV6pilhBI+8CcLU
AARF0M9mT82F/vJgMI0lcZD6B25IR/cf1lcm/QOdCiDs0McHSIkGANEWcj8I5xENAJAyrP6FeoDx9YlE
bWdZLxV+jUpuVDtbbDlz2BHqH4MiV9cztvI83C5AdizleCtVw/5nQa8GALl/t14YOHMDwHZkAwCExdtj
bgAWqznkBiDCxj8FSHnJehEqX+pf2JIY2QPwfrK5WehHeDrVuQiNrkhSSLRSfRBZnoge9S9yD0Dw+OJA
PJo+9wCS+AHTrP6h7/E3PQdEIuiBe84I9X99zWtlxlZT/ApQcMmqSoHr9a8NQKES/V9IkQc1AGW3X65E
XwMQAQRbemB3J4O+/3gqf4C8rwFgdX8PYHq9BzUA0QbwflMe8CqsA7u5ftaLhTD/MKHU2R+J+OfV3BoA
7OfH7Z9fbwLbVoknS81DXgLT652E+ofn3x/Y43sA0+tGSH+4XpUzDLGVU22AZWVMr4ss67cvC6l/A2ec
CoBO9Q8m1uMYf8j63w8XIpwY4YwwnGMbgN0R/RD0AdPaE8EkavU/3AAg5W9Xl3wmoexFfEoNQEpnD2Dv
pwH6Ph/yl5HJq2Dpw9ix/87j/XV7ML4BQNCj7yX9w8gsl/Psxx7fAxyk/gXBB/UAvK62m2Xo+7YZ6EJL
BJeUqk4fBLNXagDUA2TF//Z0I6dWj2gAogeQ1kfWs1UPIE841RXoEqDx6h+4IV3ko2t+kPtxHkCG/KVJ
OOQCekH8Y6Ps0fcYEm2S+0IelrAJwzjoJghG3Ev96xWSRb9o/fo+wP2o+sRIakMo++1mLmIpPBGDc3wD
EEQDIKEPagBkh/+gytwFSXn0PTb6vlP9C/UAhGEc2gDcb8pFSnF0H+LwP8ij1Qi2In2gJSXope+f7lYy
9JoRWmUpwoBEK1XDbiDlYXGNdi3KHngDM3UOOCOAYGWNuRe8WRGpxDENgCJJGd8DsBuS9UKif7u8CqIN
CPr23PQcEJkbgFD8qP/YMvAr4NAGgMg4rv/75cJ0j1ECmkhSSLRShUqyi9wABDrYb044ogEI9Y/cb9X/
1RwPW/UAwOr+HsD0+lf4zAMMSskGqf9Y2oPdXA+Li6vnzUpg2+oAkunsj3S/pDzgiaXH7V2of4EnBygl
0mMJTK/XoPW3L7+l/tUAAJ6RPYDp9YyO9Adz3jNWa4GdlwZ6ANPrAYIekPj8h7LXvPoBRL96AEVaelDr
dQbvOtEGSNnLDvqc5FpBfc0XMBDuUOrvegBsrYpy230NQPoGcK75n2kAHm4+D02NpO8kgL2fBrXoR7IF
tnRoAwC5B0Dr1z0AZOd49Q9qAHSRTwh9TUWsyg8HNQCQG4DOZsAClGWl+uClhqaXuGf7fL/KPYD1A0yP
awDuboqBuIweQOpfDQBIdxJG8Pj6JbI5oo+gD7nfBwGEHar+BTckfS+tnxuA8Bx9+B9NX3qURtyHbsvq
H1gigLDjGoCi7G+vN4sZ8Ah/ngdougL5D2oAgDAG0k9aP8S97Cz3s0fOkTchVGF7swzpjx1EG4Ctm7P0
PtiH3AAsry5N9BsEEHZcA3B1UTQZWwn9ms+AoxoAEtmi8gU2rxkZ2akwGNMAAHsiQY+hA/CS4DVaJYxg
UsbcBQUrPupM22AAYaHsry5/rmcXiH5tw2DLUoT1VTY9B0TmBkADxV8k9W7beptxaAMABEv9j7kESD0A
KVakpZLsgnj94A9g2EFWpnm1FK8qCLs7Qur/16Yc5pfWl/oX2NEAELOnBzC9nkDff/x+AwxKofuz+o8l
y3Ls5rpA8d8vFtEAYI/vAbKIl4IXeD6X0uF/kU8CYOTEMQ3AYtOCyg/pnxsAwWpEWoXA9HqgY//6bqtU
PnsVDUDZw9QADJwHML0eSP0DpV6XS16Q0QnowL+mihnfAAhqaqDyIav8jFbR/RmycqneBqAR9Fott9TT
CRSJn+L/KxqA9eLyoAZApwjYlsSqmr2fCjTNy8Mm63s825trnIBRtFHqEHCWgKpOHz9+/LjflJ/4Q9lL
/YuQ+yICCCbFigwQDUBuA7Lif7hdyROMbwDg4rJcJQ86FbC9X2PIE379KYDwk2JFBuClFg0ABg1A7gFi
KWBaUqo6fSzmV3fLmRoAhD67x9uCRL8aAKY4mRJAGFNSrMgAkvXS91d0eqt5Fv0CJ0vqEAjGsCJ7Yd8Y
KP6X5goNqX/BFKcMhiXuhRRpevS9Xpoh+gP5CYhgKzIAwSh7tjzIkvs8FLkBYBpLEWxFBiBYA40GWegH
WkKdZ0ixUn0QqRSpfApGEWCKkyVNx5cFgj8bgOs5Kr8cLKikv5wEEKYGYPytEPnYXKsjcR9GYEsEjy8O
6gFIZDu7/MmrZbHgv0NpHaX7mZaXUHPsX2Ej1b/gjSU0PRJ/2fU9XR2eJyC6BSvSR05RCxFC39AqYbEz
VqoPIkP9XyP313PkvoGTpegB+oqbnhMEo+nvZj8l8d/mpQHIA48GMQPqH1yvNxCPsof2G8BxnY8EepoS
oEhSrEhLJdkF8Sh7YepfqAcQpXhVQdjdEdEAXC8uBxoAVk9sAHibkdB/fyvNhtQ/tpxqCSzLsZurkPp/
fX0HqX8xsgeQgl9fXcbFPxBf52V7s7pG8eMM9S8bf8TEV4epQJ38bWDT6wJBv335rcP8ww2Awg5tAFDz
m9tblH00AOwPn+I4Rd0D4OzsAUyvZ5D1vAipQwMAGHqhsi2Xye1epQPqH7JYF52y3qQ/xBK3yyBFhlV7
4j40ep3ttA1AKfj0+h9oANiPkZf96AKhaABItFJg76dCDYAkfjm6v5P+GZwRwPS4BgD4IMfW8f7AnCc2
ANmQ/fp4Ez2Atsc1AKj88vpov1XvsBTfEj6oAQByrQEAbCl+9QC5DcC2CsPQAJTda25IKlPSX4RTATQA
kTgGBH00ABL6ReAm9S8PS9EAgBUZA/sWB/5rWNJdOAISGWoAMD5fmjvkVAPAsPS9KEtH94v0D/W/6wHk
IUCRlj5MLe4l+m+vWyP8Kk6wDKvTh+KjiApGWZsCwaRYkQGafWn/FAAq//dbkVwh/YEpTgwCCGvCD3uI
lCKVz9sjNi2F1D8GU5xqAJrAw4qrAQhxz3+lq1l7CZDaAKY4IwAObQDKLm2Wkt0MU/8gPwGEYZBiRQYg
+PsaDKErfND3CP1y1oit0TjVAJQLhKoKwvScYGd0XF8qXxK/1f6bcnwxL2nVKgSu13eQgrgPxVM3ALFE
GMGW/kkl2QUps9sf0vdt2QqtElbqVxWE3R1AzSPr8+F/kFNdAXb4iVFwbw9gej1BLlofUPnYeeDRErZl
OXZzO1SHgdZH99/d3UM0AK+3xd9G9D+5IAWPapdwz1v8z4/b+vofgV/nASyLLeAfbgCQ9nD79I6+72wA
8LOqsPENALfLQHwg6LO+xxnqX+DJAXjIarL/lQuaXhcKQ9lL6GvK0Gs+QwBhWrUiwvR6lv5hy0D0P294
rhdS/7bK1koJNQBS7ZLvt7flPy+DpWgPTPcLSfyi8ptBYjQA7fa/uQEI3X9cAyB9D2oGOinCTV8AaM4J
WJEB1ACg7+F5u8Fmq2mn89AGAKIHCIkfttR/bgAOUv+gBkCH/3lU2XaiJZ0EOLQBgGgApMVzG8AUZ7QB
h6p/0hlhIzSz+hc4c4yMMfCi0NcAMHTs//XxdrNi1vYAGExxYhOQ463UXi4vytGvzh5A6p8ASxkP6dwZ
VL4ef8n9aAlwYhCAbYkjIRF9Tx2J/k5DDYAlDhPqX9sARa4GIC9FpBUZgP0hJbYUjMpsw5Dfgq1UJ4Tp
cL6+CrxuvgOgTiDQlCXFRIqVGoZ49Dfo+6Y1Wj20rFAPMGv+ErCkfw1LOglwkPoX7BUqXPp+e7exY/OA
kyUCCDv0Lui9S+kYjND9gfzaAQxSrMgwpKgBeLm/frlf8UA0RkszXRWjaQAItvTA9FxACspev/Evra+L
f9hqin/v4X/4ItYTZEUD8PHxcbO4b88GvJej/kzL13VPawAY6HsqPKz9e5bhJECRlh7Y3QFpfbZkSeVv
VnOm4Qc80QCE3+q0mF7/CulS/2+r1cf9o8AOv8V3YDe3k/46xt8e/r/915+Hf+n6H2AqIkApVkeoAQj5
HgoeA//by5MagOfV3Lb4WY3cnK7cgQYA0PRXzXd/Q/FHA6Cj/moAdBWQ5WZCqUO5j81Xfq9XX77+iz8f
/hf5JIAuAcIjG3/UNL0uCNhuS/PDsFdmhiXFKNiKCNPrWdaj9WXLsAYgrw70AFLwodoBHX99vQGdHmHH
QvE3O/tlqhjFWwPQ9gamp/8NsFtjGgARDcDtqrworRTY+2lA8LD6F0XuNW+ylr4XBD1DWv/l8RYbI2CK
E4OAJvAw9Q/1SYBQ/8Aq6ooe4OgGYN18FRijfKHv8kKKPxNLhBGMYUX2khsAjGgAgClOffQeevifFHu+
aMWQmxL9YeCMAIvfS4nf/QSQGgA8Uv+CqRqAIvqbyENvQqDvHx7LIb1l82Og2IDBFCf2KQ0AUOSRx353
1F+6LaaHXvlj8BpZNlf/l5fi7lu/MmJKAGGWOEBW9qhwjOvyWzptD6Ar8gEPfhlEHtEAkCIDlV/Sm8rl
qO3OwMkSNmHYMqxUJ4Sh5iXoi83/tZ5fAWKpjdnFW6kBlMhQA3C/WWTpr+nR6l8gLdH3bDt7AJwRYIkj
4U0mGgBeJ9LrvPoxynTXABBmiWPgjqPy2/qbpXUXID8BagYsfQyofN5ltut5lv4ZlggYOPwPpucy7JX0
fXzfNwaeWLUsw/V6gtxW/TRKN0ufMt01ANiW+IVKsgckzm5/lJvoqc/S8OF/sLsDIehJbBuA5pofPCI8
QEzEW50W0+sVVMjqP/cAFtnN15tD0EvlI+tFXPxDQQ31ABEASiHXqkE0AEFIefxIfIHiz4Q/ciNL4B9u
ACAaADvwbw2AZRmh1LnFu+0DCl7X/PDfHikP6FaW+hoADIURH7nUYWmgAYDVaoWsZ0ukzgPwagyY4mQp
wiw9CKUOof6l5kPZU+p9u8JgGwZOC2Obq7Vcf54EaHl67WsADJYUo3g1EkKH/3H+ZxoA1Hwc16+bATy8
Mwh5iD+0AQDi1QBsm4vFs+5nquuCTjkCiqyPBuBuMQ/1D0xzA2CJI0HW5wYg1D+sm2vcMfAfqv6FlH15
SG+udbk/RlA+dO/XGASoT7D0kSDu1QNk9S9w3jQ/gXJEA2AewMm4Xc1Btq3m6RjWzQ/+kKiTAJ2wRIAi
LX0M+gbw8maB0NeXfWMwxckShmWNhzqb5qvACH1Tb4CTJQIIs8QxkPW0XSLudRKgE5YIIGz8TUhqA4bE
PVvk+Mt2LXUedqwqha2V6oQ9iWC2Osz/tC2fJVEfmntXLgFu24Pdjo28I4RJ00vWRw+g3/3M6r9cLnrF
vTiggSSSwQsDFrNLHeaX4t9cl5/+VAMg//iynaDOrmflN/6vmy/+3q9ngMG0OGelB7CU8fAmowt1eCt4
4V30K1LnBBzXAACJKk47UTcY4Tm6Po9tOgnQwd7D/2B6LiBrsTv0i9xn8DmC9GerqZYUY7mZL2K9gtw4
8F+z59i/qCR7hvRS6uNDGiso06bBKPWrrIzdHQhBT65UPhInegC22Hi0RMwpDcDNesXnbmcDgJ9Vi+8g
3RY7E2oeQ1Nd/INNG8Bus5Vf1Cm5IEim4zf5zri/WYXQR9932zdt42HpKtvXAChlsdki8UP9Y/z5c28N
ADEKtgqBZDoQg3BXDyBBj8TPDUANfjUA2GoYpP7HNAAESNxL3/OCLDK9Uf+y8yrBlh5ksS4dH5Alff/0
Up5TqX9Rdo8Ht5H+2BGfq7U0wr3EN6pdwl2yPsApxa+AsC2MRAVQqhT8zzYAYr0oYITijyX1BjEFEq0U
2PupQYoUv77pG8SUAEs5iPJ2PL/K0j/D0tHqH+IkgKn/YLU8+Nh/IInPFhD6pg5BbUCEWfpIdBIAoc9n
rUR/GFL/xLRNQpXbCSn1U6YzAPrKL0NfBbYzAIyYjuTi4udt82cipPVN+rNliQDCLHEMqLfl7AKJHz1A
mcafvWvUP0twdA/A7knfRw/ANgy1vsc1AKSg7HUGgC1TKf58HkAxBGAwrEInEtkBWXiQ+BQsKnynzrHx
SPoTo+ASUBWsUbyCMdD3FKQaz0fUB6Y4MQggjGBSMEbeESBS4+FuzRsBBoo/YIqTJQwaALaW3geREvfl
VbGZ0QBI9OO3Ib++D2BFRoK4XywuUfn62x3Nz6K2yHOK+he8sSDByx42PYDeH2TgPEWdA7nf22DsfusT
oa/zAOXS/51RnM01UpZlmJ4LZs1P/jOQ+GzjqH/Y8jOItNyM6/WvUFC6p+hyfQ1g92UAKSECLMWpJHtG
9SX6a9r6VVbG7o5A4qPp2ZJeFP9qrgZAYOsSIFYj0ip8Ynp9B88f+l5X+TOsAZBTXw8g0nK/kG6LFLQ+
Oh4WF+XtV5qeIfUv1AMwtKqrgEB9Qi4IodSbjM9xs7p+3N7pOp8+FKBvA+cRNcH0ugKk7zGQ+C9PK6l/
u/4HP6s5mGHVQDIdWJV2h01zQT8Gyn7ePAhS/O+bTWwBv34blEjiyYoKLKms6XXBKv9r2DJC6Mcw6a8Y
tlZEZLFOTKj/5sBOeRMrr/+PD+zcADBVV0yAIhWcqwkJ9+gBCk+v7/yfbdALRku5AZDE12oElzpNhRLf
1Cy5pqcHII1hziOgCBIHQW+KPzyZX49zeL3/QUrnrdv7qUEKQid0vyENZCmHoh5AV/yzDeNE9S/iJAAG
il+X/ss4Rf0LPvnWq/K/C6MTlgjAsMTxqAFgSykGol+6PwYxhzYA5gE1AI/3C7Zh1D1A2GOQ+n+8v1YP
oGuB0P2S/kxxKuCIBoBc/cpnq/hvFpcXZVtP1R6c0gNI8WMw2G+95hnPT7fHfQOYeMSxuC9/C2yuC/21
DSOWFIbH6tRIZAfS92oASvpOnWPjwY9BjLLYWrVOSJGmBwymJv0zLNXxVnAAgpH4agAe+Z97t143fwMY
g2k0AIfW1AF+jPWiPD4S+rxCsOeL8rfAinF1IT82fULZVqWGkfoHnQTIuj+agc3N7JQeoNmrjcBm0E3q
i7mMp4fySWEph8J71zc1GJL+8HK/4qVS9rg8UBcgG6e+G2CJhuk5Qbr0PcZm96OfkvsMTfVtYKbDJwE+
lXoP5CJE9FufOgKKwbRV51W8U0l2gyIM9Rht/XR1tQXX2N0RkvU6CfDx5+l68xjqX+CJPwZ8RAMQ6h/4
9JXGyuofD34F7OkB0m2RqOP9y+u1GgAGNh5ptUAxCiBSMcA0F4Qs1pHycH+z0nH958etvgRsul/gv999
31cpSs8FIYt1InXIH6TpmUr9/3q7YaszANgS/dEAKEXTXBCiAQBWN83lPSHrgSl+KX5D8QpjSpbS8UdN
0+vAKuqfgazPbYCGdD9DfoVpMLVSkMU6Aej43ABI1j9vFln9C5yKz5G5Wsvu6h1WS0BzKb+kP1tsDPxS
9hmcLFlwOeTfDAqq8lhBX3LuCgxbOhQqoGzQ9GByP2BJ0l8c3QAAWYgeXfDDNozT1T/6nnF/u0KgyUYx
SPczcOq7AZY1HvQ9Q+pfA9Ev3c9YNpdfY1jWQfAI5B7gAuG5+z5ALFnKQZCuBkCXQ9zfX4Ps7XaDCIoA
S+yEYIY5pf7ZovvnlJpdYTC9Xc1zD1AnDoCml/TX9qE0QRc4A6Y4IwCPVRiGnSkNwPISKHxzX74MwDYI
Z2kDjmoAmofq89h/HP5frxdIf9g+3OgLwWoDLL0PIqXpJeuzyn/aLvVXqDC0qiUx5pdACYgeQMoecKL1
Q5SLrP4jzKr1QSRSXrKe/VS6boJtGPITIOl/hPoPuY/W//12D9ggG6fOBhBzaGXFy4iTABh6/LOHAPUJ
ucJeri7KH/mS+mfKNut+0NIpDQC7xDtYuRa/Uf/IfWwMBkb8Wj9TSzyUpkJHgyGnBY/n8/B/+33f0gao
JcCQJwIsN2N6DtgrfdlX6iQUP8NsVokhsv1poKoUfCr1HpqLodoGBtEv3c+Q34I7qCS7MWv+8pdq5vo4
WbLgGrs7QRzapxSKX1v9SeDwRIzlfsH0ekNuAKhzd3f3cPFTFwKxxcaD/6AGoKlTZP1sfi31jyyD19d3
NQAydCogDCCSeLLUBjCNmhBKHe0uxS8dT5im6gGC5+ZvfgVqAJQS6VETQqkTltU/ZA/oQiAtiWgAQDF1
DxBKXbCqgaBH6krcM0Xcv87nOHX4H1tnBhRApPoBjVzQ9DoQwP8ajVbaN52ABg1Aa+06hNiSaKUgi3UC
sqAP8KsHYBtGHYwnV2uRTG+e9BLQXPqPmhfxCtGFPXGFD1ucWs3BVqpMTU/3QcJNOfbJv6c2AEAR9QAh
8UEtgXloBm6bvwHcd7v2fmqQ9fZ8i4Aq+819TkdAcbKEYSkjQdnrML8agIf18m73978wmKoBOLoHQNnH
YX7eiW9u1vE3vzCYqgGAU3oACX1tQ/pjhJOtpYyEXEaofCn+gKlWy7bK7aMzOBqAe6o2DQAGU4LpAbRE
GNPO9Jqi5mdF2Qvs18db5D7+RfNznxhMcUbYyMoB8Wh61D8vbMo9lK9UXpaWoFH/6g1wsnR59fOIq4Co
j9Znqxd89ABZ/et7wJu78hXh8T0AYUXNN7/vCUx5oWMUoXw9R/oDBlOcLLXxzZcBYPhWWJXsNvAzpM5B
0zrGqg2gCgz9D3rcfQNPDbxsnFrVlGFFBiA4lD3j/ekWEP2PtyvAkIclNQkYVmEMZCGhMzoDENMIOLS+
GgCIBiCkPw8Iul8NANvjegBU+Lb5Yi5vYuxbUZqLmXoAqX9N0eiPmyPPfQmKq46KM2XoJuRkainjUbXc
A2DgyepfDPQAoeQE6RL0oenZhu7no0SG1L9WFdx3HuCLWK8g5f76+WZR2oDZdSv6ZeBkiQBLcSrJnmGv
Pj4+9Ae/QD+BHlOWCLAUw+5OBmUfJwGk+HXUX50ABqt71D+YXm8gl/eu3APo2D+6P04ChPrXu5xV+GR3
Q8Qw0PES8Qyp/AB9j0Rjm505mFzZURNCqdOECB3+x8M2GgAZhST9pf4VSVZUiJogmU7AYrOViJegX2+b
67t2DYDU/8vTSqtCcp9ITRWpbwUMNABIELYydFBfPYCmQjGS/jFVDNtc0PQ6ENDI+zKK9t+pf9kMegBi
2kkzFIDTSoHpdWJM029n5Xg/BiM3wHLmSCsl4lC9XkIYunRn8fggpPJZyg0AU/lzmEqxRCnVLCcWTE/3
cTEr7y9qALBt9SCk5tmi7CX6M3ESIDi6ASAFib+9X6PF+aBarWeL6yvAKJ9hSNL79dE9gBoAwGBI9+sP
cKoTwIn6l6Sw3DGoAQAMhnT/w3YD6gRw8mGMvAXLPQgkPhJ5s9NVGkxxnqL+0f3AZwi2PMhYOVv1v/sE
jay91MHsJGIUoY9x0/zpX9CXAXhzxs4pI28LfV8im9/2QdyvL3/e3610HoAlqX+mOFkiQOcB8FudYbgJ
Bsq+qPymByhtgBqAxpa/nCU4/JsAVNbxft2KeoBa/WtVtqZWp4YYPciwadSbhD4vRXQ/dpk2DYAag3ID
zRjTAAABpuyhZN0sN/Oi/tliW9jesp2QyP9NdhWojOJXgyFD/iP+87Iz+p0f7RVbyX1QAxBTljRy+nhI
RNzrSL+2EGcA2BKg64VkW/ow9AAQU1Q+75kBS2opMY5uANQDMEV1Ise1DUPNAPYpjw8SX1CHrWrGVJxS
X+KerUR/mZbvBH85/C8sNwglJ6iJuH+4/JEbAFSyPmXUAzAk9zWIJD5aAsP1eoJ4JD5I7kv9C021Spgl
fqGS7AE7KaE/u/2R2wBgqjMDMNwD2N0JUPZCDwWKf9Nc/MZW6r/c+i7Gcr9ger2BdN6+yttao/L1mz+o
/5eXFx37x6MlheGxCp98vTlEPKwXCyi30hzUl9aX9I8GAD82MQpWolUDyXRedrqwRzqeLPkxEP04owGQ
7s/qX2FkEaYiuQeQ+mdcNX/zK8R9bgCk/kUEgDUAQDB1mnptD5DFuvwh4tlK34P8r/N5bPFoiZiIl19T
YXpdEBCKX+KeEdPcAMQSHisislgHwrKmf94s1ABg/PP6iA0YmlqwlRL4i0zf/dcuYc1VQNL0bDuvAmKK
08JC/auOyo5qAFD89G2z5ZpXF1vso3uAcpPc6PLn++oSsNUJ2BcA5JHuVyQpJbEqaO+nAcGIezUAl7Of
0v3YoE6AADUAp/QADBm0E3yqqQHAYIoT9aBvAyvsUCT9ZfCuPJ9dqQHAYIoT6a9vAyvsaFDP+sEfqdHy
ON8Up4WNhwrS+vHAYqBhJarUADAsZi91pBoA/Ij+fAZAPYDF23QAXeIvfS+JXzcA0v2CVuHQBkBwK9L9
PPDYEv0y1AnwX0AnB8bvvCA+UjA61b80HPeW6ciTAMS0f/NrJ+6jAcDQ8ysDpxqASAx7AGJM2S9n85ft
GkXOFvUfPwdklwlZnb2QRc2n7VpH+sMGDDUA6gQscS/sTG4A6KVB0r+2c+KhUB+hb0j9CwJQ/8c1AMZA
A2CRI2F/YpeaNqBIf4zmkH/7rQB9W7d0C19zx0A6b5KS+80NeYOBkyXdYuzJoZDIQN+XCukSNTnh/mZZ
fo/1kAag/XHPZsuQBNGB/xh4ELjSvjneqsGnUq8gHn2P1sdgGz2AbDmPbgDYN1T+9eMFBlqfIqH+gSlO
lrCHzwPY3QFp+sfmFz9JXG1/AwWf75cCW05WFTbUBpheb6CClD1SGJX//HinHoAGgC02HvysKgynVfgk
3RZhKHv9pI9+1Qdl/8/1IkR/NvCzSkzE4y83lAoCGp3dkHBXA1D286usz5cAQTQArObgaACAJfnVAKDd
Ee4h5aX+0YFI/Kz+6wZAx/tzInUwcHY2AAj6aADkQe1e7674l+IHbDlD/SuYXK3KA6bXBQES9/UFP4xT
GgAgMjQ9Ql89wO1yhuIP8PzabEHBbK1IIDXPiGccG+2Ophfo+2gABs4A5C5CRRgl0vR0J8h96X6BXWpV
YWMoicuf/9ytJesBiQO/Huf6OSDAYCo/ARHc2QPY+2lApNQ/BgNFXo5nNw0ABlP51QMUo6ownmgA2IZx
egMQRAMg6T9tAyD1jxbRA6LB9PQegBH2zfUM3R/oq8BHNAB1MDuJE9EfoP6h3vk6dwB6gLvmD/3yDvH6
eFs3ALoESFD5lAagCP3mi79MGRhMpf6R/gK/5Y6ExFr9qwHQWYJyV3m/bxhzK8Tw8tPh/92U5PZvSwum
+lzMiSMhK2Q9+lsH/vmvhPQXTNniOVr9K1daDRuk+wOmODHYKl7GSNgl7RXbLPcz8ivsOMhFf4fcB6bm
KfvRDMs9COSbrvYJysf011MEp4AKjx5AMGWfj24ASCGRIrxQqRPFMaLB0E0o4Og2A0L9s43BVH4aACie
KlHER3JAsLYMJCwDCYLox7huvvIrmy1THfgngG0uErhe34Ei+Xh/kdAP0T+7/hfIxskShn6ux9I/qSQ7
kIiyR+I/v7yyq3jYhvqHcBJAGB5SIj1jdyekPzbp15tHaX1JfNS/DDlZJYbIaAOiziem13ewP3oHQ+tL
7mPHpf94bpo/BKYYy/3C7oYIQ8HfNX/uN9Q/U1Ra7gFC/eNnNfcAOldQbi52ftcAfIr7dP2P+gFWJfe1
KrCLv1H8ES+/YDU3AKh2NQACD0NqEDXf1wAoQMGRq1J4rAEoMXwENdf6s81+9QAY0vfqEEz9Q+Tql0zl
NL0uWEXTI/S1lcRnFLGfGgBNMZgyrIgwvS4U//uh/UCX3P/n8SGrf7agAEvPSM3nZxx09Q6vkNvbeyF9
rwYAg2ksEcaUFCtSwsY0AMTpiaQNUCegEwJHnASglDQ9Eh8k63G+3pcjBGwl+mPKVjERXyTR15r2fipI
1Dd9MTRFokj3hxFL+lqwpseBvufzA27Xc5At0c9Wximg76X+yxvzTftVV4l+tjKORg0Ad9/GiQ1AQCmJ
/vwzoPLohix+mM54nDoDANg8OH1h5hmGeIYuAULR5gaAqS4BAmKQ0JY7EnJ5SceB/9D68ui/A5558xsv
ljsSEmv1H3Jf44gGQNfzMDCemj8IgDOQk1XLHQmJUvZS3tgo8pf7pgG4L+cBEFhsy80ffhMUVJdCrirj
YSsjbJbK4f/dr44CS1ZqGOrzIkflxzU/Ev15qv8FljgSEhezIsRD+ut9Uracpx/7B96IZ5c/+eTV44Bx
yt//qmEP6bRQ5AEvIB2YP27nSddbjdJVU7o/1D/122P/TWRJqeqMIRqAl+Z7wNmAcgcG74J9KgdkSd9L
7hexuxvYOOXXlI8YSw9cr++gvn6TB0OKH3IDADnG0j+pJDsQL6FfEpupVP7HxweKH4NpLOXImnxfUPDo
+Pheb7n7m0cpfv0oUA6AaAByQFRrMb3egKwX7BVbyX22TMOOVWEVPtndUMltdPyfh/L7nih7QNCj9Vl6
urpE9wtsPPhZVRjx8aeCWYqa0NkA3Kyu87H8OOSfw/BHjL403NcAqAfI2j2GlOHt0zuE7tdUS21cM5Su
/kFlrQFAviPrdYVPOB92fw5MPYCG1L+WmCqYrKgQTtPrgYQ+4t4aAKaM5kbak2/4sS09ML2eIUtX/Otg
fyDp/978FhCrlmXUDUBJaS7mkcpXG6AGgGDF10v5+p+oc0ADgNx/2V6CegA9tRa5F1IQNPqUEjqoH4qf
KeQGgGmOP6gBCFnPVqL/djMD9QCxlCOPgDdfPk7iyh/AYNp85HjwEaDv2du48gcwmOK0yONAaRY9u9Nz
Gtlp8YdSKjTf+mV73xDTI4qjP8wjKKW+CKOzbJ9/mI1+Iunyoj4DgJOlu9X8aPUPVIhj/1L/+nIwU5wY
kv4MSzwI0tfrhZFrNrdQRniGiWC2PA5S/IacCjuC5hbagdaXKA90WoAlyxqDGoDSTjSnB1VQ0l9O2QhS
aTgMnKc0APr7X7kBkOf0BkCH+SX0y08ANX8dTF8DUA8AR9cPeCPmRq7Kb1y2XwXGxmlhR8MLBQkePQAG
4Dxlz8mNdIzOBgOwc+QRkHuTfvknwDNw5U+QP5IDPlOk9Rmh9YvebeQ+I5wIFHbA0jOu1xPN/S6H/7WV
4mdghFMeS/xCJdlFm7izpfIzeTXsmnxfCEPHC0l8kOIPZ9iS+yKcVMgFC6bXG5o9ao/3h8RH9IvwRAzD
KnzS3AoBoeaR8oCBUxf6s4SRwYMfg5icAiyVm9vtvzUALOHJDQB2ZwNgMWSRGwHWAIT0R9+zxcM2mgFp
fUNLilG8clVKZUEyHT/CHTWPiM+aXv677YO0/svbu9AUv7qCCMapCuE3vR6witBH3GsbRqh/hvwMbEsP
TK8HpOhCIJDizz0Aq7o6CMMSDWsAsKXpAU2PLeRhlSE7lnS6QB5Wc6mxDYCO+v96LW8H0QOUWlXwMKQw
pOOjE8CD/av5zR8d78dgilPBOb4p8OV27f00UKSMfOWP1L88ESDjOKIBMHBa5HFEA2CUe1EFHwH3XZcA
6VoaBgZTnJM1ALuj/rrmB4PpcZUHslhSA2B+cfTN0QOUv8Le/FkANQBhwHFlBbnlUp9G9wdqAASrp9QX
VEDuxxmAzd0KWz/+M0nx0PoZdaoYp9wEuWhutg/NUf+vYTOPAAA0L0lEQVRoAzCk0Y8uTu5dc+BNBbGz
9JeNE81IDAbgtyJ7IVcNQBzvD8JzYgOA0JfKB+zFah5fAhZHF8/kBoC+YtoGoOxhcwwesBm8bngmlic8
MhmKUEr1MbI9Vf34ErB0/yQNAOI+1D8Dod8o/zKw5WHczZrLYqsKgev1CtJD6Df/az9tthbcQSXZDYpc
P17o+wCz2x+A+te01K/iDbs7pGRBL/DgZ+gLAIy+GKtWML2eIP7j9xtI60v0h62lUrNK/EJzK4RJ1t/v
/vQvKqTUaQ75M1UbEFt5gBgilUIuqxjlRnf7L5mOXsfJ0DSLe6n5tgfYXQKkniFi1ACAioT6h1DqoFWG
7M5zAjG0FMf75WRENZGFfsh3pvJrCSergOAVmuK3yIMaAP77IPfZIvFD/TNY0sDDqmxLD0yvB6RI/WM8
vbyD2gChvw3MsKwaXdITr6IYof4l7vuIHqBNa0ZUK8WzmO6EOBS/GgB0P1tNS6EqeC9khfSXxJcf+/bn
vwKmffGRIuz9tIZ4RL8UfwYnSxZ8BGoAqGbqf9oGgDdmU/+TNADNw1kaAF0FhOKX6JdnkgYAKILil+iP
YTGnQ82BBqDv1MEwVEP939+tdCogRH8Miz8I0q0BQP3Lr0O5J9YXFMkNgHoAGafXpwIjS38xVQOABJcK
pwdQGyCj3OrJD75Ufqj/29IDFzDK1wzS6tG3RWLdA4Q9P+EnbgTpofVB5wHY4tew+KNB7qsBwBAWcDTs
JHJfopxXDFO9uU31/lkehKT4GdEDlKUq/lCKyk+H/7HpB6g8Rv2DPoxrqNB8spSBUcT+bpT7gKBspL+G
5WZcr1eQzn9WXfOjBiBsliy4g0qyGxRB9D+/vErxMzB06T+2BdfY3RGqE+N6cYn0z+Bp13bDKnxien3H
8+Md+l7H+6X1sakjP+CPGMv9QnMrJErcS8GvFwtkffiFRL+2QrtNJPH4lR5+EUrdIEbH8hH3ag/YCtn4
FcDUcjOm1wOyGOh7XfaDoaP+bLNTYZabqeW7UuRkGhf91yNWo4KcuYUwvZ4hRv+hcgPANvyMUrFf/YPp
9QyJ6gFAPQAyNzysWnwnhMVzjS1Zj8FQD6BtKP4glkL9y4+RC44S8YRFD6AzACMTa0iMA/kyLMCIsDAs
wN5Pa0gpl8n//KnD/0Ieliz4ONQDZCzgRNhVfSgGFnA0PAIS/UH2TPX4lDrTfeIOQP2+mzjupslSAxA9
wHF1+qAan7eS+yL8U90QddQAPO50v6T/hPVD98ueRP0LKqgB0LF51Dk2w8KOgzqS/hgS/apcbqC5xVjN
WYdCOj0AWh/CiOnpxfPxfvUAJ9bsJDcAtnQ6vGHyctGWKfs/4V3QG7JaC3kwdHMQYaeA1o8GQD/9aQED
xIdxhj1E30uCsKP1YX6m5unD9XoXlJLoV9mwLaybSrIb7VmLJPcxmMofYX3Y3ekDxZ+x1SFMr+/QkX6G
fvNHbQDTkP76XSAGU8v9QqPgJfrhebOSgYdcVtsiO9Ev5NRqZ676BzC9HpAolQ/Y9aqW1A/Yasb0eoZE
HeaPkwByMrI/p9RIpgvlZg9aJ4735yVsOVklJvxaypGm1zOK1P8yHeyX+o8ljZxSY3rdUAUMFL8u/pH0
l3MMepYFWaH1JeuZhsSXLUr93SkC2crS9EtN09OdkMNQDwA3q/KLPRYznrIHX41hhuPt/bSGrOvd3//q
85xIbgBsaRJyA2BLp8ODYIqfrUYOO5FSrbn6f9qyRrPXE9dHyKoBuJjoN08MdljSf/I9D5pH5ctfBrCA
E1FNhmw1A5M0AMJ6AFs9BdXEoP777pvB9eqJUFMjNwCnq39BEfUA3/oSgugBzH86vG0uri/hO/a/PD5f
i9ee00H0i0Nr5g/jgCIaIw/zD+B6vQuK69i/bihsC+umkuwGdZD7dQOQPQPY3Zke0+tfYQ91lb+2nZ49
NA0AkU1K+zM+MWI32vludPp19kD2mAYgLvjBPmg1Y3rdIHeBqP0q9LHx6IRAOPsIpd6JGoC73d8DDj+2
nHUDYJheN6ijoTZAtsUMY3q9D8rq4h8MWxomvxKu6KOTyhf4IyBGeCwYKBIBJcb09Biamzgm8Tuw99NO
tMPDnlOgAZBWwLClSaAB0B/8wrClSdCjMeEh/xoqH/qjn4dCZf38v/lPhIKnX+4/DJW/r7go9R9u4N9w
Q5M3AEApfQ3gm/afsvoB0G+qLyg+u7zQN4AnvCFKfXcPiVhbLC4Bw5ZOh93W0Y1v2n/KWuXacyJU01v0
oWXjk7iTZjc/P62PwPV6D7qh2t5PJdlr2oKDnj7s7kyP6fUK9jO2fZ4h0m2RwgjtfhDRRZjf9HpG8Qzz
i3atZzUwvV6jImOcnZher1EpjWFnJ6bXa6gg9c/AttW9mF4foNnZw9Q/6Fkm8WqzRLtbD4Dzuvp9z4Al
Ar7ENxVwUlAx/y06/mjs/fQ/BdL/m9S/QPp/k/oXzYvzWz59g+++ie+r/32V/5382+6Fbohh/hP5jpqZ
764vdCsM85/Id9Q0kP7fof7Fv2H/v5vj7kJ8Wn8Trtcnp5Ls02J3Z3pMr0+O3dzUmF6fHNPrk2N6fXJM
r3ei/7katrQX0+uTo2eZHSsNQNMDSPcH2u14PQTy58i2AdhltWFPL4tv5fnX87fy8nr/d/N0+608Pm2+
lZu79bdy/3gdLBarP69PgJH9m8327e1XbPNSjRV5fL47CNqwzWbD1vx9rNfr2ezq5Xn1TdzedMAtmgfY
E32NDMOWgoeLOfxeX7NtWs6fjw8PcH93p+1yvXp+e8ls1mstYQgFY1gkuVGHLSwWC3u4Jsf01uQ8Pjx9
K/Pt6lt5er37Vl5fXr+Zh2/FXk6T8/998/h/53Ee53EePePcAEzDanFpWEAvlWSfFtPrk2N6fXKydocs
33MbIPUvsDvbAKVk9Q/2ebwXNPFBDcByuUSOf1MP0CnluS3Udt0DEIyyH2gAJP2l/mWAlLokO3r9/mEL
uQ1QA6CtCE/EFOnfJBbFf24ADsH0+uSYXp+cSq9Pjkv2abGX0+S0Ov3bRvs5fx7ncR7nUY2xDYBOKORh
AX2YXu9jPb8UZu/F9fS/nfmsyP279cLAyZIFd1BJ9mkxvT45ptcnJ+R70Ir4Px9gPYC1AbEEJatJyeof
7PN4GHQ/gp4GgO3IHgAhTjCae3wPMD7y6AagTsyiP7AzANEASMqzqgYgq38hJ6vEWBar0QAUqkfMWC9/
mEf0+Q3T65Njen1yTK9Pjun1yan0+uS4ZJ8WezlNTqvTR4/nn/8y2oWe0X7On8d5nMd5VGO/jpfcv19f
GvJbcI3p9Rpp/Y/faxH279cfY9oA19M93N7cGRZwHH3qX4zqASrJPi2m1yfH9PrkhFIPPqV81QNAZw8w
kHJ1dWUfyQMc3QAw0NxjlD0xVzfPYyKh1vFAro67Y4STSKS/ZH3nSQBrAHQJEP6s15HvcexfUl7Sv7MB
iC2RSiFXWfDZA1SPWAaV//F+XWv9Pn+N6fVO+E8qOqfDmF6fHNPrfejdOA8L6MP0+uRUen1yXLJPi72c
JqfV6T0j63vJ/Y/HmTHcA7Sf8+dxHudxHtXYo+D5IFkvfpr0D1giwFIM0+sG6Qj9UP8GS2oDLCvjerpi
sUD/XT+9vH+kwVR+Cz4IJMKA+hf7e4BKsndSPtK/Dgvow/R6H23RNCygD9PrkxNKXaDdUfZ9al5ED9DX
ALAUWaj58T0AkUh5NQAjs4hEiP87G4Dr3bU3FCFAA9EvogHQiKzcAIRdmpwk1jFCzWOE7g9D8dmDkVNy
KRn2cBn/hgaA/56311eg/6r6Ty0PtgXXmF6fHNPrNfrf+nA9+3W/CZjKb8E1ptcnp9Lrn1zOluY5Cpfs
NTc/rzqxsE7s5TQ5rU7vGpL70vdZ+v+ZLUD2sPpntJ/z53Ee53Ee1eiV7/OrH4DBp0hnDxDqPyI7Mb2e
KZXTsf9OaAAIs8SM6+mvkHt7c9eq/mqwRICljERCQQ3A683y1wNi9VP3M8WJoRiCLf2TSrLXsJPXz6vN
+0PAtOx5FVljer0TSj1dzN8Xq4ApTgvrJIv170AyXdTqP0v5oD4JMJAoQY+aHyPoiSFeY3w8Qlxgh3ZH
K4cdEIP6F9i2KnIRCAUf0ADcP2wR3GyR+NxZtnUDID+DlL7rf1gKKS/VjlNqPq7nAcWw9P77XT1AZBXR
3+wMsPSp+yOmetAySPzfzz8k9H/Or4X5hzG9XsP/Tcl92CwvIaZHNAD8rzlxWEHT6wbxkv6/X7ZGtAGW
Yphen5xKr7eg/nntqQc4rRNwyZ5phf58/s9maeAc0wbYy2lyWp3eNUL0hyHpHw0AftEmdI32c/48zuM8
zqMavQ0AnxyofIn78rnUtAGBPFolDNvSA9PrAdJfB/hN8Rt7TwK4nk40e/XlwH89CCDMEscQDQBC/+P9
BST9YwrYpzcAs6tLU/8CJ0sWXGN6vYYipv4FTpYsuMb0+uSErK91fIj4TFb/kE8CMK1z581AVbMtTUC/
rJeaz2M4mKHKDKn50PRI4cvHf2qJv7cBoNSvP+9swxO6PyAxnwTQ/ZX653ZR9hjxOHQ2AHH9D4SUl/p/
eSg6XsVjSYauDmIbHhkKjlyGOgeWSj9QPXQZJP7H+zVaH92/fPwlsPFMcgZA/4uz6A9w6n+upRim13kz
ub6fHQ3pVtD0eobgUP96N8sNAIzpAUyvT06l1wvb+b/UAKgH0BYnWOQIXLIH3HFUfqf6F1otYVVuYC+n
yWl1ehqbxYxtiH4JfVf/N59+NQBsg6ZMO9rP+fM4j/M4j2r0CnfgnVEH+zGeiz76IfWPwTSvWmLG9HpA
lsT9cA9wdAPQ7NV7bgCwf78swZxAsKUPE+ofxR9yXw1ATMOpyN4eoJLsAfqbHUPo9zUAQMBwG2B6PaP6
CP2+BgBU3xIzptcnR/J9WMQHyP2Hhxf8wUENwKYZfbIe5Vq0fBp4LEZQQaVUmWFqnkRrALBBwTHkVMD9
wxYP6n+4ASAeta2tDN1fqf8/L0XZRwOA8FKWXf9DTBREowucKHhAvmNTHK0fQl9H+vHbmQF1Bfg13n+/
6yyBapb06tHL6Eg/Wr/o/t3AVlcwVQMA1gNI/eu/raUYptfLf9hK1o+HdCtoej1DcBz717tZSP+AAMIs
MWN6fZjbnz/AnMNUev31193lx8tNNAC8mNkyxQlqAwLL7cIle8Ad/+saANS/ND1I9LOVYRDAlk4gggO1
EBrt5/x5nMd5nEc1hrQ78ObIQOUj+n/f3gZx4J9hKYbpdUHW292VNQCdBiiyrwdwPd2gi/6DVujfXbYN
wN3lp3PHQd8HCN2Qj/dL7lsPsP8kQCXZBQ+RjvFL6EOt/kEBBFt6YHo9KE9cc4xfQh9q9Q8KINjSA9Pr
kyP5HugAv/SrQMdHG9B5+F8BOSWWoNH/ZSBE2Eq4ozLtcxqK9Pw6+sJURDVjhJQHYmgAcg+A0cZ9HQpA
ISGspf7HNABx1Q0GHu6yGoCPPz/YqgFg2wiw8s0EdL8eGYzrr98rQKYj6Bmh/tUMoOxbBb9rAHBK3GNH
A6BgLYX6L+WaOnsbACAeud9klecRwmORnZhez8T/4gDdH9I/GO4BTK+X/7aVrB9P+Y/2taDp9aDc0NXP
OPyfRb9BGMGWHpheHwDp/+d6NkkDALyGee2pDcDGkF9tAGg6og1wyS7i4p+9DcDwhUD2cpqcVqfvhhoA
IYlfVH5XAyBM+kNW/4z2c/48zuM8zqMae+T7urn6X8f+dbxf6DyADEsxTK9DXPyTe4AxdPYArqcb+MDL
4h6uruaGBZBiRQZAE0g9/Hq4yXK/hgBpCLAiLZVkh/KBvVlK3//+/Sn3DZbUABBc9r+qA6bXBcF3VzPp
e4qE3DdUH4NgUqyIML0+OZLpmboHAElDO/wvp0XiD/UPjfgvo8jtQ3qAvgClR8EYkvIC++rmuT4JoMi4
Fa1iIPpzA4BmUgpGFutAiqR/gAetbw0AUFDtAeTHh2kuiFInJat/gVOGegC2eLg5tuFpwx62Wf2rFAbV
9jYAF5tHnQTQUxno8D+rFl9jej1zPf+5XswgtL6hVcIsMWN6nf8mpukPovwv+1rQ9HpA5MP1zLR+J8NX
AZleHyAagIN6gEqvt2cAANEPjDj8H7pfyHNcA8Bdlr4XJv0hr5bgqoKwl9PktDp9N9gTRLzEfRgS+mHX
U9BFQXUP0H7On8d5nMd5VGOoAQjRb+pf5FVLzJheB97jTNnD3fX86eY6YGoBcFADcHtzJ2Uvua9j/5nc
Bhz6bWCCpeyl8nWdT4h+YBqnArAJ7q1fSXYgWBIf/f32cNXZA+BkSQ0AlPpVHTC9LgiWxCf9pamvaQYn
S2oAgBQrIkyvT04o9UxnDwDyC2xbBVP/0Ij/dhQx0lzZjzxl2Ec14CQAfc+2L4BBhaZSaSdkMBDWP5f3
Au1OWPhN/etCHU3lD+kP6OmS3tSxBkBX70j3EybjmqD1ent/i0EDwBYbD5UhPzjkMjDwR001ANfNGGgA
ytLum8fYuSUI9b9cr0ClWFI1ewANNQC64CerfzwnNgA05LfXV4j7aANqtEoYwZYemF4v/3MrWT+e8r/s
a0HT64IwXd9vWr8TfU+AFCsiTK/XSO6zfbsqDcChJwEqvd6eARDqAXj30jTaAIiYSRqAYUpwVUHYy2ly
Wp2+G+xJ1v2Ammf7z+t9iH4MprEU1Oqf0X7On8d5nMd5VKO3AchH/fc2AARbemB6HXiPs2P/pv6F9QCk
kGilwPV0w+1y9uNihqwvEr+58kc/+pnByRIBhJXg5cyKDMCeoOkfZ5e/VuUSILYygvCwLWGHNwA6AwDR
AxhZ/R99BgCiBzCy+v/PngEoWjNJdgihn/Wr0FKf+h/TAHBz9iEt8BOjA/wM7IFIlYqaGghrfcG3yPdd
DENaHKMs7Y7TY+PBQEPnBqA4l/esIuJR26HU4zp+pUQDIBvdT19BZbbYeOzBYQeUrp2JspL41MwNAFON
3ACwxZNtbjqrf6Y4pf7JUil76Ax991c9QDQAUv/6NrDF15heF7yY43J/+nMJ/RqWIowUKyJMrxNmmh54
QPKw1Uz5X/a1oOl1Qdi/rQFA99fqf3wPUOn18g1gQNkj/ZvmtFwCZKJfyHl0AxCXAA1DGMGWHtjLqWZ1
vRR7nZ20Oj0NFHz0ANL6eNiqB5AnnNEVdKp/Rvs5fx7ncR7nUY2hBiBr/fev17owzV3BQQ0A8Iablf26
+YNfWf3Lk/sEUqyIcD3dcHl5yR4i69H3kvuofEN+AggjmBQrMgz7o6P+RegzXhfRA5iHMIIt/ZNKsgtS
UPa64h99jxY3cMb3AUr9qoIwvR6QgrLXFf/oeysOOOP7AARbemB6/Tg2qx9gToFYRJ6yzaodFVirf5xs
Hx5ekPhsw5MhC2cuVYR/GtLc9iENOLXayv/mJACevmCtKiUGj7KO3IN0druQe4PUAGia1T8ammBVyA2A
1D/bzpMAdQPwmn4ISJCldNXJDYDqEBA9gG4CWc8UKS81jxMP2xwgcgUt4SGsNA/Vo5eJBsDOAJzYAKyb
/5I6CbAXwggmxYoI0+tEmqaHRvb7sBhR/qN9LWh6XRCGpo/vAAwQYeX+VnXA9LoRul9czFfqB6IT2Eul
1wvqAXIDkBW/OoEwjmgA2FPgLuce4OX5PQin1L/irYiwl1MQEj/+B4XcN6eIRKPV6WmwPxL0qPmQ+30Q
oIZBRlsijfZz/jzO4zzOoxrdDQDvQSjXkPim/gVOrRLGlBQrIkyvB8RL33ce/hc6CaAw4q2CcD3doAaA
LeJepwI60WoEW5G96FF6nF2i9UEnBCB79MhY4hcqyS7IQoWHyu9DvUG5iaqCML0eqH6o/D7UGxBs6YHp
9QGk8muhj+fj6V/Q2QPoWH6RlTvJjgSs1b/CtIQtoR/+jPUAkukxirz+tgaAwaOpy/fVA6DpFawlawDY
opVr9U+61D9k9S/JjqFEyW6FIfopK0oz8PUxIT6n52rIdIooJjcA1JS4x6MGQMf49eVgnKb+2aoCW6oV
T1PZHjoDiX+xeSSepyyDB/8pDcB2M7+7WSDuwX4CSODUKmEEn9IABEX4p2GrUP6jfS1oej0oN3T1UycB
tI1mQEYsHf0lYB34R/SH+hfqCtQJWEpNpdc/oQHQaNU/A9H/8aGp2Kf+wSU7sLO/HstbKFofiQ9Z98sO
P2EEH9QAIOjf315B4p5Xo+icRqQVEa1O/zqk5qXveQ95u1tm0S9wsqQOQa1Cm/x1tJ/z53Ee53Ee1eht
ANDEKHv1AFL8NVL/QDApVkSYXg+IR9kDQp83/ZKepD9TnBiKYWrpgevpHaSg6W+X5ei+hH4NSwQQRrCl
j4Es/QoQQl9aPwgPAXuKV5JdkMXuIb7VBsTZAKHLfrSqB9/SA9PrQa6Pyo+zAUKX/eT6lh6YXu9Euv/j
41loGktIfz4sf9909wD6Xm9RnP0NANM45C9bKh+P7IgELUW1RqV/GdyWfUjjwY9SabX/buAZiNfAbkRO
O6IBKD3ATt9HDEYcp8dWhyAko4lR7kADAKpcRHZzqQ/bgQZA3w+OXKvGEoMwtmoAMKK4JL5EP1OW2KoZ
yOofWCqSd9cAsJVhD50RDcD25vMMADaeUxoA4CWNst+sZo93S3UCSPxAup8lAjAItvTA9DqRpuk7afT/
SQ0AEIzURe7r/TM3AEyLkj7h7wAg9D+eF2xXL7+jAVjfv7HVdGQPUOn1T3gx6zsA7Cr/KwHFLwMPA/VP
jGVVuGSH28UCTT9flCcOic+rpROpf8IIJsWKCHs5AVL+lcxG1gN2iP7Hhy3I7gyzUtDq9K8DQR8NgIQ+
I6Q/yMNSNADQJn8d7ef8eZzHeZxHNYYaAH0NABWLDaFus4cAwrBJsSLC9HqGFMbd9Zz3+voSIJwsKcYS
M66nEzq0X3a4+YDUPgum5ROmuSNHHPsPqPNr98hg6GdAs4cAS3EqyS60w2pg+vYfQwHlVqoKwvR6cGh9
Sw+yWO8ETf/nHY3Sqn+BR1pfDQDqv68BkCBALIZkRwLKqQ9aDKl/iCXAljP3ALEU1fRRaoObi0/oy1W5
DAkhItHfRuy+DCDVTkzEM20jmqED+QwiNdQDyIk+lr5XANtoAMaof6glOyDxKSWNrjtejF3lcILUP/GR
a9WQ7FLtbNGsiHtsKuQGQD0Aq9RnW6t/jJLVnBmIajLicQvWyy8/8I/K5ykjku3NzU3YWf1bSsb0eoZX
tVT+03a1mP/ACJjixBhW/2B6nWDT9J3wOJSHovKX/2hfC5peN4gP3V+jTsBSDNPrApW/eJ59dwOgMwDb
i8Xvy9LDMGgAZODBzyoxllXhkl2UO75YqAdgGy/4IJZkWHpgLycgOMt6QPS/vX9pM5ji1GoEk2iloNXp
aSDl44J+HfvnAbnfPvBmEuqfKU5sAnJ8WyKN9nP+PM7jPM6jGt2qHXi3krj/fXvLew2GRK0oU96mmz8I
QBjBlh6YXjfKrXyV/hmWCLAUw/X0V9CvebdrCLCUg1ivizjO0j/bLFl8B5VkF+Qu5+XUR9nPRqDn3S5T
RmMozNID0+tBJJaCI+pbehBKvRME/UADILlfbqu5BIiRcwVST5ovJDtkoQ/RAICWQv2DGoAgq3/Q3+u1
EcJU6l+/6hPqP1LUAOhXg6IHwNaqRmkAvv7sDwNxz1TKOFQ+HoYO0kMshYwm0dQ/8Sj1kOyfqr2JYRvX
+hdj1wBkZ0Qqsa4mpa6BZi1H+neX+Gv/xzQAxCuxqN6vQw9apjwI6a/8IvSl++Hx8VEGnmgAiCSeLE0N
0+tGeWEn3V9DgKUYpteJN01fw4OgYX4o+/O1oOn1GlI6e4Ax6h9Mr4u+BuBy8xgNAOp/kgaAt5nSADQX
/2jElNWjGwAoj0xzaD+O9AdMcepEAbYlZuzlBE18UfZ3txsZsvV/StiSDBKtFLQ6/esgUl/tRdOrAcAj
9S+Y4sQgQJF42uSvo/2cP4/zOI/zqMZQA3DffLu3KMKPD50KCMqU0XQChBFs6YHpdUMSn6FvArANQ36L
r3E9/RUqDPQALBFgKeNB/fMYvL6WQzur5o+CBfriL3qFGMtyKskeUIGxd/8ZlpgxvZ5R7pj6lpgxvZ5B
3z9t+YAvcj8UP2iKn1WKrzbtPbV0IcEHRUSOaAAgq38YaACkGlHwGq1mbwZLjGgA8KgBwMYwT0Qy8MQo
S80v9rBlqeid5RJZDJ09ANNoALBN/SP9s/oHKoRYl4GUl6ZX1vb+FluPA3KfsqH+8bOqMGwlRp3PgrvB
bZWs3aU+qHwlSusjZ2PPsbP6J5J4puRSAbut2IwshoJW0zfX/ywfy1MG/G9C97PVFL+uAsrdQo3pdYNX
Xbm4fzNH69/dLAKmuu6fAEsxTK8Tb5q+phH/ZZgfSLeCptcN4h8eHuLbwGzDKN8QeGgOhFdZGdPrQg0A
W/UA0QDkMwCnfwcA0Pf8l8wnARg6/I9/hPoHl+wB953B+xivOgy0fsAUJ0tNyDENgK720XU+msZJgHz4
v1z200Rik2iloNXp1XhufvCHoZMAnbBEgCLbtGq0n/PncR7ncR7V6BbuvK0g66Xs9wrEiLQiwvR6BvUv
xX/zVI4xM/BESzC7/mHxnbierqAU+/neXJaj61tkaOcteDzlEv/doAdg2ux1O5jiLP69PUAl2TOqNrD/
DEsxTK8bqjBc31IM0+uBhH4c8mfaaRPDTczmC0sPOoU7MI0lsJMAYQ8f/meaP4wl6yXcNVCrbOXsawDk
VKRGOKmpBgC5L8UfDQBIFssTDUAcp8eOBqD0DSlRkE5NNHocvEfBS3ODYmgYqIbBQ6GTAGoA8OCPdiKy
1ANEQXqAGNwcibElK/cAKijCwyoxGJbbVry+fnno+BIwAb+fy8/+qAeQ0A/dX56yx0c1BlL/CibL6gjT
6zW8/BD6N813ghH9+nIw0zHqH0yvk2KaPtMK/2bYkij/3b4WNL1uED+fLy4uL5H7Bk6WSkCVlTG9HqgH
QOJDNABxBmDk4X+o9PoXdBLg8fHLf1LAg//EBgC4+7e0ptUnl2CJAEsx7OUEoemf52vIPQAvb5Dcl/pX
jOJLYlWt1eldgzeQt5fyySitb9KfLUsEMNqErtF+zp/HeZzHeVSjtwHQ9T+yGbVAlJ+A4auATK8HCH0d
6b++vaQBABR/IOeYHsD1dAV6jE9b7S2iNnQtTpYseCSk8yDo5z6RI2oA9Ps/YagBIOCUBkBwc/o+rvZf
Nk4L68T0eid99S2sE9PrgRoAtoj78nDtFH8W/RFjuZnQBKbdN5ut5GAEgD6AoxnISwomKxfBkz+MQ7sz
EJQaOB+QUs3ARpeg+9lGMKvYbXQ6A4CTmsgAHtAic5pL/FHDGXlYYqseIBoATWO1Lzf0OnBDUuQgQa8G
gGp6QOLwv26FVYVFChWimhoA/eHe+PO9bBGvskkpv/+zOwkQe65prFoW20x+/IN1c00/4n5782N2/4Lc
15Oo55T/cTiBVR3+P/oMAOinfnhBMhD90v0M+S24xvQ6iabpg0b2t8OWAtKtoOn1DMFS+eoB2OoMgKZw
9BkAgdbn+ULlo/XrBgA/q5ZSU+l1B5UPvBSbZ7Z0AthyWmQPLtkNHgHGr8fb8o7dHP6XIb8F19jLSZCo
BkDqPxS/hH7YbNUDYJeUqg60Or0avHsg7n993KsH0LVA6H5Jf6Y4I4DRplWj/Zw/j/M4j/OoRm8DEFvg
7RmVDxKIsnF2Bhum1wPidfgfA7mP1lcbAExzV2CJhuvpr1D8tvnJf9Ta08u7fvxHfx4YJ0sEWMoYyNLl
/oh7NQClE5hdMi2edPi/nCAY7gEqyW6Ux6f5zZ+3h6tAvwtUdr6KN0yv11BEv/nz8nAV6HeBWLLgGtPr
AbKedLa6wkfS/2m7lOLHCRFjuRlpPoFel/QXCH21ASwpTOrWDCVGvJD6Z8k+j/koRbujbMqH6u64fm4A
UP8a2HJGA8BWhiJVMNS/Rhx0b+fLpWQ3hhQ/U2Q0W03xS9Y3sWUonToqZQ0AHoIDRVIQQ48JYEv918Hs
fFSrG4AMkaQg8aMHKDfRfMM41D8QQ6TlZuKRz5ASJwGk/vmvFPvPVA3A3sP/YHrd4OV32/wtMP3sj0S/
DJwsEWAphul14k3TQ6v6d8NWM6RbQdPrmXJbVz91xT82il8NgJqB2LJkiRnT6xlJ/NXL79wDhPrHzyqG
ZRmVXu9Acp/Ba5LtIeofXLJnyn1fLN7aLqCcDdBRfwZOfRnAUgx7OQmypPXzGQDI3wyGUP9HNADEI+6l
7z9uZnpLicEUpxoAILhNq0b7OX8e53Ee51GNbtWe4c0Flf379patzgDElCULrjG9niG9FP/1HIf8Q/qr
H1CHkFNqXE8nKP77ZYnKl9xnqwYgpiwRQJgljqHZ93+h7CXxGSh+NQAYzXwRvcHpDcDljI+x9u/1YjCd
tgGgILo//gYw01MaACl7JP4/b9e5AYDZfHF998I2rw70ABJ8IhoApDwwlYhn++f1SZFZJhbj9SliQIkD
DQAga9qP2UbNo0iQ+L/nqyL2m8t+NDTFzyoxlhXV6gZAHiSyNDdbpihytmoAkNFspf7lj0i2TKkg+Q66
Uj9UOzfNiGuBCOBBIJgRj0xMVROIV2LUkfpna3pdoGJ1/Q8Sn71lG0f9ZYSfGCKJtwpBPFAGO6MD/HEG
QDsvA48aAGKItNyM6fUML7z4vX/1AIGm+vsAhFlixvQ6wabpoZH9HcPCgHQraHo9QzBDoh9Dh/wZGICT
xoAOgSVLzJhez0j3F9FfftTyCvv5fsEWuzwFuz8KZllGpde/IK3Pq5FXNSMbo9sAl+wBWp83ejUA+vl/
TTGYqgEAwiwxYy+ngEcVWR/qnwckfu0HmEYPMKD+odXpXwfvIZL+bMsfBWPc8LF1tWl+7hODKT6WIgxn
m/x1tJ/z53Ee53Ee1dij4Hnnurm/Q2U/z+dlGzRTlgiwFMP0eiflVhr1rz/6qx4AJ+pfvwVk8RnX0wkq
8CH7dFeOgWFI9Ev9Q9nzu0sZljiST63fDB3yZ5RLg5o/BEaALgc6vQGYI0ZmC7ZhTH4GgLJswzi9AUDl
S+JjAOr/z/sG4/bpTzQAGEQONwCA7BOo9ugBsFnCwP/zqTQANfhZJQZbDUBW/8BnMJ+dDH0eY0iCyMlA
XzJF5es8ADbqny22nNjEtNEpXQWtASASlayj+xLogB+hj2d7fyt/2GoAFCY/YKsOSKkDIl5olaE2gCn3
na2u/2EbHlZD+jONCiqovsL0OqBcVZathD47yVTSX20AnmgAtMRNWB2hR6kTUtbLz0uA2GfBfzGmOFkl
xrIM0+sZXng6/I/BNnoA2XL+lzcA8+a/j4y6AVBjUFar3MD0uoG+R+h//HnicWYrZOPfq/6h0uufSPpL
62v68XITdl4axCW70MF+XepzPbsoKn/3J8AwmOJkiQBFWnpgL6cAZQ9UQN9L6LOV+o+ppH/pAar0oNXp
afDWIWUvnn/+6+n1l84DNG8wxWCKk6UII4WltkQa7ef8eZzHeZxHNYbkO29eOuSPwWg7gZ3uZ8SqJWZM
r3dCBRS/egCpf7Zvd1f6lvBwD+B6esdt891l6XuJfsn9MHCyhEEYwZY+BmR9q/2bEQ0ABrofSkDzbTNu
yHI/qSR7DemS+2zDKDWryBrT651QSnKfbRhsLawT0+sCQa8L/d8eSxtwffci0S/1DzoJwCpj+GsA0nwS
64BwjzMAr/OlegC42NyC7CA7iSReiVSIBgA1g8LWJyujiPTdKHq/uRxIU1bliaWIJ0YeTTWael8KMohE
EEvHA/oYlcOWJYlmbPklrPFHTGRRQXVAR+tD62PIj0GMhi4NwoP6VwCedq3pEyKFruPlGQn5+YuipteR
rdxQCH0e2OgB5Gcb6p9VYuTkhqyUMD2U+Tkvh/8BQ6JfT2V51vJSlZgxvR6sF5ePd+2vdYXoXy9mIBsn
SxiEEWzpgel1UkzTHwTpVtD0ulF2vvkOgBoAvRFhRGPAsBTD9Lqxur76eF5oGw2APM/3ZWvxNZVe/wL6
PhR/+SMALzdswyNjHy7ZAUGvC/0xeATumy4uNwDhJEDfCujrAezlJND05XX4Xn5d9O52I6GP4g+Y4mQJ
g+CBHqDV6WnwpkEWgj7aAOR+3QBASH8ghaW2RBrt5/x5nMd5nEc1erU7byi8LaLv9Qs/v29v0f0BU5ws
ESCBa+mB6fVOLmaLuApI6l+nAvRFYaC+pQSup3eQEv3JD26gkf4ZnDnG0sdAVucZgHASoK8KDNWvJHsN
6b9/P+ih1pPCtNSsImtMr3fSV9/COjG9HpCuHoCB4ufzUtI/bC0pxnIz0nzl4/ZrD4Cah4+7K/UACH0d
7M/xeNQAEEOkUrL6LzG7BiAreNkaLBHDNocxwqPV1tuMpkZbRHY+D0A8gjjUPDZODK1qSU6G/BZPBVoC
qXZsKXj8WpIf8HO7Ev1S/LHFg19GxLOE+gfaAPxgDQABkv66/if3AI8PD9jyYGf1D6VyqpMxPZS5aH7q
p+4BMNQAtD8QVCVmTK8HvOr0mz8YUvyQGwDIMZYemF4n0jT9QZBuBU2vG8Q/6Ju+XQ0AS6U3qLIyptcN
nrgi919+S/Gj/qX78eBn1eJrKr3ulOP8zZF+GYywLbIHl+zAfddbGcb17KKvAdBJgIi0IsJeTiD1DzQA
6gEYyH2dCgDZ8tMD6OdB+3qAVqd/HfqOr37fE3HPc1o3ADhZUgyDlDb562g/58/jPM7jPKqxpwHQOyNy
v5McY+mB6fUacq+WK4FQB4y3uyudAWCVYSkZ19MJ5aLNdN1/PgMQTsVY4njIjfMAdQOAsb9+JdkN0t8e
ygcYujwIpwXXmF6vKUW66stpwTWm1wNyEffS95L70QCEJwIsN6PP2vJxu5PsgIKXpkeCyEMAWv8h/Rgo
ttS/AoqUabqFrP6hkdlflD2DYAYGflaxm0/ezx4gbAar4W/yvv4pgJtngdomjCEVzkAfS7UDfsQ9S7ry
hy02Bv6IIV6JaCNskKFSQAx2aHqJeIS+BD2GwMYjAyKYXKn/iC+eJNaZMhaLBfFS9qAd43FG9zNli40H
vwKIz0UM00MGQj/3AOVWkvovXUGVYphez/DCY+hIv04CyIMRTnksMWN6nWDT9AdBuhU0vW4Qv7m6ArS+
DJsSYCmG6XWDp7sofhqApgdoaaanNwAh9GWwfXx8CbtZKYZlVbhkF9xxRtjlAP/XS4Dyatg19nICgsu7
yvs7ml52yH0d7JeNkyUMtqKzB2h1ejUQ9PEz/0+vv3gnyQ0AU10CxCCsT/0z2s/58ziP8ziPagxdvVPe
XZrxPJ+b9Aec7XK/+gfT6zWkh/pXNXS/pL9FduJ6uoI6kvuG1L8FHwoVUCT0AIIpI6Zg8R1Ukt2goL7+
q59gEkynbQDq+ic2AEC6JP6P5VpXAQlsPGPUP8THJ2ThDpvm93waUVp+YB4Q/fgVGc2AAhQcuYJVFDaf
qdo2ir39CSAZDJYYssvHbxpy5gCy5G8qFfvy8R9R/hxYM1D2KBsksqYMyWXVYZUpW02z7mdgk8uqptgE
SKyzjWC2KiLFj6BH2RPA/WUrla8l3ZyytKRqeNgSb3odiETW6wf+Q+ULPHka+2MVMqaHDCT+zc0NWp8t
g/2RIc+JDYDgFRhCHyPbbC24xvS6ck8ZVtD0eg0pCP2PxQwk+sNmyYJrTK/XSPGv79/aNiDsEdf/QKXX
v4C+D8XP/0f9DGh4wOK7cMlew+Ow2NzrK7+CKU4L68ReTkAir0OpeWwd4O9E5wciADvXEa1O7xrE32/L
zvNOUp8BwBkBbULXaD/nz+M8zuM8qjGk3QXvL7cvr8C7MjYDQx5sC64xvd6JjvoDBZk2NzJK/YPr6QpK
Ied07B8j2yxZ8BGg8pvj/l/agFASFtxBJdkNirw31+QY7XH6Kt4wvV4zXN+Ca0yvG1TYNH8PGEM9AFts
PPqisMXX5IP6ENo9IEBX9bCag2XjZxXbskBhfKBKakuvo1bZFvE+n19ui3jFUACDaR6tt8llSnyT96VO
Vv+obaEGQGCXWs1giWqxbb3pkL/iVUQBeNii2iE7NZXKH24A8KiI0pmCVsH0OhCpof0ByX0VyVN5LN0w
PWSQzjOF1mfLU8lUJ3DkYWrxNabXa3gR8l9V1/zov23YLFlwjen1yTG9XsNOZsXPiB4A24JrTK/XXMxX
yH1tP/48hc3WIjup9Ho3Ev3RANjqIC7ZjVD8Ev0M2fJbcI29nARFZOh4v84G3N1u9JYCeHRaQEuAM7Iy
rU7vGsSj759ef7HlzQTRryEjlghrE7pG+zl/HudxHudRjf0KHniLQQ7qUh8GhtShhXVier0TSukMANjS
XlxPd1HqN9K/7H2yLew4JPqjB5BTNxQxQ1SSvYZSnY+/hXVier0TSnXWt7BOTK/XSOjn8aM5IYBhkZ3w
wYl8z8oeidCJxKIipfjl6SSqNQK+HRKUfLhKxyPoL1dFnbfLu8FSa+0GMUTmBoA6SmSr8fJc9GsR6Mt7
DOljkOwW+EnBUGJeinj8VMDDv9R8bi77ub1ZodpxouwfLsqP8eNkGzo+eoCs/iEiycJPBWKohlMBptcz
xChXYMtpnmFCCdWQHs8X/7l0vL9smy8DCGJySo3p9U54KUr0Ny/PT9vCOjG9Pjmm12vYz4vmZ38w+jwD
mF6vQeiv79/ii7884JebRzzTNgCA7ucJPVD9g0t24+bnVah/eTDkYSnC+rCXUwZZr2P8Uv9sdfV/TLWk
YOxIzLQ6vWfwZoLKD6FfhH/T5kn9AwFtaM9oP+fP4zzO4zyqMbYB0Hd/MbJtYZ2YXu+DavriL4YtDeN6
ugtq3iKrZuWQGAODKYaFHQ26X6Lh8urKlvZTSfYadjV+95OBwRTDwjoxvd4JpeJ3PxkYTDEsrBPT62PQ
rZizj1Dq0QOE+KtBnahbgCwfa6Jm0e/NCCnJR2wj45sGoDoJgK2Adp4O/1sDAPiR1Mh0oWndAFCErWCJ
qSKFViOepdwAsNXP9Qj86Hg1A8h37qN0POAX4dEqkcRL/edSVMZper2m7E8zBjwD6IHqhArlcp9mlAag
eYLK9vGx9d7cyDmA6fVOeDXq2L9emWFbWCem1yfH9HpN2eGvf/ALg6m+BxxhfZhe70TSv1wLdF1edYyR
6h8qvT4E6n/yBoAH4XU+1xd/+zwD2Mspg7iPY/8ZPKb+B2h1es+gSJH8jejXNIzsHxjt5/x5nMd5nEc1
Rol4aN552uBs78X0eh8U1Bd/MWxpGNfTPTS73Cr+bE8C1UI02NJ+KsneSbPLreLP9l5Mr/ehmrW9F9Pr
kxO6X8ai+RavrgMJdH0/AdgSKAxsPFqKSIgKqlkkfFL/oE9WdLwO6qsHYIS419BUSwojPgKiGqsdDcCu
B2CqHWBgl9WvDYCWGNih/nMDkCW70JL0fRCiX9iSbs7qQLmJSrJPSzxQnbADMYadfZhe70Ov+drei+n1
yTG93ol2eNjTh+n1TnicLzelATP/GCq9Pjku2Wv0aAx7+rCXkyGJTymT/owcNkCr0/uHqrWTNPr8NtrP
+fM4j/M4j2qM1fFHY3p9AL2jmXMvrqf/Q2jnzTmKSrJPi+n1yTG9PjlodJBeR4LcP14LiXhpeiQ+qxjq
AYRs/NEAKCUqUI1VyWuTkqHvdQmQpo2w9yE/MVL/muZSLEUD8KUHqBqAGCy1VhpE1of/wSS7llSZewfr
5tJ/sb3//FMJ4Y/KGFYNTK9PTn6svgPT65Njen1yTK9Pjun1TuLAv/nHUOn1yXHJPi32cupD7//mHEOr
079ttJ/z53Ee53EeNv7f//v/AcG12G/sjWGPAAAAAElFTkSuQmCC
</value>
</data>
</root>

396
BW_tool/Editors/MemoryLink.Designer.cs generated Normal file
View File

@ -0,0 +1,396 @@
/*
* Created by SharpDevelop.
* User: LAURA
* Date: 19/06/2016
* Time: 10:19
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace BW_tool
{
partial class MemoryLink
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button Exit_but;
private System.Windows.Forms.Button Saveexit_but;
private System.Windows.Forms.Button b1_export;
private System.Windows.Forms.Button b1m_export;
private System.Windows.Forms.Button b2_export;
private System.Windows.Forms.Button b2_import;
private System.Windows.Forms.Button b1m_import;
private System.Windows.Forms.Button b1_import;
private System.Windows.Forms.Button memory_export;
private System.Windows.Forms.Button memory_import;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TextBox name;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown sid;
private System.Windows.Forms.NumericUpDown tid;
private System.Windows.Forms.CheckBox flag8;
private System.Windows.Forms.CheckBox flag7;
private System.Windows.Forms.CheckBox flag6;
private System.Windows.Forms.CheckBox flag5;
private System.Windows.Forms.CheckBox flag4;
private System.Windows.Forms.CheckBox flag3;
private System.Windows.Forms.CheckBox flag2;
private System.Windows.Forms.CheckBox flag1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button import_bw1;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.Exit_but = new System.Windows.Forms.Button();
this.Saveexit_but = new System.Windows.Forms.Button();
this.b1_export = new System.Windows.Forms.Button();
this.b1m_export = new System.Windows.Forms.Button();
this.b2_export = new System.Windows.Forms.Button();
this.b2_import = new System.Windows.Forms.Button();
this.b1m_import = new System.Windows.Forms.Button();
this.b1_import = new System.Windows.Forms.Button();
this.memory_export = new System.Windows.Forms.Button();
this.memory_import = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.name = new System.Windows.Forms.TextBox();
this.sid = new System.Windows.Forms.NumericUpDown();
this.tid = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.flag8 = new System.Windows.Forms.CheckBox();
this.flag7 = new System.Windows.Forms.CheckBox();
this.flag6 = new System.Windows.Forms.CheckBox();
this.flag5 = new System.Windows.Forms.CheckBox();
this.flag4 = new System.Windows.Forms.CheckBox();
this.flag3 = new System.Windows.Forms.CheckBox();
this.flag2 = new System.Windows.Forms.CheckBox();
this.flag1 = new System.Windows.Forms.CheckBox();
this.label4 = new System.Windows.Forms.Label();
this.import_bw1 = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.sid)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.tid)).BeginInit();
this.SuspendLayout();
//
// Exit_but
//
this.Exit_but.Location = new System.Drawing.Point(30, 282);
this.Exit_but.Name = "Exit_but";
this.Exit_but.Size = new System.Drawing.Size(102, 23);
this.Exit_but.TabIndex = 21;
this.Exit_but.Text = "Exit";
this.Exit_but.UseVisualStyleBackColor = true;
this.Exit_but.Click += new System.EventHandler(this.Exit_butClick);
//
// Saveexit_but
//
this.Saveexit_but.Location = new System.Drawing.Point(137, 282);
this.Saveexit_but.Name = "Saveexit_but";
this.Saveexit_but.Size = new System.Drawing.Size(102, 23);
this.Saveexit_but.TabIndex = 20;
this.Saveexit_but.Text = "Save and Exit";
this.Saveexit_but.UseVisualStyleBackColor = true;
this.Saveexit_but.Click += new System.EventHandler(this.Saveexit_butClick);
//
// b1_export
//
this.b1_export.Location = new System.Drawing.Point(16, 19);
this.b1_export.Name = "b1_export";
this.b1_export.Size = new System.Drawing.Size(119, 37);
this.b1_export.TabIndex = 22;
this.b1_export.Text = "Export Block 1 (decrypted)";
this.b1_export.UseVisualStyleBackColor = true;
this.b1_export.Click += new System.EventHandler(this.B1_exportClick);
//
// b1m_export
//
this.b1m_export.Location = new System.Drawing.Point(16, 62);
this.b1m_export.Name = "b1m_export";
this.b1m_export.Size = new System.Drawing.Size(119, 37);
this.b1m_export.TabIndex = 23;
this.b1m_export.Text = "Export Block 1 Mirror (decrypted)";
this.b1m_export.UseVisualStyleBackColor = true;
this.b1m_export.Click += new System.EventHandler(this.B1m_exportClick);
//
// b2_export
//
this.b2_export.Location = new System.Drawing.Point(16, 105);
this.b2_export.Name = "b2_export";
this.b2_export.Size = new System.Drawing.Size(119, 37);
this.b2_export.TabIndex = 24;
this.b2_export.Text = "Export Block 2";
this.b2_export.UseVisualStyleBackColor = true;
this.b2_export.Click += new System.EventHandler(this.B2_exportClick);
//
// b2_import
//
this.b2_import.Location = new System.Drawing.Point(141, 105);
this.b2_import.Name = "b2_import";
this.b2_import.Size = new System.Drawing.Size(119, 37);
this.b2_import.TabIndex = 27;
this.b2_import.Text = "Import Block 2";
this.b2_import.UseVisualStyleBackColor = true;
this.b2_import.Click += new System.EventHandler(this.B2_importClick);
//
// b1m_import
//
this.b1m_import.Location = new System.Drawing.Point(141, 62);
this.b1m_import.Name = "b1m_import";
this.b1m_import.Size = new System.Drawing.Size(119, 37);
this.b1m_import.TabIndex = 26;
this.b1m_import.Text = "Import Block 1 Mirror (decrypted)";
this.b1m_import.UseVisualStyleBackColor = true;
this.b1m_import.Click += new System.EventHandler(this.B1m_importClick);
//
// b1_import
//
this.b1_import.Location = new System.Drawing.Point(141, 19);
this.b1_import.Name = "b1_import";
this.b1_import.Size = new System.Drawing.Size(119, 37);
this.b1_import.TabIndex = 25;
this.b1_import.Text = "Import Block 1 (decrypted)";
this.b1_import.UseVisualStyleBackColor = true;
this.b1_import.Click += new System.EventHandler(this.B1_importClick);
//
// memory_export
//
this.memory_export.Location = new System.Drawing.Point(12, 12);
this.memory_export.Name = "memory_export";
this.memory_export.Size = new System.Drawing.Size(119, 37);
this.memory_export.TabIndex = 29;
this.memory_export.Text = "Export Memories";
this.memory_export.UseVisualStyleBackColor = true;
this.memory_export.Click += new System.EventHandler(this.Memory_exportClick);
//
// memory_import
//
this.memory_import.Location = new System.Drawing.Point(137, 12);
this.memory_import.Name = "memory_import";
this.memory_import.Size = new System.Drawing.Size(119, 37);
this.memory_import.TabIndex = 28;
this.memory_import.Text = "Import Memories";
this.memory_import.UseVisualStyleBackColor = true;
this.memory_import.Click += new System.EventHandler(this.Memory_importClick);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.b2_import);
this.groupBox1.Controls.Add(this.b1m_import);
this.groupBox1.Controls.Add(this.b1_import);
this.groupBox1.Controls.Add(this.b2_export);
this.groupBox1.Controls.Add(this.b1m_export);
this.groupBox1.Controls.Add(this.b1_export);
this.groupBox1.Location = new System.Drawing.Point(359, 149);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(288, 156);
this.groupBox1.TabIndex = 30;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Research Purposes";
//
// name
//
this.name.Location = new System.Drawing.Point(116, 74);
this.name.MaxLength = 8;
this.name.Name = "name";
this.name.Size = new System.Drawing.Size(120, 20);
this.name.TabIndex = 36;
//
// sid
//
this.sid.Location = new System.Drawing.Point(117, 126);
this.sid.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.sid.Name = "sid";
this.sid.Size = new System.Drawing.Size(120, 20);
this.sid.TabIndex = 35;
//
// tid
//
this.tid.Location = new System.Drawing.Point(117, 100);
this.tid.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.tid.Name = "tid";
this.tid.Size = new System.Drawing.Size(120, 20);
this.tid.TabIndex = 34;
//
// label3
//
this.label3.Location = new System.Drawing.Point(34, 128);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(51, 23);
this.label3.TabIndex = 33;
this.label3.Text = "SID";
//
// label2
//
this.label2.Location = new System.Drawing.Point(34, 102);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(51, 23);
this.label2.TabIndex = 32;
this.label2.Text = "TID";
//
// label1
//
this.label1.Location = new System.Drawing.Point(34, 77);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(51, 23);
this.label1.TabIndex = 31;
this.label1.Text = "Name";
//
// flag8
//
this.flag8.Location = new System.Drawing.Point(205, 247);
this.flag8.Name = "flag8";
this.flag8.Size = new System.Drawing.Size(125, 29);
this.flag8.TabIndex = 44;
this.flag8.Text = "flag 8";
this.flag8.UseVisualStyleBackColor = true;
//
// flag7
//
this.flag7.Location = new System.Drawing.Point(205, 221);
this.flag7.Name = "flag7";
this.flag7.Size = new System.Drawing.Size(125, 29);
this.flag7.TabIndex = 43;
this.flag7.Text = "flag 7";
this.flag7.UseVisualStyleBackColor = true;
//
// flag6
//
this.flag6.Location = new System.Drawing.Point(205, 195);
this.flag6.Name = "flag6";
this.flag6.Size = new System.Drawing.Size(125, 29);
this.flag6.TabIndex = 42;
this.flag6.Text = "flag 6";
this.flag6.UseVisualStyleBackColor = true;
//
// flag5
//
this.flag5.Location = new System.Drawing.Point(205, 169);
this.flag5.Name = "flag5";
this.flag5.Size = new System.Drawing.Size(125, 29);
this.flag5.TabIndex = 41;
this.flag5.Text = "flag 5";
this.flag5.UseVisualStyleBackColor = true;
//
// flag4
//
this.flag4.Location = new System.Drawing.Point(53, 247);
this.flag4.Name = "flag4";
this.flag4.Size = new System.Drawing.Size(125, 29);
this.flag4.TabIndex = 40;
this.flag4.Text = "flag 4";
this.flag4.UseVisualStyleBackColor = true;
//
// flag3
//
this.flag3.Location = new System.Drawing.Point(53, 221);
this.flag3.Name = "flag3";
this.flag3.Size = new System.Drawing.Size(125, 29);
this.flag3.TabIndex = 39;
this.flag3.Text = "flag 3";
this.flag3.UseVisualStyleBackColor = true;
//
// flag2
//
this.flag2.Location = new System.Drawing.Point(53, 195);
this.flag2.Name = "flag2";
this.flag2.Size = new System.Drawing.Size(125, 29);
this.flag2.TabIndex = 38;
this.flag2.Text = "flag 2";
this.flag2.UseVisualStyleBackColor = true;
//
// flag1
//
this.flag1.Location = new System.Drawing.Point(53, 169);
this.flag1.Name = "flag1";
this.flag1.Size = new System.Drawing.Size(125, 29);
this.flag1.TabIndex = 37;
this.flag1.Text = "A Triple Team";
this.flag1.UseVisualStyleBackColor = true;
//
// label4
//
this.label4.Location = new System.Drawing.Point(12, 151);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(128, 19);
this.label4.TabIndex = 45;
this.label4.Text = "Unlocked Memories:";
this.label4.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// import_bw1
//
this.import_bw1.Location = new System.Drawing.Point(273, 12);
this.import_bw1.Name = "import_bw1";
this.import_bw1.Size = new System.Drawing.Size(119, 37);
this.import_bw1.TabIndex = 46;
this.import_bw1.Text = "Import data from BW1";
this.import_bw1.UseVisualStyleBackColor = true;
this.import_bw1.Click += new System.EventHandler(this.Import_bw1Click);
//
// MemoryLink
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(659, 317);
this.Controls.Add(this.import_bw1);
this.Controls.Add(this.label4);
this.Controls.Add(this.flag8);
this.Controls.Add(this.flag7);
this.Controls.Add(this.flag6);
this.Controls.Add(this.flag5);
this.Controls.Add(this.flag4);
this.Controls.Add(this.flag3);
this.Controls.Add(this.flag2);
this.Controls.Add(this.flag1);
this.Controls.Add(this.name);
this.Controls.Add(this.sid);
this.Controls.Add(this.tid);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.memory_export);
this.Controls.Add(this.memory_import);
this.Controls.Add(this.Exit_but);
this.Controls.Add(this.Saveexit_but);
this.Name = "MemoryLink";
this.Text = "Memory Link Editor";
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.sid)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.tid)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

View File

@ -0,0 +1,660 @@
/*
* Created by SharpDevelop.
* User: LAURA
* Date: 19/06/2016
* Time: 10:19
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
using System.Text;
namespace BW_tool
{
/// <summary>
/// Description of MemoryLink.
/// </summary>
public partial class MemoryLink : Form
{
MEMORIES ml;
public MemoryLink()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
ml = new MEMORIES (MainForm.save.getData(MEMORIES.Offset, MEMORIES.Size));
if (ml.block2.name == "")
{
MessageBox.Show("The savegame does not contain memory link Data.\n\nA default memory link data will be loaded, it unlocks the following:" +
"\n\t- All 8 flashbacks" +
"\n\t- NPC Battles with Cheren and Bianca" +
"\n\t- NPC will use BW1 trainer name instead of just Trainer" +
"\n\t- Certificates for completed Pokedex and trophies from Battle Subway\n\t (they are placed in the players room)" +
"\n\t- My personal hall of fame from my BW1 playthrough\n\t (no known use in-game)" +
"\n\nNote: No data related to Loblolly's Studio (would unlock Dream World furniture from BW on BW2) is present, but Dream World has closed anyways.");
ml = new MEMORIES(default_memories);
ml.block2.name = "PPorg";
ml.block2.TID = 25560;
ml.block2.SID = 13453;
}
load_data();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void load_data()
{
name.Text = ml.block2.name;
tid.Value = ml.block2.TID;
sid.Value = ml.block2.SID;
flag1.Checked = ml.block2.checkflag(0);
flag2.Checked = ml.block2.checkflag(1);
flag3.Checked = ml.block2.checkflag(2);
flag4.Checked = ml.block2.checkflag(3);
flag5.Checked = ml.block2.checkflag(4);
flag6.Checked = ml.block2.checkflag(5);
flag7.Checked = ml.block2.checkflag(6);
flag8.Checked = ml.block2.checkflag(7);
}
void set_data()
{
ml.block2.name = name.Text;
ml.block2.TID = (UInt16)tid.Value;
ml.block2.SID = (UInt16)sid.Value;
ml.block2.setflag(0, flag1.Checked);
ml.block2.setflag(1, flag2.Checked);
ml.block2.setflag(2, flag3.Checked);
ml.block2.setflag(3, flag4.Checked);
ml.block2.setflag(4, flag5.Checked);
ml.block2.setflag(5, flag6.Checked);
ml.block2.setflag(6, flag7.Checked);
ml.block2.setflag(7, flag8.Checked);
ml.set_blocks();
}
void Exit_butClick(object sender, EventArgs e)
{
this.Close();
}
void Saveexit_butClick(object sender, EventArgs e)
{
set_data();
MainForm.save.setData(ml.Data, MEMORIES.Offset);
this.Close();
}
void B1_exportClick(object sender, EventArgs e)
{
FileIO.save_file(ml.block1.Data, "Memory Link Data|*.bin|All Files (*.*)|*.*");
}
void B1m_exportClick(object sender, EventArgs e)
{
FileIO.save_file(ml.block1_mirror.Data, "Memory Link Data|*.bin|All Files (*.*)|*.*");
}
void B2_exportClick(object sender, EventArgs e)
{
FileIO.save_file(ml.block2.Data, "Memory Link Data|*.bin|All Files (*.*)|*.*");
}
void B1_importClick(object sender, EventArgs e)
{
byte[] new_block1 = new byte[MEMORIES.ML_BLOCK1.Size];
string path = null;
int filesize = FileIO.load_file(ref new_block1, ref path, "Memory Link Data|*.bin|All Files (*.*)|*.*");
if( filesize == MEMORIES.ML_BLOCK1.Size )
{
new_block1.CopyTo(ml.block1.Data, 0);
//Reload
load_data();
}else
{
MessageBox.Show("Invalid file");
}
}
void B1m_importClick(object sender, EventArgs e)
{
byte[] new_block1m = new byte[MEMORIES.ML_BLOCK1.Size];
string path = null;
int filesize = FileIO.load_file(ref new_block1m, ref path, "Memory Link Data|*.bin|All Files (*.*)|*.*");
if( filesize == MEMORIES.ML_BLOCK1.Size )
{
new_block1m.CopyTo(ml.block1_mirror.Data, 0);
//Reload
load_data();
}else
{
MessageBox.Show("Invalid file");
}
}
void B2_importClick(object sender, EventArgs e)
{
byte[] new_block2 = new byte[MEMORIES.ML_BLOCK2.Size];
string path = null;
int filesize = FileIO.load_file(ref new_block2, ref path, "Memory Link Data|*.bin|All Files (*.*)|*.*");
if( filesize == MEMORIES.ML_BLOCK2.Size )
{
new_block2.CopyTo(ml.block2.Data, 0);
//Reload
load_data();
}else
{
MessageBox.Show("Invalid file");
}
}
void Memory_importClick(object sender, EventArgs e)
{
byte[] new_memory = new byte[MEMORIES.Size];
string path = null;
int filesize = FileIO.load_file(ref new_memory, ref path, "Memory Link Data|*.mld|All Files (*.*)|*.*");
if( filesize == MEMORIES.Size )
{
ml = new MEMORIES(new_memory);
//Reload all data
load_data();
}else
{
MessageBox.Show("Invalid file");
}
}
void Memory_exportClick(object sender, EventArgs e)
{
FileIO.save_file(ml.Data, "Memory Link Data|*.mld|All Files (*.*)|*.*");
}
void Import_bw1Click(object sender, EventArgs e)
{
byte[] bw1 = new byte[SAV5.SIZERAW+122];
string path = null;
int filesize = FileIO.load_file(ref bw1, ref path, "NDS save data|*.sav;*.dsv|All Files (*.*)|*.*");
if( filesize == SAV5.SIZERAW || filesize == SAV5.SIZERAW+122 )
{
//Convert DSV to SAV
if (filesize == SAV5.SIZERAW+122)
Array.Resize(ref bw1, SAV5.SIZERAW);
SAV5 bw1save = new SAV5(bw1);
if (bw1save.B2W2 == false)
{
ml.block2.name_fromarray(bw1.Skip(0x19404).Take(0xF).ToArray());
ml.block2.TID = BitConverter.ToUInt16(bw1, 0x19414);
ml.block2.SID = BitConverter.ToUInt16(bw1, 0x19416);
ml.block2.set_hof(bw1.Skip(0x23B00).Take(0x168).ToArray());
//Reload all data
load_data();
MessageBox.Show("Imported: Trainer Name, TID, SID, Hall of Fame");
}
else{
MessageBox.Show("Not a valid savegame!");
}
}
}
public class MEMORIES
{
public static int Size = 0xA20;
public static int Offset = 0x7E000;
public byte[] Data;
public MEMORIES(byte[] data = null)
{
Data = data ?? new byte[Size];
load_blocks();
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public ML_BLOCK1 block1;
public ML_BLOCK1 block1_mirror;
public ML_BLOCK2 block2;
private void load_blocks()
{
byte[] decrypt1 = new byte[ML_BLOCK1.Size];
byte[] decrypt2 = new byte[ML_BLOCK2.Size];
decrypt1 = SAV5.cryptoArray(getData(0, ML_BLOCK1.Size), 0xC, 0x364, 0x374-4);
decrypt2 = SAV5.cryptoArray(getData(0x400, ML_BLOCK1.Size), 0xC, 0x364, 0x374-4);
block1 = new ML_BLOCK1(decrypt1);
block1_mirror = new ML_BLOCK1(decrypt2);
block2 = new ML_BLOCK2(getData(0x800, ML_BLOCK2.Size));//Not encrypted, but has CRC
}
public void set_blocks()
{
//Recalculate CRCs
ushort crc = SAV5.ccitt16(block1.Data.Skip(0xC).Take(0x368).ToArray());
block1.crc = crc;
ushort crc_mirror = SAV5.ccitt16(block1_mirror.Data.Skip(0xC).Take(0x368).ToArray());
block1_mirror.crc = crc_mirror;
ushort crc2 = SAV5.ccitt16(block2.Data.Skip(0xC).Take(0x214).ToArray());
block2.crc = crc2;
//Recrypt blocks
byte[] encrypt1 = new byte[ML_BLOCK1.Size];
//byte[] encrypt2 = new byte[ML_BLOCK2.Size];
encrypt1 = SAV5.cryptoArray(block1.Data, 0xC, 0x364, 0x374-4);
//encrypt2 = SAV5.cryptoArray(block2.Data, ML_BLOCK1.Size), 0, 0x374-4, 0x374-4);
//Set new data
setData(encrypt1, 0);
setData(encrypt1, 0x400); //Block 1 mirror, we'll edit just the not mirrored one
//setData(encrypt2, 0x400);
setData(block2.Data, 0x800);
}
public class ML_BLOCK1
{
public static int Size = 0x374;
public byte[] Data;
public ML_BLOCK1(byte[] data = null)
{
Data = data ?? new byte[Size];
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public ushort crc
{
get
{
return BitConverter.ToUInt16(Data, 0x8);
}
set
{
setData(BitConverter.GetBytes((UInt16)value), 0x8);
}
}
public UInt32 crypt_seed
{
get
{
return BitConverter.ToUInt32(Data, 0x370);
}
set
{
setData(BitConverter.GetBytes((UInt32)value), 0x370);
}
}
}
public class ML_BLOCK2
{
public static int Size = 0x21F;
public byte[] Data;
public ML_BLOCK2(byte[] data = null)
{
Data = data ?? new byte[Size];
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public ushort crc
{
get
{
return BitConverter.ToUInt16(Data, 0x8);
}
set
{
setData(BitConverter.GetBytes((UInt16)value), 0x8);
}
}
//Helper functions from pkhex
internal static string TrimFromFFFF(string input)
{
int index = input.IndexOf((char)0xFFFF);
return index < 0 ? input : input.Substring(0, index);
}
public void name_fromarray(byte[] input)
{
name = TrimFromFFFF(Encoding.Unicode.GetString(input, 0x0, 0xE))
.Replace("\uE08F", "\u2640") // nidoran
.Replace("\uE08E", "\u2642") // nidoran
.Replace("\u2019", "\u0027"); // farfetch'd
}
public string name
{
get
{
return TrimFromFFFF(Encoding.Unicode.GetString(Data, 0x48, 0xE))
.Replace("\uE08F", "\u2640") // nidoran
.Replace("\uE08E", "\u2642") // nidoran
.Replace("\u2019", "\u0027"); // farfetch'd
}
set
{
if (value.Length > 0xE/2)
value = value.Substring(0, 0xE/2); // Hard cap
string TempNick = value // Replace Special Characters and add Terminator
.Replace("\u2640", "\uE08F") // nidoran
.Replace("\u2642", "\uE08E") // nidoran
.Replace("\u0027", "\u2019") // farfetch'd
.PadRight(value.Length + 1, (char)0xFFFF); // Null Terminator
Encoding.Unicode.GetBytes(TempNick).CopyTo(Data, 0x48);
Encoding.Unicode.GetBytes(TempNick).CopyTo(Data, 0x78);
}
}
public UInt16 TID
{
get
{
return BitConverter.ToUInt16(getData(0x44, 2), 0);
}
set
{
setData(BitConverter.GetBytes((UInt16)value), 0x44);
setData(BitConverter.GetBytes((UInt16)value), 0x74);
}
}
public UInt16 SID
{
get
{
return BitConverter.ToUInt16(getData(0x46, 2), 0);
}
set
{
setData(BitConverter.GetBytes((UInt16)value), 0x46);
setData(BitConverter.GetBytes((UInt16)value), 0x76);
}
}
public bool checkflag(int index)
{
if (index > 7)
index = 7;
if ((Data[0x8D] & (0x1<<index)) == 0)
return false;
else
return true;
}
public void setflag(int index, bool status)
{
if (index > 7)
index = 7;
if (status == true)
Data[0x8D] |= (byte) (0x1<<index);
else
Data[0x8D] &= (byte) (~(0x1<<index));
}
public void set_hof(byte[] input)
{
setData(input.Skip(0x23B00).Take(0x168).ToArray(), 0xB8);
}
}
}
private byte[] default_memories = new byte[] {
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x15, 0x00, 0x00,
0xCE, 0xA7, 0x34, 0x20, 0xEF, 0x11, 0x56, 0x1E, 0xF0, 0xE4, 0xE2, 0xCE,
0x23, 0xE9, 0xE1, 0x78, 0xC1, 0x0F, 0xA2, 0x86, 0x9C, 0x6D, 0x2B, 0xE6,
0x44, 0xAA, 0x13, 0x32, 0xDA, 0xC1, 0x6D, 0x37, 0x24, 0x95, 0xAE, 0xE1,
0xA4, 0xC2, 0xB3, 0xC3, 0xC0, 0x74, 0x4E, 0xED, 0x3B, 0x84, 0x06, 0x8F,
0x8A, 0x53, 0xF1, 0xA9, 0xD1, 0x6E, 0xCD, 0xBF, 0x91, 0x15, 0xBF, 0xB7,
0x3C, 0xAE, 0x6F, 0x06, 0x5B, 0x91, 0x4C, 0x2C, 0xE6, 0xE8, 0x3D, 0xDB,
0xF7, 0x61, 0x19, 0x1D, 0x08, 0x72, 0x8F, 0xB6, 0x53, 0xC6, 0x60, 0x4E,
0x17, 0x6B, 0x2C, 0xA7, 0xCA, 0x21, 0x11, 0x0A, 0x7D, 0x88, 0xEE, 0xEA,
0x01, 0xF2, 0x17, 0x63, 0x8C, 0x6D, 0xA5, 0x6D, 0xF2, 0x4D, 0xDE, 0x68,
0xAF, 0xD3, 0x3C, 0x52, 0x49, 0x42, 0x19, 0x0F, 0xE1, 0xF0, 0x1A, 0xEA,
0xEE, 0x9E, 0xC0, 0xCD, 0x63, 0xD1, 0xCA, 0xBE, 0xE2, 0x09, 0x57, 0x3D,
0xA9, 0x98, 0xDE, 0x91, 0x4E, 0x6B, 0x76, 0x33, 0x94, 0xDD, 0x0F, 0x77,
0xD9, 0x06, 0x84, 0x23, 0xE6, 0x95, 0xA9, 0x6C, 0x39, 0xD6, 0xC5, 0xC7,
0xF2, 0x44, 0x25, 0x16, 0x0C, 0xF9, 0x97, 0x56, 0x93, 0x61, 0x17, 0x7D,
0xE8, 0x4D, 0xF8, 0xC7, 0x5E, 0x27, 0x4A, 0xFC, 0xB0, 0x88, 0x4B, 0xEF,
0x1A, 0x47, 0x28, 0xB9, 0x28, 0x5A, 0x5B, 0x6D, 0x70, 0x2A, 0x5F, 0x4F,
0xCB, 0x7C, 0x9F, 0xBE, 0xDE, 0xBE, 0xC1, 0x92, 0xDC, 0xBA, 0xBF, 0xE9,
0xF1, 0xFB, 0x6C, 0x8B, 0xBB, 0x41, 0x56, 0x92, 0xB2, 0x98, 0x2A, 0x10,
0x79, 0xD6, 0xF9, 0x73, 0x61, 0xA4, 0x1A, 0xA3, 0xAE, 0xBF, 0x78, 0x89,
0x60, 0xF6, 0x8F, 0x74, 0x89, 0x78, 0x63, 0x64, 0x71, 0xA9, 0x37, 0xB0,
0x27, 0x81, 0xCF, 0x78, 0x24, 0x16, 0x7F, 0x78, 0x28, 0xE0, 0x59, 0x61,
0x8A, 0x00, 0x36, 0x34, 0x7F, 0x29, 0x6B, 0x5F, 0x2E, 0xED, 0x6F, 0x12,
0x8A, 0x1E, 0xBD, 0x9B, 0x45, 0xD1, 0xAC, 0xE8, 0x62, 0x3B, 0x1F, 0xEB,
0x23, 0x92, 0x38, 0xCF, 0x73, 0xC5, 0x74, 0x1B, 0xF1, 0x07, 0xD4, 0x1F,
0x4E, 0x2F, 0x01, 0x0D, 0x9D, 0x77, 0x95, 0xBA, 0xBD, 0xE5, 0xE7, 0x1B,
0x11, 0xB8, 0x0C, 0xB5, 0x17, 0xDA, 0xED, 0x9D, 0xA6, 0x76, 0xA6, 0xD7,
0xD5, 0x5D, 0x83, 0x78, 0xDA, 0x4E, 0x56, 0x8D, 0x65, 0x23, 0x03, 0x13,
0x41, 0xA9, 0x70, 0x29, 0x3E, 0x78, 0x39, 0x29, 0xB9, 0x95, 0xD7, 0xA7,
0x35, 0x0C, 0x25, 0x42, 0xE1, 0x14, 0x5B, 0x4B, 0x0D, 0xDA, 0xFE, 0xCE,
0xCB, 0x84, 0x5C, 0xBE, 0x54, 0x05, 0x7A, 0x36, 0xF0, 0x24, 0xB2, 0x99,
0x6C, 0xC1, 0x4C, 0x50, 0x63, 0xE5, 0xD0, 0x75, 0xE7, 0x95, 0xEE, 0x14,
0x49, 0xF5, 0x26, 0xEA, 0x18, 0x94, 0x9F, 0x85, 0x89, 0xC4, 0xC7, 0x1E,
0xE6, 0x51, 0xAF, 0x10, 0xBF, 0x6C, 0x4B, 0xD4, 0xE2, 0xBD, 0xFA, 0xF5,
0x75, 0xB5, 0xF7, 0x05, 0x9C, 0x20, 0xB1, 0x6F, 0x94, 0x27, 0x1A, 0x8A,
0x32, 0xDF, 0x5F, 0xA3, 0x17, 0xE4, 0xB9, 0x54, 0x28, 0xD3, 0x2B, 0x9F,
0x02, 0x32, 0x6E, 0x40, 0x7F, 0x4B, 0x5A, 0xE7, 0x92, 0xF7, 0x8C, 0x81,
0x00, 0x0B, 0x18, 0x58, 0xB5, 0x92, 0x87, 0x27, 0xD8, 0xD7, 0x77, 0x5F,
0xBC, 0xC4, 0x92, 0x50, 0x69, 0x70, 0xB7, 0xD3, 0x4F, 0xA5, 0x89, 0xF3,
0x5E, 0xF9, 0xC7, 0xE9, 0xA1, 0xD0, 0x11, 0x64, 0xFF, 0x38, 0x0B, 0x10,
0xE3, 0x44, 0xFE, 0xF4, 0xC7, 0x33, 0x60, 0xB1, 0xFD, 0xA2, 0xF4, 0x5C,
0x33, 0xFE, 0x5C, 0x24, 0x7B, 0xC6, 0x50, 0xC1, 0xDD, 0xD7, 0xD9, 0x4A,
0xC5, 0xE8, 0x47, 0x8B, 0xC8, 0xE3, 0xB4, 0xA5, 0x92, 0xC3, 0x50, 0x6B,
0xFD, 0x11, 0xD2, 0xE0, 0x9E, 0x66, 0xBF, 0x2E, 0x56, 0x0E, 0x63, 0x1B,
0x9A, 0xB4, 0xB2, 0x4B, 0x98, 0x48, 0x6A, 0x70, 0x64, 0xBB, 0x30, 0x47,
0xC7, 0x69, 0x7C, 0x83, 0x78, 0x5B, 0x8E, 0x59, 0xB6, 0xCA, 0xC7, 0x15,
0xA5, 0xF2, 0x14, 0xF5, 0xDD, 0xBF, 0x55, 0xE7, 0x03, 0xFE, 0xE0, 0x12,
0x6E, 0xCE, 0x92, 0x68, 0x23, 0xE7, 0x0A, 0x6A, 0xA9, 0x1E, 0x0B, 0x00,
0x88, 0x70, 0x09, 0xF5, 0x6F, 0xBF, 0x77, 0xE8, 0x56, 0x75, 0x55, 0x69,
0x15, 0x8F, 0xFB, 0xEA, 0x48, 0xF0, 0x4D, 0x85, 0x7A, 0xDD, 0xAA, 0x79,
0xE7, 0x7D, 0x59, 0x58, 0x5C, 0x1B, 0x4A, 0xEE, 0xF9, 0xCD, 0x53, 0xE9,
0xE6, 0x2A, 0x5D, 0xF1, 0x36, 0xB8, 0x22, 0xDF, 0x8C, 0x25, 0x5E, 0x4D,
0x41, 0xE8, 0xA7, 0x0F, 0x1B, 0xAB, 0x4B, 0xB2, 0xD5, 0x54, 0xDD, 0x18,
0x0B, 0x0E, 0x63, 0x2D, 0x3E, 0xF6, 0x3B, 0x68, 0x17, 0xF1, 0x30, 0x59,
0x0B, 0x70, 0x5D, 0x54, 0x0F, 0x2A, 0xC7, 0x89, 0x01, 0xA2, 0xE2, 0x2C,
0xEC, 0xFD, 0x4E, 0x79, 0x52, 0x54, 0x97, 0x64, 0x24, 0x0A, 0xBF, 0x38,
0x0F, 0x73, 0xD4, 0x39, 0x3F, 0x6F, 0xEA, 0x68, 0xDA, 0x8C, 0x26, 0x81,
0xAA, 0x10, 0xC0, 0xFF, 0xDE, 0x88, 0x2D, 0x76, 0xCB, 0xFD, 0xCD, 0x1D,
0x03, 0xC8, 0xC7, 0xB6, 0x54, 0x58, 0x06, 0xB8, 0x5E, 0x25, 0x6E, 0xCC,
0xDC, 0x4B, 0xC4, 0x19, 0xE6, 0x89, 0xDE, 0xE7, 0xAB, 0xEA, 0x10, 0x83,
0x6D, 0x07, 0xFA, 0xB2, 0xD4, 0x03, 0x20, 0x67, 0xCD, 0xAE, 0xF0, 0x5C,
0x89, 0x46, 0x21, 0x0F, 0x61, 0x95, 0x9A, 0x44, 0xAA, 0x46, 0x37, 0xA5,
0xB7, 0xBD, 0x27, 0xE5, 0x9E, 0x36, 0xC1, 0xEB, 0x83, 0xD7, 0xFA, 0xE8,
0x66, 0x6A, 0xE1, 0x24, 0xD5, 0x0A, 0xD1, 0x86, 0xEE, 0xF7, 0x3A, 0xEE,
0x8E, 0x42, 0x29, 0x8D, 0xA6, 0x08, 0xFB, 0x14, 0x0F, 0xAA, 0xE1, 0xBF,
0x51, 0xB0, 0x1C, 0xA6, 0x34, 0x52, 0x1D, 0x6C, 0x1C, 0x5D, 0xE7, 0xBE,
0x80, 0x31, 0x6C, 0x56, 0xF2, 0x34, 0xBA, 0xE1, 0x99, 0xF3, 0x2C, 0x67,
0x0E, 0xF4, 0x0A, 0xD3, 0xF6, 0x4B, 0x2D, 0xB9, 0xD1, 0x20, 0xAA, 0x42,
0xD6, 0xBF, 0x95, 0xEE, 0xD5, 0xA8, 0x4D, 0xC5, 0x73, 0x1B, 0x02, 0xF0,
0x41, 0x3B, 0x49, 0xE2, 0x77, 0x06, 0xF5, 0x79, 0x5E, 0xF4, 0x9D, 0x39,
0xAE, 0x6B, 0x6D, 0x1C, 0x6A, 0x2E, 0x35, 0x06, 0xFD, 0xA7, 0xD2, 0x90,
0xAC, 0x8B, 0x6B, 0x80, 0x93, 0xB4, 0x14, 0x8A, 0xC8, 0x8D, 0xD0, 0xE4,
0x5D, 0xC0, 0x14, 0x63, 0x53, 0x4E, 0x2D, 0x23, 0xBE, 0xEC, 0x42, 0x4F,
0xA9, 0x2C, 0xC4, 0x79, 0x00, 0x00, 0x46, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x31, 0x15, 0x00, 0x00, 0xCE, 0xA7, 0x34, 0x20, 0xEF, 0x11, 0x56, 0x1E,
0xF0, 0xE4, 0xE2, 0xCE, 0x23, 0xE9, 0xE1, 0x78, 0xC1, 0x0F, 0xA2, 0x86,
0x9C, 0x6D, 0x2B, 0xE6, 0x44, 0xAA, 0x13, 0x32, 0xDA, 0xC1, 0x6D, 0x37,
0x24, 0x95, 0xAE, 0xE1, 0xA4, 0xC2, 0xB3, 0xC3, 0xC0, 0x74, 0x4E, 0xED,
0x3B, 0x84, 0x06, 0x8F, 0x8A, 0x53, 0xF1, 0xA9, 0xD1, 0x6E, 0xCD, 0xBF,
0x91, 0x15, 0xBF, 0xB7, 0x3C, 0xAE, 0x6F, 0x06, 0x5B, 0x91, 0x4C, 0x2C,
0xE6, 0xE8, 0x3D, 0xDB, 0xF7, 0x61, 0x19, 0x1D, 0x08, 0x72, 0x8F, 0xB6,
0x53, 0xC6, 0x60, 0x4E, 0x17, 0x6B, 0x2C, 0xA7, 0xCA, 0x21, 0x11, 0x0A,
0x7D, 0x88, 0xEE, 0xEA, 0x01, 0xF2, 0x17, 0x63, 0x8C, 0x6D, 0xA5, 0x6D,
0xF2, 0x4D, 0xDE, 0x68, 0xAF, 0xD3, 0x3C, 0x52, 0x49, 0x42, 0x19, 0x0F,
0xE1, 0xF0, 0x1A, 0xEA, 0xEE, 0x9E, 0xC0, 0xCD, 0x63, 0xD1, 0xCA, 0xBE,
0xE2, 0x09, 0x57, 0x3D, 0xA9, 0x98, 0xDE, 0x91, 0x4E, 0x6B, 0x76, 0x33,
0x94, 0xDD, 0x0F, 0x77, 0xD9, 0x06, 0x84, 0x23, 0xE6, 0x95, 0xA9, 0x6C,
0x39, 0xD6, 0xC5, 0xC7, 0xF2, 0x44, 0x25, 0x16, 0x0C, 0xF9, 0x97, 0x56,
0x93, 0x61, 0x17, 0x7D, 0xE8, 0x4D, 0xF8, 0xC7, 0x5E, 0x27, 0x4A, 0xFC,
0xB0, 0x88, 0x4B, 0xEF, 0x1A, 0x47, 0x28, 0xB9, 0x28, 0x5A, 0x5B, 0x6D,
0x70, 0x2A, 0x5F, 0x4F, 0xCB, 0x7C, 0x9F, 0xBE, 0xDE, 0xBE, 0xC1, 0x92,
0xDC, 0xBA, 0xBF, 0xE9, 0xF1, 0xFB, 0x6C, 0x8B, 0xBB, 0x41, 0x56, 0x92,
0xB2, 0x98, 0x2A, 0x10, 0x79, 0xD6, 0xF9, 0x73, 0x61, 0xA4, 0x1A, 0xA3,
0xAE, 0xBF, 0x78, 0x89, 0x60, 0xF6, 0x8F, 0x74, 0x89, 0x78, 0x63, 0x64,
0x71, 0xA9, 0x37, 0xB0, 0x27, 0x81, 0xCF, 0x78, 0x24, 0x16, 0x7F, 0x78,
0x28, 0xE0, 0x59, 0x61, 0x8A, 0x00, 0x36, 0x34, 0x7F, 0x29, 0x6B, 0x5F,
0x2E, 0xED, 0x6F, 0x12, 0x8A, 0x1E, 0xBD, 0x9B, 0x45, 0xD1, 0xAC, 0xE8,
0x62, 0x3B, 0x1F, 0xEB, 0x23, 0x92, 0x38, 0xCF, 0x73, 0xC5, 0x74, 0x1B,
0xF1, 0x07, 0xD4, 0x1F, 0x4E, 0x2F, 0x01, 0x0D, 0x9D, 0x77, 0x95, 0xBA,
0xBD, 0xE5, 0xE7, 0x1B, 0x11, 0xB8, 0x0C, 0xB5, 0x17, 0xDA, 0xED, 0x9D,
0xA6, 0x76, 0xA6, 0xD7, 0xD5, 0x5D, 0x83, 0x78, 0xDA, 0x4E, 0x56, 0x8D,
0x65, 0x23, 0x03, 0x13, 0x41, 0xA9, 0x70, 0x29, 0x3E, 0x78, 0x39, 0x29,
0xB9, 0x95, 0xD7, 0xA7, 0x35, 0x0C, 0x25, 0x42, 0xE1, 0x14, 0x5B, 0x4B,
0x0D, 0xDA, 0xFE, 0xCE, 0xCB, 0x84, 0x5C, 0xBE, 0x54, 0x05, 0x7A, 0x36,
0xF0, 0x24, 0xB2, 0x99, 0x6C, 0xC1, 0x4C, 0x50, 0x63, 0xE5, 0xD0, 0x75,
0xE7, 0x95, 0xEE, 0x14, 0x49, 0xF5, 0x26, 0xEA, 0x18, 0x94, 0x9F, 0x85,
0x89, 0xC4, 0xC7, 0x1E, 0xE6, 0x51, 0xAF, 0x10, 0xBF, 0x6C, 0x4B, 0xD4,
0xE2, 0xBD, 0xFA, 0xF5, 0x75, 0xB5, 0xF7, 0x05, 0x9C, 0x20, 0xB1, 0x6F,
0x94, 0x27, 0x1A, 0x8A, 0x32, 0xDF, 0x5F, 0xA3, 0x17, 0xE4, 0xB9, 0x54,
0x28, 0xD3, 0x2B, 0x9F, 0x02, 0x32, 0x6E, 0x40, 0x7F, 0x4B, 0x5A, 0xE7,
0x92, 0xF7, 0x8C, 0x81, 0x00, 0x0B, 0x18, 0x58, 0xB5, 0x92, 0x87, 0x27,
0xD8, 0xD7, 0x77, 0x5F, 0xBC, 0xC4, 0x92, 0x50, 0x69, 0x70, 0xB7, 0xD3,
0x4F, 0xA5, 0x89, 0xF3, 0x5E, 0xF9, 0xC7, 0xE9, 0xA1, 0xD0, 0x11, 0x64,
0xFF, 0x38, 0x0B, 0x10, 0xE3, 0x44, 0xFE, 0xF4, 0xC7, 0x33, 0x60, 0xB1,
0xFD, 0xA2, 0xF4, 0x5C, 0x33, 0xFE, 0x5C, 0x24, 0x7B, 0xC6, 0x50, 0xC1,
0xDD, 0xD7, 0xD9, 0x4A, 0xC5, 0xE8, 0x47, 0x8B, 0xC8, 0xE3, 0xB4, 0xA5,
0x92, 0xC3, 0x50, 0x6B, 0xFD, 0x11, 0xD2, 0xE0, 0x9E, 0x66, 0xBF, 0x2E,
0x56, 0x0E, 0x63, 0x1B, 0x9A, 0xB4, 0xB2, 0x4B, 0x98, 0x48, 0x6A, 0x70,
0x64, 0xBB, 0x30, 0x47, 0xC7, 0x69, 0x7C, 0x83, 0x78, 0x5B, 0x8E, 0x59,
0xB6, 0xCA, 0xC7, 0x15, 0xA5, 0xF2, 0x14, 0xF5, 0xDD, 0xBF, 0x55, 0xE7,
0x03, 0xFE, 0xE0, 0x12, 0x6E, 0xCE, 0x92, 0x68, 0x23, 0xE7, 0x0A, 0x6A,
0xA9, 0x1E, 0x0B, 0x00, 0x88, 0x70, 0x09, 0xF5, 0x6F, 0xBF, 0x77, 0xE8,
0x56, 0x75, 0x55, 0x69, 0x15, 0x8F, 0xFB, 0xEA, 0x48, 0xF0, 0x4D, 0x85,
0x7A, 0xDD, 0xAA, 0x79, 0xE7, 0x7D, 0x59, 0x58, 0x5C, 0x1B, 0x4A, 0xEE,
0xF9, 0xCD, 0x53, 0xE9, 0xE6, 0x2A, 0x5D, 0xF1, 0x36, 0xB8, 0x22, 0xDF,
0x8C, 0x25, 0x5E, 0x4D, 0x41, 0xE8, 0xA7, 0x0F, 0x1B, 0xAB, 0x4B, 0xB2,
0xD5, 0x54, 0xDD, 0x18, 0x0B, 0x0E, 0x63, 0x2D, 0x3E, 0xF6, 0x3B, 0x68,
0x17, 0xF1, 0x30, 0x59, 0x0B, 0x70, 0x5D, 0x54, 0x0F, 0x2A, 0xC7, 0x89,
0x01, 0xA2, 0xE2, 0x2C, 0xEC, 0xFD, 0x4E, 0x79, 0x52, 0x54, 0x97, 0x64,
0x24, 0x0A, 0xBF, 0x38, 0x0F, 0x73, 0xD4, 0x39, 0x3F, 0x6F, 0xEA, 0x68,
0xDA, 0x8C, 0x26, 0x81, 0xAA, 0x10, 0xC0, 0xFF, 0xDE, 0x88, 0x2D, 0x76,
0xCB, 0xFD, 0xCD, 0x1D, 0x03, 0xC8, 0xC7, 0xB6, 0x54, 0x58, 0x06, 0xB8,
0x5E, 0x25, 0x6E, 0xCC, 0xDC, 0x4B, 0xC4, 0x19, 0xE6, 0x89, 0xDE, 0xE7,
0xAB, 0xEA, 0x10, 0x83, 0x6D, 0x07, 0xFA, 0xB2, 0xD4, 0x03, 0x20, 0x67,
0xCD, 0xAE, 0xF0, 0x5C, 0x89, 0x46, 0x21, 0x0F, 0x61, 0x95, 0x9A, 0x44,
0xAA, 0x46, 0x37, 0xA5, 0xB7, 0xBD, 0x27, 0xE5, 0x9E, 0x36, 0xC1, 0xEB,
0x83, 0xD7, 0xFA, 0xE8, 0x66, 0x6A, 0xE1, 0x24, 0xD5, 0x0A, 0xD1, 0x86,
0xEE, 0xF7, 0x3A, 0xEE, 0x8E, 0x42, 0x29, 0x8D, 0xA6, 0x08, 0xFB, 0x14,
0x0F, 0xAA, 0xE1, 0xBF, 0x51, 0xB0, 0x1C, 0xA6, 0x34, 0x52, 0x1D, 0x6C,
0x1C, 0x5D, 0xE7, 0xBE, 0x80, 0x31, 0x6C, 0x56, 0xF2, 0x34, 0xBA, 0xE1,
0x99, 0xF3, 0x2C, 0x67, 0x0E, 0xF4, 0x0A, 0xD3, 0xF6, 0x4B, 0x2D, 0xB9,
0xD1, 0x20, 0xAA, 0x42, 0xD6, 0xBF, 0x95, 0xEE, 0xD5, 0xA8, 0x4D, 0xC5,
0x73, 0x1B, 0x02, 0xF0, 0x41, 0x3B, 0x49, 0xE2, 0x77, 0x06, 0xF5, 0x79,
0x5E, 0xF4, 0x9D, 0x39, 0xAE, 0x6B, 0x6D, 0x1C, 0x6A, 0x2E, 0x35, 0x06,
0xFD, 0xA7, 0xD2, 0x90, 0xAC, 0x8B, 0x6B, 0x80, 0x93, 0xB4, 0x14, 0x8A,
0xC8, 0x8D, 0xD0, 0xE4, 0x5D, 0xC0, 0x14, 0x63, 0x53, 0x4E, 0x2D, 0x23,
0xBE, 0xEC, 0x42, 0x4F, 0xA9, 0x2C, 0xC4, 0x79, 0x00, 0x00, 0x46, 0x4E,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x49, 0x0F, 0xA1,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x9A, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC2, 0x06, 0xB7, 0xA2, 0x80, 0x2A, 0x59, 0xEB, 0x53, 0x00, 0x75, 0x00,
0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x15, 0x01, 0x00, 0x80, 0x2A, 0x59, 0xEB, 0x53, 0x00, 0x75, 0x00,
0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x15, 0x01, 0x00, 0x80, 0x2A, 0x59, 0xEB, 0x53, 0x00, 0x75, 0x00,
0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x15, 0x01, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0A, 0x1E, 0x00,
0xF7, 0x01, 0x43, 0x00, 0xDE, 0x9D, 0xB5, 0x0D, 0x80, 0x2A, 0x59, 0xEB,
0x53, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x75, 0x00, 0x72, 0x00, 0x6F, 0x00,
0x74, 0x00, 0x74, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0x5B, 0x00, 0x38, 0x00, 0x39, 0x00, 0x17, 0x01, 0x00, 0x00,
0x02, 0x02, 0x39, 0x00, 0x6E, 0x1A, 0x98, 0x00, 0x80, 0x2A, 0x59, 0xEB,
0x53, 0x00, 0x69, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x73, 0x00, 0x65, 0x00,
0x61, 0x00, 0x72, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0xF2, 0x00, 0x7E, 0x00, 0x00, 0x02, 0xE1, 0x01, 0x00, 0x00,
0x6D, 0x02, 0x35, 0x00, 0xD6, 0x54, 0x1F, 0xDA, 0x80, 0x2A, 0x59, 0xEB,
0x44, 0x00, 0x72, 0x00, 0x75, 0x00, 0x64, 0x00, 0x64, 0x00, 0x69, 0x00,
0x67, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0xA3, 0x00, 0x90, 0x01, 0x51, 0x01, 0xAF, 0x01, 0x00, 0x00,
0x63, 0x02, 0x28, 0x00, 0xDE, 0x2C, 0x7D, 0xBD, 0x80, 0x2A, 0x59, 0xEB,
0x46, 0x00, 0x72, 0x00, 0x61, 0x00, 0x78, 0x00, 0x75, 0x00, 0x72, 0x00,
0x65, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0xCE, 0x00, 0x51, 0x01, 0x5D, 0x01, 0x0D, 0x01, 0x00, 0x00,
0xF9, 0x01, 0x1C, 0x40, 0x08, 0xBD, 0x0E, 0xD7, 0x80, 0x2A, 0x59, 0xEB,
0x57, 0x00, 0x61, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x6F, 0x00,
0x67, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0xF9, 0x00, 0x94, 0x00, 0x46, 0x00, 0x0F, 0x00, 0x00, 0x00,
0x44, 0x02, 0x1C, 0x00, 0xB0, 0x9C, 0x9B, 0xDF, 0x80, 0x2A, 0x59, 0xEB,
0x44, 0x00, 0x75, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x65, 0x00,
0x74, 0x00, 0x74, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00,
0x75, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x6B, 0x00, 0x75, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0x93, 0x01, 0x39, 0x00, 0x13, 0x00, 0x88, 0x01, 0x00, 0x00
};
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -192,14 +192,16 @@ namespace BW_tool
}
void Saveexit_butClick(object sender, EventArgs e)
{
set_data();
MainForm.save.setBlock(ash.Data, trainer_block);
if (MainForm.save.B2W2 == true)
{
MainForm.save.setBlock(gary.Data, rival_block);
}
MainForm.save.setBlock(badge.Data, badges_block);
MainForm.save.setBlock(battle.Data, badges_block);
MainForm.save.setBlock(card.Data, badges_block);
MainForm.save.setBlock(battle.Data, battle_block);
MainForm.save.setBlock(card.Data, cardsig_block);
this.Close();
}
@ -258,7 +260,7 @@ namespace BW_tool
}
set
{
setData(BitConverter.GetBytes(value), 0x14);
setData(BitConverter.GetBytes((UInt16)value), 0x14);
}
}
public UInt16 SID
@ -269,7 +271,7 @@ namespace BW_tool
}
set
{
setData(BitConverter.GetBytes(value), 0x16);
setData(BitConverter.GetBytes((UInt16)value), 0x16);
}
}
public UInt16 hours
@ -430,9 +432,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x1);
Data[0x4] |= (byte)(0x1);
else
Data[0x4] =(byte)(Data[0x4]|~0x1);
Data[0x4] &= unchecked((byte)(~0x1));
}
}
public bool badge2
@ -447,9 +449,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x2);
Data[0x4] |= (byte)(0x2);
else
Data[0x4] =(byte)(Data[0x4]|~0x2);
Data[0x4] &= unchecked((byte)(~0x2));
}
}
public bool badge3
@ -464,9 +466,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x4);
Data[0x4] |= (byte)(0x4);
else
Data[0x4] =(byte)(Data[0x4]|~0x4);
Data[0x4] &= unchecked((byte)(~0x4));
}
}
public bool badge4
@ -481,9 +483,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x8);
Data[0x4] |= (byte)(0x8);
else
Data[0x4] =(byte)(Data[0x4]|~0x8);
Data[0x4] &= unchecked((byte)(~0x8));
}
}
public bool badge5
@ -498,9 +500,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x10);
Data[0x4] |= (byte)(0x10);
else
Data[0x4] =(byte)(Data[0x4]|~0x10);
Data[0x4] &= unchecked((byte)(~0x10));
}
}
public bool badge6
@ -515,9 +517,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x20);
Data[0x4] |= (byte)(0x20);
else
Data[0x4] =(byte)(Data[0x4]|~0x20);
Data[0x4] &= unchecked((byte)(~0x20));
}
}
public bool badge7
@ -532,9 +534,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x40);
Data[0x4] |= (byte)(0x40);
else
Data[0x4] =(byte)(Data[0x4]|~0x40);
Data[0x4] &= unchecked((byte)(~0x40));
}
}
public bool badge8
@ -549,9 +551,9 @@ namespace BW_tool
set
{
if (value == true)
Data[0x4] = (byte)(Data[0x4]|0x80);
Data[0x4] |= (byte)(0x80);
else
Data[0x4] =(byte)(Data[0x4]|~0x80);
Data[0x4] &= unchecked((byte)(~0x80));
}
}
}

View File

@ -29,6 +29,7 @@ namespace BW_tool
private System.Windows.Forms.Button join_but;
private System.Windows.Forms.Button trainer_but;
private System.Windows.Forms.Button about;
private System.Windows.Forms.Button memory_but;
/// <summary>
/// Disposes resources used by the form.
@ -66,6 +67,7 @@ namespace BW_tool
this.join_but = new System.Windows.Forms.Button();
this.trainer_but = new System.Windows.Forms.Button();
this.about = new System.Windows.Forms.Button();
this.memory_but = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// loadsave_but
@ -224,12 +226,24 @@ namespace BW_tool
this.about.UseVisualStyleBackColor = true;
this.about.Click += new System.EventHandler(this.AboutClick);
//
// memory_but
//
this.memory_but.Enabled = false;
this.memory_but.Location = new System.Drawing.Point(158, 165);
this.memory_but.Name = "memory_but";
this.memory_but.Size = new System.Drawing.Size(140, 23);
this.memory_but.TabIndex = 15;
this.memory_but.Text = "Memory Link";
this.memory_but.UseVisualStyleBackColor = true;
this.memory_but.Click += new System.EventHandler(this.Memory_butClick);
//
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(503, 192);
this.Controls.Add(this.memory_but);
this.Controls.Add(this.about);
this.Controls.Add(this.trainer_but);
this.Controls.Add(this.join_but);

View File

@ -81,6 +81,7 @@ namespace BW_tool
key_but.Enabled = true;
join_but.Enabled = true;
trainer_but.Enabled = true;
memory_but.Enabled = true;
}
else if (save.BW)
{
@ -97,6 +98,7 @@ namespace BW_tool
key_but.Enabled = false;
join_but.Enabled = false;
trainer_but.Enabled = true;
memory_but.Enabled = false;
}
else versiontext.Text = "Invalid file";
@ -115,6 +117,7 @@ namespace BW_tool
key_but.Enabled = false;
join_but.Enabled = false;
trainer_but.Enabled = false;
memory_but.Enabled = false;
}
}
void Save_butClick(object sender, EventArgs e)
@ -179,5 +182,10 @@ namespace BW_tool
{
MessageBox.Show("Pokémon Generation 5 save tool by suloku '16\n\nThanks to many people that I'm probably missing out now, but those who shall not be missed are BlackShark for many research and information and kaphotics for reference on pkhex source code and research at project pokemon forums.");
}
void Memory_butClick(object sender, EventArgs e)
{
Form memory = new MemoryLink();
memory.ShowDialog();
}
}
}

View File

@ -88,18 +88,53 @@ namespace BW_tool
}
}
private static byte[] dsvfoot = new byte[] {
0x7C, 0x3C, 0x2D, 0x2D, 0x53, 0x6E, 0x69, 0x70, 0x20, 0x61, 0x62, 0x6F,
0x76, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20,
0x73, 0x61, 0x76, 0x20, 0x62, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75,
0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x44, 0x65,
0x53, 0x6D, 0x75, 0x4D, 0x45, 0x20, 0x73, 0x61, 0x76, 0x65, 0x64, 0x61,
0x74, 0x61, 0x20, 0x66, 0x6F, 0x6F, 0x74, 0x65, 0x72, 0x3A, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x2D,
0x44, 0x45, 0x53, 0x4D, 0x55, 0x4D, 0x45, 0x20, 0x53, 0x41, 0x56, 0x45,
0x2D, 0x7C
};
public static void save_data(byte[] buffer)
{ //if (savegamename.Text.Length < 1) return;
if (buffer == null) return;
SaveFileDialog saveFD = new SaveFileDialog();
//saveFD.InitialDirectory = "c:\\";
saveFD.Filter = "NDS RAW save data|*.sav|All Files (*.*)|*.*";
saveFD.Filter = "NDS RAW save data|*.sav|NDS Desmune/Drastic save data|*.dsv|All Files (*.*)|*.*";
if (saveFD.ShowDialog() == DialogResult.OK)
{
System.IO.FileStream saveFile;
saveFile = new FileStream(saveFD.FileName, FileMode.Create);
saveFile = new FileStream(saveFD.FileName, FileMode.Create);
//Write file
saveFile.Write(buffer, 0, buffer.Length);
var extension = Path.GetExtension(saveFD.FileName);
switch(extension.ToLower())
{
case ".sav":
//Write file
saveFile.Write(buffer, 0, buffer.Length);
break;
case ".dsv":
//Add dsv footer
byte[] dsv_save = new byte[SAV5.SIZERAW+122];
buffer.CopyTo(dsv_save, 0);
dsvfoot.CopyTo(dsv_save, SAV5.SIZERAW);
//Write file
saveFile.Write( dsv_save, 0, dsv_save.Length);
break;
default:
//throw new ArgumentOutOfRangeException(extension);
break;
}
saveFile.Close();
MessageBox.Show("File Saved.", "Save file");
}

View File

@ -30,6 +30,12 @@ namespace BW_tool
}
public class SAV5 : PKX5
{
private int DEBUG_MSG = 0;
//
// 0: no checksum updated/not updated msg
// 1: only checksum updated msg
// 2: checksum updated and not updated msg
private static int[] BlockTableBW2 =
{0x00000, 0x00400, 0x01400, 0x02400, 0x03400, 0x04400, 0x05400, //6
0x06400, 0x07400, 0x08400, 0x09400, 0x0A400, 0x0B400, 0x0C400, //13
@ -308,7 +314,7 @@ namespace BW_tool
{
if (getBlockLength(index) != input.Length)
{
MessageBox.Show("Block has invalid size!");
MessageBox.Show("Block " + index.ToString() + " has invalid size!");
return;
}
@ -344,9 +350,9 @@ namespace BW_tool
ushort crctable = ccitt16(Data.Skip(blocks[blocksnum].Offset).Take(((blocksnum + 1) * 2)).ToArray());
Array.Copy(BitConverter.GetBytes(crctable), 0, Data, blocks[blocksnum].Checksum, 2);
Array.Copy(BitConverter.GetBytes(crctable), 0, Data, blocks[blocksnum].Checksum + backupoffset, 2);
MessageBox.Show("Block's checksum updated");
if (DEBUG_MSG > 0) MessageBox.Show("Block " + index.ToString() + " checksum updated");
} else {
MessageBox.Show("Checksum doesn't need update");
if (DEBUG_MSG > 2) MessageBox.Show("Checksum " + index.ToString() + " doesn't need update");
}
input.CopyTo(Data, blocks[index].Offset);
@ -355,7 +361,7 @@ namespace BW_tool
}
else
{
MessageBox.Show("Invalid index");
MessageBox.Show("Invalid index (" + index.ToString() + ")");
return;
}
}

BIN
all_sprites.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB